はじめに
はじめまして。ハム二郎と申します。
Python × Kivyを用いたiOS向けアプリ開発の学習記録として、本記事では開発背景と現状の進捗をまとめます。
初投稿のため読みづらい点があるかもしれませんが、ご容赦ください![]()
コメントやご意見をいただけると励みになります。
目次
開発背景
きっかけ
私は幼い頃からものづくりやゲームが好きで、Minecraft のレッドストーン回路を組んで友人に見せびらかしていたタイプでした。
当時は純粋に「仕組みを作ることの面白さ」に夢中になっていましたが、その体験が今の開発の原点だと思います。
高校では理系に進んだものの、物理に苦戦。野球部活動との両立や両親の意向等を考慮し、最終的に文転して法律を専攻しました。
大学ではテニス部に所属し、勉強や部活、アルバイトに追われながらも、趣味でWebサイト制作をするなど、ITへの関心は途切れませんでした。
卒業後は公務員として勤務していますが、「自分で仕組みを作り、誰かを楽しませたい」という気持ちが再燃し、Pythonの学習を開始しました。
きっかけは、理系大学院に進んだ親友との再会で、彼の話すPythonの魅力に強く刺激を受けたことでした。
環境整備と試行錯誤
iOS向けアプリの開発を念頭に動き始めましたが、ビルドにはMacOS環境が必要という現実を知らず、Windows 11 環境で躓きました。
そこでQiitaや個人ブログを参考にしつつ、ChatGPT を活用して試行錯誤した結果、Python × Kivy によるクロスプラットフォーム開発に落ち着きました。
開発環境は以下の通りです:
- OS:Windows 11
- エディタ:Visual Studio Code
- 使用ライブラリ:Kivy(GUI構築)
- 今後:MacOSの購入 or クラウドMacでのビルドを検討中
要件定義
アプリ概要
| 項目 | 内容 |
|---|---|
| アプリ名 | 大人の短歌 |
| 開発言語 | Python |
| ライブラリ | Kivy(GUI構築) |
| 対象 | 成人した若者 |
| 目的 | 短歌をベースにした創作×ゲーム体験の提供 |
| 特徴 | 札システム・自由律短歌対応・対戦機能 |
機能概要(目標)
- 名前を設定して参加できる
- 5-7-5-7-7形式や自由律短歌を作成可能
- キーワードのお題札を配布
- ドラッグ操作で場にカードを出せる
- 出した札はスナップアニメーションで吸い付く
- 札の組み合わせで「役(コンボ)」を作れる
- CPU対戦が可能
- 札の視認性向上のため、立体的な(3D風)デザインを採用
- 将来的には**オンライン対戦(複数人)**にも対応予定
- 面白さや表現力を、AIまたはプログラムで自動判定
- 3人以上対戦時は、持ち点を配分し合い、未使用点は減点される方式
- 終了時にランキング表示
他にも、面白そうな機能があれば随時追加していきたいと思います。
こだわりポイント
- 和風モチーフのUI設計:和紙風の背景や金色の縁取りなどで"雅"な雰囲気を演出
- 操作の心地よさ:ドラッグ操作にスナップアニメーションを追加
- 創作×対戦の融合:技術的挑戦と遊び心のバランスを重視
学習目的
Python と Kivy を用いた GUI アプリ開発の実践を通じて、
プログラミングの基礎力と UI 設計の理解を深めることが目的です。
「楽しみながら学ぶ」をテーマにしており、単なる機能実装ではなく、ユーザー体験を設計するという観点も意識しています。
また、学習過程で得た知識を Qiita にまとめることで、技術理解の可視化と継続的アウトプットを習慣化していきます。
現在の進捗
実装済み
- 基本的なUI構成:画面レイアウトと札の配置を実装
- カードデザイン・システム:札の見た目や操作の基礎を構築
- 簡単なアニメーションシステム:札を出す際の動きを追加
現在はまだ対戦機能は未実装ですが、短歌の生成までは可能です。
次のステップとして、得点判定・対戦ロジック・CPU機能の実装に進みます。
今後の方針
- 対戦ロジックの完成とAIによる自動判定の導入
- UI構成のモジュール化(View/Logicの分離)
- 学習トラッカーアプリ開発への技術転用(Kivy再利用)
- GitHub・Qiitaでの成果共有
さいごに
ここまで読んでくださりありがとうございました。
初投稿ということもあり、内容が散漫な部分もあるかと思いますが、今後はより技術的な観点から、学習内容や実装過程を発信していく予定です。
また、趣味の延長から始めた開発ですが、学ぶほどにこの分野の奥深さと面白さを感じています。
今後、もし本格的にIT業界へ進む機会があれば、この経験を糧に、設計・実装・改善を通して価値あるサービスを作りたいと考えています。
それではまた。![]()