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