業務以外でこれまでに制作した作品です
ClaudeCodeを使って実装した初めての個人開発アプリです。 私の趣味である散歩において、通常のMapアプリケーションで目的地までの経路通りに歩くことに退屈さを感じており、「時間がかかってもいいので知らない道を歩きたい」「新しい景色をみたい」といった私の欲望から実装したアプリです。 機能としては、マップから目的地を選択すると現在地から見た目的地の方角と距離が表示される。それだけです
このアプリを使うことによって、通常1時間の散歩が3時間かかるようになりましたが、目的に向かう過程で分岐した道の選択を自分自身で行えることや、その先に知らないお店に出会えたりなどいつもの散歩体験がより不思議で楽しいものへと変わりました。
アプリ開発自体は10分ほどで主要機能が完成し、ClaudeCodeの能力の高さを実感しました。 これからは自分や他者の課題を解決するためのアイデアを高速で実現できる世の中になっていくという実感を持ち、アプリ開発に対する考え方が変わりました。
デザイン面のアップデートや目的地検索周りの機能を今後は充実させていく予定です
当ポートフォリオサイトになります
当初Next.jsにて内容をハードコードするスタイルで作成していましたが、更新する機会が増えたこともあってFireStoreを使ってコンテンツを管理するよう実装を改修しました。
CMSのような管理者画面を追加し、markdown形式でコンテンツを入力したり、画像を添付したりできるよう対応を行いました。
Swift, MVVM, CleanArchitecture, TCA, VIPER
MVVM、Clean Architecture、TCA、VIPER の4つの主要アーキテクチャを、動作可能なコードとして収録しています。新規プロジェクト立ち上げ時にこのリポジトリをリファレンスとして指定することで、設計パターンに沿ったコードを素早く量産できます。 今後、個人開発を行なっていく上でもAIツールを使った高速な開発を実現していきたいと考えており、その上で可読性高く、テストしやすく安全な設計を追い求める上でこういったアーキテクチャパターンをテンプレートとして持っておくことの価値を感じて作成したプロジェクトになります。 以降開発を行う際に、プロンプトとして「ios-blueprintsの02-Clean-MultiModuleパターンに従った設計を行う」といった形で当プロジェクトのアーキテクチャパターンを指定するだけで自分の理解できる設計パターンを再現性高く実現してくれています。
Swift, SwiftUI, UserDefaults, SwiftData, SwiftPackageManager, StoreKit2, GoogleAdmob, Localize
初心に帰って、初学で作成したアプリ「BlockMemo」をリワークしてみようとチャレンジしました。 BlockMemoはブロックが上から落ちてくるUIでしたがBlockNoteは端末の傾きによって画面上のBlockたちが飛び回るUIになっています。 SwiftPackageManagerを使ったマルチモジュール構成、SwiftDataを使ったメモの保存を実装しました。 UIはSwiftUIを使って実装しBlockMemoで使っていたUIGravityBehaviorなど古いAPIはUIViewRepresentableでSwiftUI上でも使えるようにしています。 また、バナー広告、アプリ内課金といった収益に関する部分の実装にもチャレンジしました。Storekit2になって実装がかなり楽になった印象です。初回の審査で課金アイテムが正常に購入できないという内容でリジェクトされ続け、対応に大苦戦しました。証明書関連の設定が原因でした。 デザインについてはBlockMemoよりもシンプルであることを意識しました。アプリ全体の背景はダーク・ライトモードの2つに絞り、ブロックの色を設定する部分はいい感じのカラーピッカーが実装できたと思います。 ホーム画面のアイコンをカスタマイズできる機能もうまく実装できたと思います。 アプリアイコンの3つの四角い図形をそれぞれ3色からカスタムできるようにしています。 これは27パターンのアイコン画像を地道に作成して設定に合わせて画像を切り替えるような力技で実装しました。 アプリのローカライズにも挑戦しました。アプリに表示される文言は日本語以外にも6ヶ国語に対応しています。
Swift, SwiftUI, TCA, SwiftPackageManager, APIClient
当時の現場でTCAを検証する機会があり、“TCAを実際に使いたい”という研究目的で実装を進めたアプリです。 実際に業務でよくある、APIを叩いて表示する実装をTCAを使って実現してみるところから始めました。 APIClientを実装してフリーのスポーツ系APIを呼んでいましたが、フリープランの上限リクエスト数によって開発が滞るのでJSONファイルをプロジェクト内に配置してそれをデコードする形でデータを使っています。 大部分を実装していたところからマルチモジュールなプロジェクトを作り直した作業がとても面倒で大変でした。 普段よく使っているサッカーの速報アプリよりもっと使いやすくもっとワクワクするデザインやレイアウトを研究しています。 新しい技術をよりリアルな実装に落とし込む、UI/UXについて考える機会を作るためのアプリです。
Swift, SwiftUI, TCA, LiveActivity, APIClient, ImageRenderer
新しい技術をインプットする際に実際に手を動かしてみること、学んだ内容を今後使えるように実装サンプルとして残すことを目的にしたリポジトリです。 研究目的なのでリリース予定はありませんが、今後は技術ブログを書いた際のサンプル実装として公開したり、TestFlightで実際に端末で動かせるようにしたいと思っています。 業務では通常過去のOSをサポートする必要があり、最新のiOSの技術を実装する機会がなかなかないためこのアプリを通して実装のお試しをしています。
Dart, Flutter
Flutterの学習をしていた時に制作、リリースしたアプリです。 前回のアプリでデザインにこだわりすぎて時間がとんでもなくかかってしまったので、最低限の機能と最低限のデザインでリリースしてしまおうという意識で実装しました。 ユーザー目線のことはあまり考えず、勉強のために作る意識だったのですが前回リリースしたアプリよりも使用ユーザーが多くてアプリ開発のことがわからなくなりました。
Dart, Flutter, GoogleAdMob, Firestore Database
Flutterで作成したTodoリストアプリです。 Firebaseを使ってみたいモチベーションで制作しました。Firestoreを使ったデータベースを作成してTodoの内容を保存するよう実装しています。 また、ホーム画面のアイコンを変更できる実装が興味深かったので試しに実装してみました。
Swift, UIKit, UIGravityBehavior, UserDefaults
独学でiOSアプリ開発を勉強し初めて初めてリリースしたアプリです。 シンプルなメモ帳でテキストをローカルに保存するのが主な機能です。 ホーム画面はiOSの物理演算機能を使ってブロックが上から落ちてくるようなUIにして他のアプリにはないような画面になっています。 初学だったので簡単なメモ帳アプリを作るつもりでしたが、実装していくうちに「普通のメモ帳では使ってもらえない。もっと奇抜なメモ帳を作りたい」と思い始め、デザインと実装と削除を繰り返していたら約2年が経過していて流石に時間がかかりすぎたと思っています。 できるだけ文字を省いて誰でも感覚的に使えること、画面の下部にボタン系のUIを集めて扱いやすくすることを意識して作りました。