eaglesakuraの技術ブログ

技術的な話題とか、メモとか。

2020-01-01から1年間の記事一覧

APIサーバーの実行環境の所感 2020

Google App Engine 言語/ランタイムバージョンが限定される 複数バージョンをデプロイして、複数の指定バージョンを簡単に試せる staticファイルの配信が簡単 Go1.9時代(第1世代GAE)はいつも使っていた 今はstaticファイルの配信に使う Firebaseホスティング…

Windows環境のRobolectricでUri.toFile() KTXが正常に動作しない

問題点 Windowsファイルシステムはドライブレター(C:とか)やパスセパレータ(¥)がLinux/Macと異なる Uri.fromFile()を実行したとき、ドライブレターやバッククォート(日本語だと円マーク)を含んだ文字列がURLエンコードされる KTXのUri.toFile()を行う…

WindowsのNTFSはtree()が遅い

起きた事象 Windows版Android StudioのGradle Sync(像のアイコン押すと走るやつ)が異様に遅い 普通に gradlew 実行だけでも遅い MacやUbuntuだと早い 具体的にはこのくらい Windows: gradlew 40秒, WSL2も同じくらい NVMe PCIe 4.0接続しているので、スト…

Protocol BuffersのAndroid向け実装としてSquare Wireを採用した所感

