Astro でも gatsby-plugin-mdx の excerpt を再現2024/11/22AstroTypeScriptはじめに Gatsby から Astro に乗り換えたのですが、 Gatsby では簡単に利用できていた記事本文の抜粋機能が Astro ではちょっと工夫しないと利用できなかったので、 対応内容をまとめてみました。 Gatsby で利用していた gatsby-plugin…
Monorepo で Cloud Functions for Firebase へデプロイ2022/9/8FirebaseMonorepoNode.jsはじめに .NET におけるプロジェクト分割に慣れている身としては、Node.js でも積極的にモジュールを分割しつつ、Monorepo な構成で進めがちなわけですが、そんな構成でいざ世の中の便利サービスを使おうとすると詰まることも多いです。今回は、Monorepo で Clou…
expo-in-app-purchases の使い方2021/10/15ExpoReact NativeTypeScriptIAPはじめに 最近の Expo の進化は素晴らしく、EAS Build の登場(正確には prebuild コマンドですかね)により、Bare Workflow のようにネイティブコードを直接管理せずとも、ネイティブコードに…
OpenH264 に対応した FFmpeg をビルド2021/9/11FFmpegはじめに iOS アプリに動画を組み込む場合、コーデック第一の選択肢として、H.264 が挙げられ、それと同時に H.264 ライセンスと向き合うことを余儀なくされるわけですが、そもそも、アプリ組み込み以前に、H.264 動画を用意すること(H.264 エンコード…
Firebase Admin SDK における Cloud Firestore トランザクション挙動2021/8/11FirebaseJestTypeScriptはじめに 「DB と言えば MySQL」で育ってきた身としては、「Cloud Firestore サーバークライアントライブラリでのデータ競合は悲観的な同時実行制御で解決しているよ。」と言われれば、ああ、あんな感じね。と勝手に想像しがちなわけですが…
Google Apps Script で領収書管理を楽にする2021/2/16Google Apps Scriptはじめに 確定申告のため、メールに添付された領収書をちまちまと手作業で整理したんですが、なかなかに面倒だったので、Google Apps Script で自動化してみました。 自動化内容 概要 Gmail で受信したメール(検索クエリで抽出)に添付されている pdf ファイルを…
Android(Kotlin) ViewPager2 のメモリリーク回避2021/2/4AndroidKotlinメモリリークはじめに ビューバインディングを学習した際に、公式ドキュメントに下記の通り記述されているのを確かに読んだのですが、 注: フラグメントはビューよりも持続します。フラグメントの onDestroyView() メソッドでバインディング…
Android(Kotlin) RecyclerView で PopupMenu(データバインディング方式)2021/2/2AndroidKotlinはじめに 各概念毎のサンプルコードはよく見かけても、複数組み合わせた場合のサンプルコードってあまりなかったりしますよね。今回は RecyclerView と PopupMenu とデータバインディングを組み合わせたのですが、多少試行錯誤したので、まとめておきます。 前提 実装する…
Expo でダウンロード進捗処理2021/1/25ExpoReact NativeTypeScriptはじめに Kotlin で Android 開発もやっているからこそ、Expo(React Native)ってホント便利だなぁと実感するわけですが、一方で、予想だにしない変な所でハマってしまうことも確かにあるわけです。今回はファイルのダウンロード進捗処理にハマりました。 前提 や…
Cloud Firestore ドキュメント ID でコレクショングループクエリ2021/1/5FirebaseTypeScriptはじめに 「DB と言えば MySQL」で育ってきた身としては、Cloud Firestore におけるサブコレクションにビビってしまうわけですが、コレクショングループクエリもありますし、便利ではあるので、開発には積極的に導入しつつあります。 ただ…
Gatsby に RSS フィードを追加2020/11/25Gatsbyはじめに Gatsby で構築したブログに RSS フィードを追加する場合、公式ドキュメントの通りにやればほぼ問題ないんですが、ちょっとだけ日本特有の追加対応をしたので、そのメモです。 対応内容 前提 pubDate には yyyy-mm-dd 形式の edge.node…
Cloud Firestore のセキュリティルールを Jest でテスト2020/11/24FirebaseJestTypeScriptはじめに プライベートサブネットに DB を配置してネットワーク的にアクセス制御を行うインフラ構成で育ってきた身としては、セキュリティルールが用意されているとは言え、Cloud Firestore のクライアントから直接アクセスできる自由度に不安を感じてしまうわけです。 そんな不…
Android(Kotlin) Fragment にコールバックをセットする無難な方法2020/11/13AndroidKotlinはじめに 画面回転でタップが効かなくなるバグに遭遇し、Fragment にコールバックをセットする方法を改めて考えさせられました。最初に結論を言ってしまうと、多少面倒でも良く見かける下記方式を実直に実装するのが無難で良いかと考えています。 参照が循環しないようにリスナーインター…
Gatsby と Zendesk でお問い合わせ機能2020/11/11GatsbyZendeskTypeScriptはじめに Gatsby で構築した Web サイトにお問い合わせ機能を実装したのですが、色々調べて試行錯誤したので備忘録です。 前提 Zendesk の採用について お問い合わせ機能は大雑把に、下記から構成されると考えられます。 お問い合わせフォーム UI UI…
Android(Kotlin) DialogFragment 表示時にソフトキーボードも表示2020/9/24AndroidKotlinはじめに DialogFragment でのソフトキーボード表示処理にハマったので備忘録です。 詳細 やりたいこと ダイアログ表示直後に、ダイアログ内に存在する入力可能領域にフォーカスし、ソフトキーボードも表示する。 初期実装 まず、ドキュメントを参考に下記の通り実装しましたが…
Android(Kotlin) MaterialDatePicker を日本語化して期間選択2020/9/23AndroidKotlinはじめに 過去記事で DatePickerDialog に触れましたが、使いづらく、期間指定にも対応していませんでした。 そんな中、期間指定にも対応した MaterialDatePicker という新パッケージを知ったので試してみます。 実装内容 概要 アクティビティから…
Android(Kotlin)で ZonedDateTime を使う2020/9/18AndroidKotlinはじめに 日時処理をまあまあ記述しなければいけない場合、java.util.Calendar しか使えないのは(使いづらくて)辛いなーと思います。java.time.ZonedDateTime で代替できそうなので試してみます。 実装内容 概要 デフォルトでは使えない java…
Android(Kotlin)LiveData でデータバインディング2020/9/14AndroidKotlinはじめに Android 開発経験を一定積むと、findViewById メソッドを使って要素を取得した上で、(監視付きで)表示用値セット、イベントハンドリング等、処理を記述していくことに疲れてくる訳ですが、そんな時に嬉しいデータバインディングという仕組みがあります。 ただ…
C# Dictionary のキーに列挙型・構造体型を使った場合のボックス化について2020/9/9CSharpはじめに 「ボックス化したくないなら、Dictionary のキーに列挙型と構造体型を使うな」という話は比較的有名ですが、今回はコードベースで調査してみたいと思います。 調査結果 Dictionary 実装について Dictionary の多くの操作(値取得、値追加、値削除等…
Android(Kotlin)日付・時間選択ダイアログ2020/9/3AndroidKotlinはじめに ユーザーに日付、時間を選択させたい場合、DatePickerDialog と TimePickerDialog を利用するのが良いと思います。ただ、ドキュメントにもそれぞれの使い方が記載されてはいるんですが、実際に使えるレベルまで実装するとプラスアルファで色々あったので…
Android(Kotlin)Navigation 通知タップで遷移2020/9/1AndroidKotlinはじめに 過去の記事で 、Navigation コンポーネントでアプリバーを実装しました。今回は「通知タップで目的のデスティネーションへ遷移」を実装してみます。 (後述する差分は前述記事からの差分になります)。 実装内容 概要 通知タップアクションと遷移を紐付けるには、ドキュメ…
Android(Kotlin)AlarmManager の壁2020/8/31AndroidKotlinはじめに Android で時間指定処理(一定時間経過後のローカル通知等)をやろうと思ったらまず立ち塞がるのが AlarmManager です。API Level 毎の差異が複数あって、取っ付きづらいので、ざっくり調査内容をまとめておきます。 調査 前提 本記事においては、デバイ…
Android(Kotlin)Navigation アプリバー対応2020/8/29AndroidKotlinはじめに 前回 、Navigation コンポーネントで画面遷移を実装しました。今回はアプリバーも対応してみます (後述する差分は前回の記事からの差分になります)。 実装内容 概要 対応内容は下記のの通りです。 アプリバー表示 アプリバー内に該当画面名を表示 アプリバー内に戻…
Android(Kotlin)Navigation はじめの一歩2020/8/27AndroidKotlinはじめに アプリバーを実装したくて色々調べていたら、 Navigation コンポーネントの存在を知りました。 ドキュメントを見る限りは便利そうだったので、導入検討のため、最低限の画面遷移処理を実装してみました。 実装内容 Gradle Gradle プラグインを追加するので…
No Activity な Android(Kotlin)プロジェクト2020/8/26AndroidKotlinはじめに Android プロジェクトを作成する際には、自動生成されたファイルをたいして理解せずに使っていたのですが、ちゃんと理解しようと思い、最小構成であろう Project Template No Activity を深掘りします。 調査内容 プロジェクト作成条件 Andro…
Expo(TypeScript)セットアップ2020/8/25ExpoReact NativeTypeScriptはじめに Expo を TypeScript で使うことは何度かやっているんですが、手順として整理できていなかったので、整理してみました。Expo プロジェクトを作成し、ESLint を導入します。 セットアップ手順 事前準備 nodenv を使って最新の Node.js…
NativeBase ちょっと複雑な Accordion2020/8/21NativeBaseReact NativeTypeScriptTypeScript で NativeBase の Accordion を実装する際のメモです。 基本ケース dataArray プロパティに渡したデータを表示をしてくれます。 title が見出し表示、content が内容表示(具体的には Text タグによってシンプルに表…
C# struct 引数2020/8/19CSharpはじめに C# 言語仕様としても、Unity(ゲームエンジンの方)等の C# を用いた開発環境においても、struct の存在感は増しています。が、class に慣れてしまっていると、癖があって、変なパフォーマンスボトルネックを知らずにつくってしまいがちなのも事実です…
Gatsby ブログにタグ導入2020/8/17GatsbyJavaScriptはじめに タグ機能の追加方法は公式ドキュメントに全て記載されています。 以上。 ・・・なんですが、備忘録含めて gatsby-starter-blog スターターに対して適用した場合の実差分を記載しておきます。 実差分 タグ情報を GraphQL で取得し…
Gatsby でブログ2020/8/14Gatsbyセットアップ 公式ドキュメントの手順をざっと確認すると、スターターと呼ばれる雛形を利用しているようだったので、https://www.gatsbyjs.com/starters/ を見て、スターが多い gatsby-starter-blog を使ってみることにしました。Node…