はじめに
皆さん、逸般の誤家庭ライフを満喫してますでしょうか?
自宅に検証環境があるというのは、エンジニアにとって大変喜ばしい事だと私は思います。
かくいう私も、最初はミニPC1台とルーター1台のスモールスタートで始まった誤家庭ライフが、今ではそれなりの規模まで育ち運用してます。
ですが、継ぎ足しで大きくなった誤家庭の問題に直面し、この度システムとNWを大更改をするに至りました。
ただ、黙々と更改するだけでは面白くもないし、何か新しいことにも挑戦したい、ノウハウを共有したいと思い、更改完了までの一部始終を投稿しようと思いました。
いつまで続くか分かりませんし、私自身が知識不足なところもございますが、興味を持って下さった方は暖かく見守ってくれますと幸いです。
目次
問題点の洗い出し
現場、自宅ともにシステムや構成を更改するということは何かしらの問題を抱えているということ。
冒頭でもお話しましたが、私の誤家庭でも致命的な問題を抱えてます。
まずはこの問題を洗い出し、スコープを明確にしなければ、結局は設計漏れや更改中の手戻りにつながるリスクが高まります。
なので、今回の更改プロジェクトを進めるために今抱える問題点をリストアップしました
問題点
他にも小さな問題は残ってますが、今回は致命的な問題を対象にリストアップし、改善させます。
構成管理が全くされていない
私の誤家庭は継ぎ足しで大きく育ったのですが、実は構成図はどこにも存在しません。そのため、どの機器が、どのスイッチの、どのポートに繋がっているかを調べるために、LANケーブルを追いかけたり、実機に入ってmacアドレスを調べたりと機器を1台追加するだけでも途方もない調査が発生してます。
正直、いつループが発生して、NWが全滅しても可笑しくない綱渡りの運用が続いてました。
アドレス、ドメイン管理がされていない
構成管理がされていないということは、IPアドレス、ドメインも全く管理されてません。新しいサーバを立てたら、IPアドレスが重複するなんて当たり前。重複する度にルータからARPテーブルを確認し、どのIPアドレスが使用されているか調べてました。
一時はこのIPアドレス問題を解決しようと色々試したのですが、全く改善できずに終わりました。
ドメインについても同じで、特に私の誤家庭では半年に一回ペースでDNSサーバが更改されるという凶器の時期がありました
※この時期にADやFreeIPAサーバ、Bindなど多くの製品に触れたので、後悔はしてません。
更改する度に既存のドメインが失われる、存在しないサーバのドメインが未だにzoneファイルに残り続ける等、収拾のつかない事態に現在は陥ってしまいました。
セキュリティ的に脆弱
つい先日、私にも個人でサービスを外部公開するという一つの節目を迎えました。公開サービスを持つということはエンジニアにとって大きな学習材料のため、大変喜ばしい事ですが、我が家にはなんとFWが存在しません。
また、一時期はクライアントPCが公開サービスと同じNW所属しているとかいうわけの分からない事になってました。
幸いにして、cloudflare様の有難いサービスで今のところは被害は出てませんが、自宅のセキュリティ対策をしっかりと整えてから、公開するべきでした。
他環境になぜか検証環境のサーバが存在する
上記の3つに比べれば、かわいい問題ですが、先日VMの整理をしていたところ、存在してはいけないセグメントに検証VMが存在するという珍事件が発生してました。幸いにして、大きなトラブルには繋がりませんでしたが、私は検証で一時的に自宅内のサービスをサービスを検証環境に向けるとかいうことをやっていますが、もしかしたら現在稼働しているサービスも実は検証中のサービスが混じっているかもしれません。
ChatGPT_Workについて
私、実はopenAIのplusプランに加入しているのですが、毎月ほとんどトークンを使用せず、無駄に献金をしている状況でしたので、今回、誤家庭を更改するにあたり、優秀な助っ人としてChatGPT先生にご協力いただきました。
久々にChatGPT使用したところ、なんとChatGPTのデスクトップアプリが大きく様変わりしており、Codexとは別にChatGPT Workなるモードが追加されているではありませんか!?
新しいものを使わないのは勿体ないということで、まずはChatGPT Workについて簡単ではありますが調べてみました。
- OpenAI公式情報
ChatGPT Workとは
ChatGPT WorkはCodexと違い、調査やドキュメントを作成などの実務に特化したAIってことですね。
今回は要件定義書、基本設計書、詳細設計書などのドキュメントをしっかりと残してプロジェクトを進めていく予定ですので、私にぴったりのサービスです。
なので、要件定義書、基本設計書はWorkに一任。詳細設計書はcodexに任せるのがよさそうです。
実際に要件定義をやってみた
前置きはここまでにして、実際にChatGPT Workさんを活用して要件定義書を作成してみました。
ここでは、私がどのような手順で作成したかを説明します
-
プロジェクトフォルダを作成する
今回のプロジェクトフォルダをChatGPTに作成させます。
私は1つのagentに全てを任せるのではなく、それぞれの分野で専門のagentを作成し、役割を明確に分けることを意識しました。プロンプト* NWエンジニア NWに関する作業を担当する。 * サーバエンジニア サーバのセットアップに関する作業を担当する * セキュリティエンジニア 設計対象のセキュリティ関する作業を担当する * PM 各エージェントの成果物をRv、私とのヒアリング、各エージェントへのタスク振りを担当する * 共有フォルダ 各エージェントが収集した情報、ログを格納する簡単ではありますが、これでも一応それなりのプロジェクトフォルダを作成してくれます。
最終的に完成したフォルダツリーは下記になりますフォルダツリー├─.agents ├─.git ├─エージェント │ ├─NWエンジニア_エージェント │ │ ├─作業ログ │ │ └─成果物 │ ├─PM_エージェント │ │ ├─作業ログ │ │ └─成果物 │ ├─サーバエンジニア_エージェント │ │ ├─作業ログ │ │ └─成果物 │ ├─セキュリティエンジニア_エージェント │ │ ├─作業ログ │ │ └─成果物 │ └─共有フォルダ │ ├─タスク │ ├─レビュー │ ├─ログ │ ├─収集情報 │ ├─回答済み原文 │ ├─回答表 │ └─質問表 ├─構成図 └─要件定義書 ├─old └─回答表
-
壁打ち
まず、私が洗い出した問題点をベースに要件定義書のサンプルを作成させて、各エージェントが不足している情報を私への質問としてリストアップさせます。
PMエージェントは各エージェントからの質問をまとめ、重複している質問がないかを確認、複数回答の必要な質問がないかを整理し、必要に応じて質問表という別途資料を各エージェントに作成させます。
最終的に質問がまとまった段階でPMエージェントから私に回答依頼が来て、私がその質問に答えるという流れを繰り返しました。プロンプト回答リスト.mdを更新した 以下のタスクを実行して * PM * 回答リスト.mdを確認し、各専門エージェントは回答内容を連携 * 各専門エージェントの質問内容をリストアップ * 各専門エージェントが修正した要件定義書をRv * 専門エージェント * PMから連携された回答内容を確認 * 回答内容をもとに要件定義書を更新、PMへRv依頼 * RvでPMからの修正依頼があった場合は対応 * 質問事項がある場合はPMへ報告合計で20個以上の質問に回答した結果、それなりに満足する要件定義書が完成しました。
-
AGENTS.mdの更新
プロジェクトを進めていくにあたり、最初の作成した条件では上手く回らない箇所が多々ありました。
そういう時は都度、AGENTS.mdの更新を依頼することで、後続の作業がとても楽になります。
反省点
なんとか要件定義書の作成まで完了しましたが、思いのほか反省点があったので、リストアップしておきます。
- プロジェクトフォルダの作りが雑だった
何事も最初が肝心ということを身をもって学びました。
それぞれの専門のエージェントを作成するというのはよかったのですが、それ以外は丸投げで作成した結果、各エージェントにプロジェクトのルールが浸透していなかったため、途中で何度もagentの更新が入ってしまった。 - ログが残ってない
これはルール決めが甘かったらではありますが、エージェントがどう判断したかをログに残すことで、エージェントの更新につながります。
このログが最初は取れていなかったので、エージェントをどう更新すればよいか調査するのに時間がかかってしまった - プロンプトが抽象的過ぎた
これは基本設計書を作成してく中でようやく気付くことができたのですが、作業指示のプロンプトが抽象的過ぎました。このせいで、本来は各エージェントが調べれば解決する質問も私に飛んできてしまい、私自身のタスクが増えるという、本末転倒な結果になってしまった
おわりに
長文にはなりましたが、要件定義編は以上になります。
AIを活用したら楽にできるだろうと思っていた私ですが、実際はAIを使いこなせておらず、使われる側に回っていたのがよくなかったです。
皆さんもAIを活用するときはしっかりとルールを決めて、何をさせたいかを明確にした上で指示を出すとよいと思います。