Wire square.github.io Protocol Buffersを採用した理由 大量のデータを扱う処理で、画面外の情報を一時的にファイルやDBに退避したい ついでにIntentで渡したりするのも簡単にやりたい モデルの定義を簡素化したい POJO定義してJSONエンコードも(Intentにp…

AndroidアプリプロジェクトのJDK11対応

AndroidのJDK Android Studioに付属しているJDKはJava8相当 なので、公式にはJava8でビルドするのが良いと思われる なぜJava11対応が必要になったのか CircleCIが用意しているAndroidビルド用Docker Imageが突然Java11になった ああもうしゃーないなぁとか思…

メイン開発PCのパーツ交換をした

メイン開発マシンのスペックアップのため、一部のパーツを入れ替えたので今後のためにメモ。 メイン開発マシンのスペック(2017~) 基本スペック Ryzen 1950X メモリ 2400MHz / 8GB×8 GeForce GTX 1060 NVMe SSD 512GB×2 表OS / Windows 10 / ストレー…

Mac版IntellijでGradle Syncが出来なくなった場合の対処

発生した問題 最近購入したMac Book Pro 13inch / 2020 / RAM32GBでIntellijをインストール gradle syncが行えない 必ず失敗し、ログも表示されない IntelliJ自体のログを見ると、 Java home is different と言われてDaemon接続に失敗しているらしい 解決 An…

Intellij Idea 日本語EAP版が配信されているので試した結果、アンインストールした

日本語化の利点 日本語話者なので、自然に使えるでしょう 初学者に勧めやすい これは重要。超重要 日本語Visual Studioから、英語Eclipseに移った当時(10年以上前)、必死に日本語パックの初期設定とか探した EAP版の問題点 フィードバック済み Run... とか…

ChildFragmentのViewが一部条件で表示されない場合のワークアラウンド

問題点 MotionLayoutの中にChildFragmentでConstraintLayoutの中にFragmentの中にカメラプレビューを置いた ユーザーの操作にあわせてアニメーションしたり、Viewを入替えたりする サムスン、Huaweiの端末(もしくはAndroid 8以上?)でChildFragment.replac…

仕事用モバイルノートの要件 2020

新型PCが発売される季節なので、選定の際の要件を定義しておく。 状況を整理するのは良いことだ。 利用シーン 会社が運営している施設で作業するのに使う 往復で徒歩40〜50分くらいになる 基本的に自宅作業なので、気分転換にカフェとかで仕事する 平時であ…

Android定型コードをスッキリさせるための Wofkflow Dispatcher ライブラリ 1.0.0を公開

Wofkflow Dispatcherとは GitHub - eaglesakura/workflow-dispatcher Androidアプリ開発でよくある 画面やActivityやプロセスを跨ぐ可能性のある非同期処理 をなるべく簡単に扱うためのライブラリ Annotation Processorを使って、定形処理を出力する startAc…

秘伝のタレを受け取ったときにまずやること

秘伝のタレとは 年単位で職人によって継ぎ足され、熟成されたソースである 衛生環境が良い秘伝のタレは素晴らしい味だが、常に良い衛生環境の中で育つわけではない 深呼吸する 何事も、一歩ずつ解決しなければならない コードフォーマッタを適用する 最初に…

Android Studio 3.6.1で稀にReleaseビルドが失敗するのを回避する

失敗時のログ Execution failed for task ':app:minifyReleaseWithR8'. > Multiple entries with same key: Method $$ServiceLoaderMethods.$load0 Proto L java.util.Iterator =Encoded method Method $$ServiceLoaderMethods.$load0 Proto L java.util.Ite…

branchを切ったらすぐにpushしてCIだけは通しておこう

前提 masterやdevelpoブランチでビルドが通っている その状態で作業branchを作成する branchを作ったら、何も更新してなくてもすぐにpushしてCIは通しておく 理由 CIが壊れるのは自分の更新だけが理由ではない CI設定の間違い サーバーが更新されて動作しな…

Kotlinでinterface定義モジュールと実装モジュールを分離した上で実装を隠蔽する

やりたいこと interface定義と、その実装をなるべくキレイに切り分けたい インターフェース定義用モジュール // ":interface-module" に定義を書いていく... interface AuthService { fun login(id: String, password: String) } 実装用モジュール // ":impl…

Androidアプリビルドの並列最大化の限界値

この記事ではコマンドラインによるフルビルドのみを対象にする gradleのソースコードと挙動観察での現時点での推測 ビルド速度に影響する要素 CPU論理コア数 シングルコアスペック メモリ プロジェクト自体の並列性 gradleのworker設定 gradleには --max-wor…

Firestoreのローカルエミュレーターは同時にトランザクション接続しすぎるとフリーズする

問題点 表題のまま 100個くらいのUnitTestがgoroutineで2〜3のトランザクションを並列発行した フリーズした 回避 UnitTest時のみ、トランザクションが集中する箇所でmutexによる排他制御を入れた まあしゃあない

FirestoreとMemorystoreとDatastoreと

Google Cloud Platformのサーバーデータはどこに保存するか SQL系は月額固定課金なので、気軽には使えない(お金持ちを除く) なので従量課金制の保存先としてDatastoreを気に入っていた DatastoreとMemcache DatastoreはFirestoreと両立できない アプリがFi…

Google App Engineで香川県ゲーム条例に対応する

雑感 条例が最短で春に施行される なるべく簡単に香川県民スマホ禁止条例に対応しなければならない X-AppEngine-City, X-AppEngine-CityLatLong Google App Engineはリクエスト元のIPからざっくりとした国・都市情報を取得できる X-AppEngine-City ヘッダを…

LiveDataを複数回observeしても1個のObserverしか登録されない現象と解法

前提 LiveDataのonActive/onInactiveで処理を行わせていた 強制的にLiveDataをactiveにするため、次のようなExtensionを作った LiveDataをactiveにしたいだけなので Observerはナニも処理していない // 強制的にLiveDataをactiveにする fun <T> LiveData<T>.forceA</t></t>…

10年代の思い出 / JavaのゲームをBREWへ移植した思い出ばなし

BREWとは 最近ではSnapdragonで有名なクアルコムがかつて開発していたOS 日本人的には auの KCP/KCP+ だ ガラケー全盛のauを支えようとしていた、かつての クソ OSだ 2010年代が終わり、記憶が消えてしまう前に、彼について記録と記憶を留めておこうと思う B…