聖書アプリを自作してみた(アンドロイドのみ)

開発者でもあるクリスチャンがJetpack Composeで作った聖書アプリを紹介。
13
Hokuto Ide @Hokuto_Ide

最初の聖書アプリは「Java言語」というプログラミング言語で作ったデスクトップアプリケーションでした。次は「C#」でもっと高速に動くものを作りました。僕のパソコンはWindowsでしたし、そのころスマホなかったので。その後スマホの時代が来て、アンドロイドの聖書アプリを2014年頃には作りました。

2023-12-27 17:44:00
Hokuto Ide @Hokuto_Ide

2014年に作ったアンドロイドの聖書アプリをほそぼそアップデートしながら、パソコンでは自作のGUIのアプリケーションの聖書を使っていたのですが、どうしてもGUIだと遅い。章節到達までの手順数が多く章節到達時間がかかると感じ、起動速度も入力速度も最も早いコマンドラインの聖書bblを作りました。

2023-12-27 17:47:18
Hokuto Ide @Hokuto_Ide

@GODISLOVEISTRUE そうですよね。iOS皆さん使ってますよね。日本のスマホのシェアはiOSが7割で、アンドロイドが3割だそうで。ただ、僕iOS使ったことほぼないんですよ。Macは使いますが。なので開発環境はあるんですが、使用環境がない。ただ将来iOSで開発で部品を流用するため今回はJetpack Composeで開発しました。

2023-12-27 17:49:55
Hokuto Ide @Hokuto_Ide

bblを作った時はKotlin言語で作りました。僕が元々Javaを大学で学び仕事でも使ってたのもありますが、アンドロイド版で構成要素を流用したいのもありました。ダークモードがない時代に作ったアンドロイド版をダークモードのあるスマホで使ううちにいらいらし始めました。暗い時に目が疲れるんですよ。

2023-12-27 17:52:51
Hokuto Ide @Hokuto_Ide

あと、前作ったアプリには複数言語は入ってましたが対訳表示機能もありませんでした。対訳もできるようにしたい。2023年11月10日にKotlin Blogで「Kotlin Multiplatform が安定版および本番対応になりました」と発表されたのでiOS開発のためにもこれは使いたいと思いました。 blog.jetbrains.com/ja/kotlin/2023…

2023-12-27 17:58:20
Hokuto Ide @Hokuto_Ide

僕がスマホを新しいのに乗り換える時、最初に入れるアプリは自分で作った聖書と決めてます。これはもうクリスチャンの技術者である自分の個人的なこだわりというか、神様と自分との関係です。教会でいつも同じ席に座る習慣とかと同じです。個人的にはそうしたいんですよ。クリスマスが近かった。そうだ

2023-12-27 18:01:46
Hokuto Ide @Hokuto_Ide

前回作ったコマンドライン版聖書bblはオープンソースで公開したから今回作るアンドロイド版もオープンソースソフトウェアとして公開しよう。ソースコードが誰かの役に立つかもしれない。ノンクリスチャンの技術者に聖書のソースコードを見てもらえるかもしれない。よし。OSSで作る。クリスマスまでに。

2023-12-27 18:03:38
Hokuto Ide @Hokuto_Ide

個人的に作って使ってる聖書アプリをいつまでに開発するのかなんて期限はないし、いつ作っても良いわけです。ただクリスマスが近いから、これ作ってクリスマスに公開したら良いプレゼントになるかもと思ったんです。オープンソースのソフトウェアは何億人に配っても配送料無料ですから配り放題ですし。

2023-12-27 18:06:50
Hokuto Ide @Hokuto_Ide

聖書アプリを誰にプレゼントするんだよという話ですが、みんなにですよ。とりあえずbbl-androidを利用可能なのは英語11億、日本語1億、韓国語8千万、中国語11億人。全員に届けるのは無理でも、僕は多言語を使う日本人や在日外国人のクリスチャンとの接点が多いのでせめて彼らにはあげたい。対訳版を。

2023-12-27 18:14:16
Hokuto Ide @Hokuto_Ide

自分のスマホの電池もだめになりつつある。充電ケーブルを入れる穴も角度次第で充電できない時が多くなって、もう寿命に近い。クリスマスは近づいている。なんとか個人的な時間を捻出して作ろう。と、思い立って作り始め最初の作業記録「Initial Commit」が2023年12月21日。 github.com/nehemiaharchiv…

2023-12-27 18:19:02
Hokuto Ide @Hokuto_Ide

最初の聖書アプリのプログラムのメインのファイル「MainActivity.kt」を見ると424行でした。これがガワですね。ボタンとか聖句の表示エリアだったり、そういう器の部分を定義するのがこれでした。「宣言的UI」という自分にとっては新技術で四苦八苦しました。その後、機能実装でもっと苦労することに。

2023-12-27 18:28:57
Hokuto Ide @Hokuto_Ide

オープンソースソフトウェアの開発をするときはGitという作業記録ソフトウェアを使うことが多いですが、27回分の記録が残ってます。これゲームのセーブデータみたいに、作りながらぶっ壊したらセーブした地点に戻れるんです。今回の聖書アプリでは27回セーブしました。1つ一つが機能的な山場でした。

2023-12-27 18:32:02
Hokuto Ide @Hokuto_Ide

聖書アプリ、今回僕が作ったもののコミットログ(機能を作るごとにつけた作業記録)に興味がある人はこちらから読むことができます。 github.com/nehemiaharchiv…

2023-12-27 18:33:52

反響

Louis C. @louis_chiba

@Hokuto_Ide 聖書アプリのリリースおめでとうございます。早速、DLして使ってみています。Kotlinは本格的に触ったことがないのですが、BibleStateというクラスにUIやチャプタのステートを保持しているんだなーと思いました いやー、ホントに努力の結晶ですね

2023-12-26 08:42:43
Louis C. @louis_chiba

@Hokuto_Ide rememberSaveable()を含むJetpack Composeは、Nuxt3でいうpiniaみたいな状態管理ライブラリかと思ったらもっと大規模なUIツールキットのようですね いまはSvelte, Laravel, Next.jsを使っていますが、githubのソースを拝見して、Androidネイティブアプリ書くモチベーションが出てきました

2023-12-26 08:46:08
Hokuto Ide @Hokuto_Ide

@louis_chiba 僕もNuxt等のjs系のフロントエンドフレームワークはまだ使ったことないですが、Jetpackは明らかにReactJSとかそっちから影響受けてる感じですね。アプリ起動しなくても部品ごとにIDEでプレビューをホットリロードできるのが便利でした。宣言型の開発は脳の負担が減って良かったです。

2023-12-26 09:08:47
ドラ牧師 @doraboxy

@Hokuto_Ide 私の教会では口語訳聖書を使用しています。このアプリ、すごく助かります。

2023-12-27 19:43:02
Hokuto Ide @Hokuto_Ide

@doraboxy 神様に感謝です!公開して良かったです。

2023-12-27 19:46:09
Hokuto Ide @Hokuto_Ide

@GODISLOVEISTRUE そうですよね。iOS皆さん使ってますよね。日本のスマホのシェアはiOSが7割で、アンドロイドが3割だそうで。ただ、僕iOS使ったことほぼないんですよ。Macは使いますが。なので開発環境はあるんですが、使用環境がない。ただ将来iOSで開発で部品を流用するため今回はJetpack Composeで開発しました。

2023-12-27 17:49:55