生成AIを使ってネットワークエンジニアリングを加速することはできる？

# はじめに

本記事は[MIXI DEVELOPERS Advent Calendar 2023](https://qiita.com/advent-calendar/2023/mixi)の23日目の記事となります。
クリスマスも近づきいよいよ年末年始だなという時期ですが、皆様いかがお過ごしでしょうか？
私は株式会社MIXIに所属しているインフラエンジニア @junenu です。
今年の秋からMIXIにJoinをしまして初めてのアドベントカレンダー参加となります。
今回はインフラの中でもネットワークエンジニアの視点から、ここ一年で社会的にも大変話題となっている生成AIの活用について話をしようと思います。

# おことわり

本記事は個人の意見であり、会社を代表するものではございません。

:::note warn
私は生成AIを研究/開発しているエンジニアでもなければ、GPUクラスタを構築/運用しているしているエンジニアでもありません。また、サービス導入を検討する立場でもありません。あくまで１ユーザーの立場としてこの記事を書いております。
:::

# 生成AIサービス

## 生成AIサービスの近況

生成AIサービスはここ約一年、凄まじい速度で一般ユーザーへの普及されてきました。
昨年の11月30日にサービスを開始した「ChatGPT」にはじまり、名だたる企業が生成AIサービスの開発に取り組んできました。
また、その利用は個人だけにとどまらず生成AIを業務でも利用する企業が増えてきました。
MIXIでも入力する情報のルールを設けて利用を促進しております。

### 一般提供しているサービス

生成AIサービスとして「ChatGPT」と「Github Copilot」について簡単に紹介します。

### a. ChatGPT

ChatGPTは自然言語処理を用いた会話型AIで、テキスト、画像、音声を使ってユーザーの質問に対して人間のような回答を生成するものです。
無料でもユーザー登録さえすれば利用できます。（2023年12月時点）

- **機能**:
  - **テキストチャット**: ユーザーはテキストを通じてChatGPTに質問し、アドバイスや情報を得ることができます。
  - **画像を使ったチャット**: 画像を見せてチャットを開始し、画像関連の問題を解決する。
  - **新しい画像の生成**: 描写を通じて新しい画像を作成。
  - **音声によるチャット**: 音声を使ってChatGPTとの往復会話が可能。
- **プラン**:
  - **無料プラン**: GPT-3.5アクセス、定期的なモデルアップデート、ウェブ、iOS、Androidアクセス。
  - **Plusプラン**: GPT-4アクセス、画像と音声を使ったチャット、画像の作成、カスタムGPTの使用と構築。
- 詳細: [ChatGPTの公式サイト](https://openai.com/chatgpt) (情報は公式サイトより)

### b. GitHub Copilotについて

- GitHub Copilotは、コードを自動生成するAIアシスタントで、プログラマーの効率を高めることを目的としています
- 費用は月額10\\$です。1\\$が140円としても、1400円ほどで利用できます。
- 詳細: [GitHub Copilotの公式サイト](https://copilot.github.com/) (情報は公式サイトより)

例えば、以下の例で私は一行目を書いただけなのですが、
Github Copilotが勝手にコーディングしてそれらしいコードを書いてくれます。

![zentai.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3616227/725c19e4-45d0-b869-272e-00fec66d7fee.png)

こんな感じでコードを提案してくれてそれを承諾するかはこちらで意思決定できます。

![teian.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3616227/40a03f7e-a378-0311-d6c4-a94a6ec51447.png)

もちろん動きます。

![jikkou.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3616227/fc32603d-bb34-3f4b-4b88-1b1dcee0fe01.png)

Github Copilotは一般的な情報だけでなく、自分自身が過去に書いたコード、GitHubならリポジトリのコードを学習してくれます。
そのため、体感ですがより自分自身が求める情報を提案してくれる可能性が高いです。

## 個人的な活用法

続いて、個人的な活用方法に関してご紹介します。
個人的には上記の二つのサービスを有料サービス開始から利用しています。
たとえば以下のように利用しています：

### 日々の献立作成のアドバイザー

食事の計画は時に頭を悩ますものですよね。
私はChatGPTに冷蔵庫にある食材を入力し、その食材を使った献立を提案してもらっています。
私の食材リストを元に、美味しく、栄養バランスのとれたメニューを提案してくれます。
足りない食材があれば、それをリストアップしてくれるので、買い物も効率的になります。
余計なものを買わなくなって、日々の買い物量は減った気がします。
ただし、酢の物が好きみたいで週2,3は酢の物になっています。

### 学びのパートナー

コーディング学習やスクリプト作成においても、ChatGPTは大いに役立ちます。
分からないコードの構文やアルゴリズムについて質問すると、AIは丁寧に解説し、例を挙げてくれます。
さらに、簡単なスクリプトの作成を依頼すれば、それをサクッとコーディングしてくれます。

### 感じた良い点/そうではない点

#### 良い点

- あんまり考えなくていいこと（ルーティン作業）をしなくて良くなった
    - それが私の中では献立作成
- コード開発が相当楽になった。

#### そうではない点

- **情報が一次ソースではない**
- 学習するのに必要な脳というか、思考の部分を使わなくなった
    - 0から1を学習するのに使い過ぎないほうがいい
    - 適度に適度に利用することが重要

## ネットワークエンジニアが生成AIを活用する方法

タイトルのネットワークエンジニアが利用する場合の話をします。
正直、あまり浮かばないですが・・・・
ネットワークエンジニアで言うと

- ネットワーク作業効率化のためShellScript作成など
- 簡単なIaCに関するコード作成
- logを入力して解析してもらう
- 規格を表にしてまとめてもらう
    - たとえばプロトコル番号のまとめを作って欲しいなと思って聞いてみると

```
ネットワークプロトコルの主要番号と名前と簡単な説明を添えてmd形式の表にしてください
```
以下のような表を作ってくれる

| Protocol Number | Name | RFC       |
|-----------------|------|-----------|
| 1               | ICMP | RFC 792   |
| 6               | TCP  | RFC 793   |
| 17              | UDP  | RFC 768   |
| 47              | GRE  | RFC 2784  |
| 50              | ESP  | RFC 4303  |
| 51              | AH   | RFC 4302  |
| 89              | OSPF | RFC 2328  |
| 112             | VRRP | RFC 5798  |



あっているのか調べてみる・・・
[iana](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)のサイトをみるとTCPのリファレンスRFCは古そうなので、もう一回聞いてみます。

```
https://www.iana.org/as signments/protocol-numbers/protocol-numbers.xhtmlの
サイトを参照して最新情報にアップデートしてください
```

ChatGPTに何度か「サイトを自分で見てねって」とごねられましたが、表をアップデートしてくれました

| Protocol Number | Name | RFC |
|-----------------|------|-----|
| 0 | HOPOPT (IPv6 Hop-by-Hop Option) | RFC 8200 |
| 1 | ICMP (Internet Control Message Protocol) | RFC 792 |
| 6 | TCP (Transmission Control Protocol) | RFC 9293 |
| 17 | UDP (User Datagram Protocol) | RFC 768 |
| 47 | GRE (Generic Routing Encapsulation) | RFC 2784 |
| 50 | ESP (Encapsulation Security Payload) | RFC 4303 |
| 51 | AH (Authentication Header) | RFC 4302 |
| 89 | OSPF (Open Shortest Path First) | RFC 2328, RFC 5340 |
| 112 | VRRP (Virtual Router Redundancy Protocol) | RFC 5798 |

これでianaのサイトの内容が反映されました。



## 構築実践編（しようと思いましたが心が折れました）
### Arista vEOSを利用してEVPN-MPLSの設定をしてもらいます
- 自分でドキュメントは読まない縛り
- 詳細な設定要件を伝えてconfigrationを考えてもらいました
- 設定要件
    - 構成はLeaf2台でspineを挟む構成
    - leaf1 ---- spine ---- leaf2
    - 機器のIPアドレス（et1/2,lo0）
    - アンダーレイのIGP（OSPFv2,network broadcast,lo0を広報）
    - bgpの設定方法　
    - などなど
- 詳しめに要件は伝えてみました
- 結局、構成は実現せずでした（しばらくしたら再チャレンジしてみます）
- バージョンによるコマンド差分で結構苦労されていました
- 私のプロンプトエンジニアリング力不足でした

## 総じて私が感じた強い点とそうではない点

### 強い点

- いってることが正しいかというのはあるのですが、トレンドな技術とか全くゼロの知識を補うにはとても有効だなと感じました
- 新しい技術など学習しようとすると、RFCを読むとか人によってはハードルが高いと思うのですが、そのハードルを乗り越える足場を作ってくれるのが生成AIだと感じました
- 文章やコードを要約して説明する力がすごい！！！素直に感動

### そうではない点

- 生成AIはどうしても「問題」にぶち当たってから人間が解決策を得るための時間がかかってしまいます。そういう意味では、緊急対応時の瞬発力は弱いです。
- 頼り過ぎてると自分自身の瞬発力がなくなっていってしまうのではないかという危機感もあります。
- 特に学びはじめの0から1を作るときに生成AIを使い過ぎて自分で考えることを怠ると、成長の速度が遅くなることもあるかなと感じています
- 生成された情報を噛み砕いて理解できるようにならないといけないなと
- コード学習などにしても、なぜそのコードが動作するのかを突き詰めて理解することが大事だなと思います

## 今後の活用方法の期待
- 一般的なサービスではなく企業に１つLLMな時代が来てクローズドなAIサービスができることを期待しています。
- ネットワークエンジニア的な視点だと、運用や作業中にAIが自分でshellでsshしてNW機器にloginして情報を取得してくれる。障害中であれば、対応策を提案してくれたり、現在の状態から設計書を作ってくれる未来を期待しています。
- IaCの限界にAIが挑戦してくれるのではないかなとワクワクしています

## 最後に
- 今回は生成AIとネットワークエンジニアリングについてお話をしました。
- 今後、AIが今の我々の仕事を担うことでビジネスがどんどん加速していくことを期待しています！！！！
- それと同時にAIだけにたよらず我々もうまく付き合っていくことがどんどん大事になっていくなと思いました。