4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

kifu.me Camera アプリの開発

4
Posted at

バックギャモン Advent Calendar 2025 5日目の記事です

kifu.me とは

kifu.me は、バックギャモンの対局動画から自動で棋譜を記録するシステムです。私が開発し、今年の 5月にリリースしました。多くの方にご利用いただいており、大変感謝しております。

kifu.me の課題

この半年間で、さまざまな課題に対応してきました。主なものは以下の通りです。

  • バッフルボックスを使った対局を記録できるようにした
  • クロックを使わない対局を記録できるようにした
  • バグ修正多数

近頃は、だいぶサービスの品質が安定してきなと感じていますが、実はまだ "Elephant in the room" の状態だと私は思っています。

その問題とは、「ユーザー様がアップロードしてくる動画」の品質が一定でないことです。

kifu.me のユーザー様には、「とてもうまく行く」と思っている方と、「全然ダメ」と思っている方がいるはずです。この違いが生じる一番の原因は、動画撮影にあります。kifu.meは、ユーザー様がマニュアルに従って撮影してこそうまく行く協力ゲーなのです。

kifu.me のマニュアルには、リリース初日から明確に書いてあるのですが、バックギャモンボード全体を真上から撮影して欲しいのです。しかし、実際に私が見てきたのは以下のような動画です。

  • 真上ではなく、ボードの横から撮影されている
  • ボードの一部が見切れている
  • レンズ歪みの大きいカメラで撮影されている
  • 解像度が足りず、画像が不鮮明

いやこれって全部、悪い例としてマニュアルに書いてあるじゃん! みんなマニュアル読んでないの?
そうなんです、

君はロックなんか聴かない ユーザーはマニュアルなんか読まない

他にも、動画撮影に関わる様々な課題があります。以下はユーザー様からいただいたフィードバックの一部です。

  • 動画ファイルのサイズが大きいからアップロードに時間がかかります
  • 動画変換ツールで、標準の動画をタイムラプス動画に変換できますか?
  • kifu.meが 0.5秒間隔のタイムラプス動画撮影を勧めるが、対応したカメラを持っていません
  • スマホでタイムラプス動画撮影したいが、どのアプリがいいですか? 課金が必要ですか?
  • 撮影した動画を配信にも使いたいが、タイムラプス動画は不向きです
  • kifu.meで動画をアップロードするときに、標準/タイムラプスのオプション選択を間違えました
  • カメラの操作を誤って、スローモーション動画を撮影しちゃいました
  • スマホの縦位置で撮影した動画も処理できますか?

…もう、課題山積みで、ついに

kifu.me は激怒した

実際は怒っていませんが、なんとかこれらの課題を一気に解決する妙案はないかと考えたところで思いつきました:bulb:(多分風呂に入ってるとき)。

専用アプリで全部解決

上記の課題を一気に解決する妙案が、kifu.me Cameraアプリです。

アプリの主な機能は以下の通りです。

  • 撮影時に、バックギャモンボード位置を認識して、最適なフレーミングを補助する
  • 通常の動画とタイムラプス動画を同時に撮影する
    • 通常の動画は、「写真」アプリで参照できます
    • タイムラプス動画は、kifu.me にアップロードされます

アプリによって、これまで述べてきた課題が如何に解決されるか、ご覧ください。

before after
真上ではなく、ボードの横から撮影されている 撮影時のガイドに合わせて撮影してください
ボードの一部が見切れている 見切れていると撮影が開始できません
レンズ歪み iPhoneのカメラは歪みが少ない

「ガイドに合わせて撮影」の部分は、最初は難しいかもしれませんが、何度か試していただければ慣れていくと思います。出来るだけ、画面いっぱいにボードが映るように調整してください。

iPhone のモデルによっては、超広角レンズが備わっています。その場合は、レンズを切り替えて撮影することができます。iPhone SE のように標準レンズだけのモデルは、iPhone をボードから1メートルくらい離れた位置に設置する必要があるので、ちょっと使いづらいと思います。

動画撮影は、720p(1280x720)で行います。これまで FullHD で撮影してくださいとお願いしていましたが、なぜアプリは 720p で撮影するのでしょうか?
実は、FullHDはオーバースペックで、本来 720p で十分です。しかし、ユーザー様の動画はフレーミングが適当な場合が多いので、FullHDでの撮影を推奨していました。kifu.meは、内部の処理で画像をクロップしたりと、工夫をしているのです。今後もアクションカメラを使うユーザー様は、きっちりフレーミングできる自信があれば、720pで撮影してみてください。動画ファイルのサイズも小さくなりますよ。

動画撮影から kifu.me へのデータアップロードのワークフローも簡潔になります。

before after
1. カメラで動画を撮影する 1. アプリで動画を撮影する
2. カメラの動画をパソコンに取り込む 2. アプリから kifu.me にアップロードする
3. 動画の種類(標準/タイムラプス)を選択する
4. パソコンから kifu.me にアップロードする

さらにさらに、アップロード完了から、処理が終わってメールが届くまでの時間も大幅に短縮されます。最も処理に時間がかかるのは、画像に写っている物体(チェッカーやダイスなど)を AI が認識する処理です。この処理をアプリにお任せしているので、対局中に認識処理が完了しています。特に、ロングマッチでこの効果は大きくなります。アプリを使えば、マッチの長さに関係なく、およそ 5分以内にメールが届くと思います。

まさに、いいことだらけですね! これはもう、アプリを使うしかない。
おっと言い忘れました。アプリは無料でご利用いただけます。

アプリの開発

アプリの構想は以前からありました。しかし実際に着手したのは今年の 10月です。
私は長年ソフトウェアの技術者として働いてきましたが、モバイルアプリを作ったことはありませんでした。アプリを作るためには、iOS/Android 専用の開発環境・開発言語を学ぶ必要があり、正直億劫だなと思っていました。

しかし、生成AIを使ったコーディングエージェント技術が発達したおかげで、もはや自分でコードを書く必要もない時代になりました。今回のアプリ開発で、私は実質的に 1行もコードを書いていません。
「仕様駆動開発」と呼ばれる手法を試してみようと思い、まずはアプリの仕様をドラフトしました。次に、AIに仕様をレビューしてもらい、実装が始められるレベルまで詳細化しました。以降は、プログラムの実装計画をAIに作らせて、段階的にアプリの開発を進めました。11月の王位戦が終わった後から本格的に開発に着手しましたが、およそ一週間でお望みのアプリが出来てしまいました。いやはや、なんとも便利な世の中になりました。

アプリは、Flutter/Dart で作りました。何も理解していなのは流石にまずいと思ったので、Flutter/Dart の勉強はしました。iOS 版の画像処理などは Swift で書きました(AIが)。

今後の展開

アプリは、まだリリースしたばかりなので、不具合があれば直したりしつつ、Android版も作ってみようと思います。
今後も、kifu.me をどうぞよろしくお願いいたします。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?