はじめに
最近
- GitHub Actionsをちゃんと触りたい
- Clean Architectureを実装レベルで理解したい
- ChatGPT Plusで使えるCodexを試したい
という動機があり,学習用として株価分析アプリを作ってみました.
(ChatGPT PlusでCodexが使えることを最近知りました...)
成果物
GitHub: https://github.com/rang000/index_analysis
株価データを取得し,ポジションを簡易推計して,Streamlitで可視化するアプリ.
主な構成:
- Streamlitによる可視化
- Clean Architectureによる責務分離
- GitHub Actionsによる自動テスト / lint
学び
Clean Architectureを実装して一番良かったことは
依存関係を壊しにくい構造を作れたこと
です.
依存関係は以下のようにしました.
UI → UseCase → Port(interface) → Infrastructure
この形にすると,
- UIから直接データ取得を書かない
- 外部ライブラリをUseCaseに持ち込まない
という制約を構造として強制できるようになります.
実装中,「Streamlit側から直接データ取得を書きたい」場面が何度もありましたが,Port経由にしていたため,結果として,依存方向を崩さず実装を進めやすくなりました.
AI駆動の活用
役割分担は,設計は人,実装はAIというよくある構成を取りました
- レイヤ分割や依存方向は自分で決める
- 実装はCodexに補助してもらう
Clean Architectureを本で学習しましたが,AI駆動と合わせて試行を高速に回せることで,より身についたかと思います.(実際に自分だけで組むとなると,かなり時間がかかったと思います...)
今後について
今回はGW中に短時間で作ったため,
まずは,「依存方向を壊さない」ことを優先しました.
今後は,
- UseCaseの責務
- Portの粒度
- テストしやすさ
も含めて,もう少し設計を詰めていきたいです.
まとめ
これまでClean Architectureを概念として学んだものの実装経験があまりなく実践で上手く活用できていなかったと思います.
ただ今回,Codexによって実装コストがかなり下がったことで,「実際に試しながら理解するもの」に変わった感覚があります.
AIでコードを書くというより,「設計をすぐ実装して試せるようになった」
というのが,今回一番大きかったことでした.
参考文献
- GitHub CI/CD実践ガイド――持続可能なソフトウェア開発を支えるGitHub Actionsの設計と運用
https://www.amazon.co.jp/dp/4297141736 - Clean Architecture 達人に学ぶソフトウェアの構造と設計
https://www.amazon.co.jp/dp/4048930656


