#2 プロジェクトファイル
とりあえず、AI時代に最適なプロジェクト管理について
さて、AIについての概要は理解しました。しかし開発するにも最初は環境がなければ始まりません。AIを利用する前提で開発の環境を整備していきたいと思います。まずは兎にも角にも、プロジェクトファイルをどのように管理するかです。ただのファイル共有では、間違えてしまった時に再度ソースの書き直しになってしまいます。これはAIであっても同じなので現代ではバージョン管理とプロジェクト管理は切っても切り離せません。
昔は、ただのファイル共有(NFSやNetBIOS)で開発は始まり、その後 CVS(1990年〜) → VSS(1995年〜) → Subversion(2000年〜) → Git(2010年〜) と進化してきました(表示した時期はおおよそ)。自分もその度に環境を整備して利用できるように準備を行いましたが、昔はこの自分でリポジトリ(プロジェクトファイルを保存管理して更新履歴なども一括管理できる単位)環境をインストールからやったり購入したり大変でしたが(プロジェクトファイルのバックアップ環境の構築もセットで)、今では GitHub 一択でしょう。(無料ですからw)
【GitHubについて】
以前、GitHubでは Private Repositry が無料の場合1つに制限されていたが、現在は無制限になり、またGitHub Action も月間2,000分まで、データサイズは500MBまで無料。
いや、素晴らしいですね。良い時代になったものです。もちろん、docker上で gitea コンテナを起動して、ローカルで git 環境を作るのもありです!自分は、CI/CD を使わなくサイズの大きいものは 手元の ローカルサーバーで管理しています。
<その、CI/CDとは何?>
AI時代の駆動型開発およびコードレス開発において重要な思想。過去の時代は、SA(システムアナリスト)が業務を分析し要件定義書を纏め、SE(システムエンジニア)が仕様書とテスト要件を作成し、PG(プログラマー)がコードを書く時代(ウォーターフォール型とも呼ばれる)とは、隔世の感があります。前のフェーズに戻る事が非常に高コストだった時代を反省し、小さく作って大きく育てる開発手法。一応、単語の説明もします。
- CI: Continuous Integration (継続的インテグレーション)
開発者がコード変更を頻繁に共有リポジトリへマージし、自動ビルドとテストを実行するプロセス
- CD: Continuous Delivery&Deployment (継続的デリバリー)
CIでテストされたコードを、いつでも本番環境へ手動でリリースできる状態に自動化する手法、または本番への反映(デプロイ)まで自動化する手法。
簡単に言えば、画面や動作を確認しながら少しづつ仕上げていく方法です。以前はアジャイル開発(機敏開発)や、DevOps(Development(開発)+Operations(運用))と呼ばれた手法もありましたが、それよりもスピーディーな印象がある開発手法です。まさにAIとの組み合わせに最適。
そこでAI時代では、もう一つ重要な概念があります。GitOpsです。
<GitOpsとは>
Git のリポジトリーを中心とした開発手法です。全てのインフラ定義やアプリ構成、サーバーへのソース更新(Deployと呼ぶ)などすべての情報を、履歴管理できるようにして、開発から運用までをロールバックできたり、更新の履歴などが見れる、言われてみれば当たり前の概念です。ただ、この当たり前を指針として、プロジェクトすべての情報が集約されるというのは開発効率において大きく貢献し、障害発生時の耐久性や早期再起動に非常に効果があります。
AI時代のGitHubの注意点。前にも説明した通り、AIは個人ユースでは常にユーザーとの会話を学習のネタに使っており、機密情報(パスワードや権限譲渡のTOKENなど)は GitHub Secret を使い、他のサービスにログインする場合のため安全の確保が必要です。また github 自体の操作も、github コマンドで予めログインしてからAIにタスクを任せるのがよいでしょう。
ダメ事例
$ git clone https://{user名}:{Token}@github.com/{UserID}/{repositry名}.git
GitHub では、こんな指定方式を使いますが、これでは TOKEN駄々漏れです。必ず先に auth login などでログインして認証情報を git コマンドに入れずに済むようにしておくべきです。ちなみにこれをやると、remoto先にこのtokenも登録され見放題になりますので、最初に人間がこのコマンドを打っておけば大丈夫とか思ってはダメですよ。
さて、とりあえず GitHub でのアカウント作成や clone などは他のサイトが沢山あるので、ここでは割愛します。まずは自身のrepositry(プロジェクトファイル一式)が作成できました。