All Posts

AndroidはCSVをサポートしていないので導入は避けようという資料

いまプライベートで作っているアプリでCSVインポート機能を実装しようとして、「これは安易に導入しちゃだめだな…」と感じたのでまとめた資料です。

yamacraftのブログを支えるシステム(2022年版)

このブログを含めた、yamacraftが管理しているWebサイトの構築内容などをまとめました。

利用しているシステム・アプリ

  • Hugo
  • GitHub Actions
  • GitHub Pages / Firebase Hosting
  • textlint + VSCode

各システム・アプリの詳細

Hugo

静的サイトジェネレータです。 Markdownでコンテンツ部分を作成できます。 静的サイトジェネレータはいくつか種類がありますが、利用者の数とバイナリファイルで動作する点から決めました。

2022 3Qやったこと

四半期ごとにやっている報告的なものです。

2022年のまとめ

仕事

合同会社ヤマダ印の代表社員兼ITエンジニアとして仕事をしています。

開発支援業務

これまで同様、継続して契約しているクライアントさんのところでAndroidアプリの開発案件をやっていました(週4日)。 ちなみにフルリモート勤務です。

アプリのデザインと実装のつらみを話しました

すっかりこちらに報告し忘れていましたが、先日『Mobile勉強会 Wantedly × チームラボ #6』にLTで参加しました。 LTも含め、発表側での参加は数年ぶりじゃないかという気がします。

adbでAlarmManagerの登録内容を確認する

Androidアプリにおいてアプリ自身で特定の時間に何かしらの処理(以下、アラーム処理)を行いたい場合は、AlarmManagerを使う方法が考えられます。 さらにsetInexactRepeating()を使うことで、(タイミングに制限がありますが)一定間隔でアラーム処理を行うことが可能です。

D.I.C.のQUERY_ALL_PACKAGES利用許可申請の対応メモ

ヤマグロでリリースしているD.I.C.には、端末がインストールしているアプリの一覧を表示し、各アプリのtargetSdkVersionを確認できる機能があります。

この機能を実装するために、アプリでは PackageManager.queryIntentActivities() を使っています。

val packageManager = getApplication<Application>().packageManager

val intent = Intent(Intent.ACTION_MAIN).apply {
    addCategory(Intent.CATEGORY_LAUNCHER)
}

// 該当するActivity(アプリ)の一覧を取得
val activities = packageManager.queryIntentActivities(intent, 0)

このAPIを使うためには、 QUERY_ALL_PACKAGES 権限の利用が必要です。 設定しなかった場合APIがExceptionを吐くことはありませんが、空の情報が返却されます。