見出し画像

【VRChat】たった1ヶ月でITブートキャンプを立ち上げ?!舞台の裏側を公開します!!(後編)


はじめに

本記事は前編、中編をベースに話を進めています。まだこれらの内容を読まれていない方は、ぜひとも伴わせてお読みください!

前編

中編



TL;DR

  1. カリキュラムは、座学用のスライドとハンズオンを用意する

  2. リモート環境とAWS環境を構築する

  3. 講座を実施して、その後はアンケートを取ろう



ITIB2024の裏側(後編)

カリキュラムの作成

講座のためのスライドを作成していきましょう。
講座の最終的なゴールとしては「Webインフラを理解し、構築できるようにする」を設定しました。Webインフラは、ITインフラのなかでも一般的で、かつそれぞれのサーバ同士が連携するインフラの仕組みも把握できるため、基礎を網羅するというのにうってつけの内容と判断し、採用しました。

最終的に作成したカリキュラムの内容は以下の通りです。
1日目
0. オリエンテーション
1. ITインフラ入門
2. ネットワーク基礎
3. サーバ基礎
2日目
4. サーバ応用
5. データベース基礎
6. Webアーキテクチャ基礎
3日目
7. 仮想化技術基礎(VM)
8. 仮想化技術基礎(コンテナ)
9. クラウド基礎

個人的に残念に感じる部分は、セキュリティについて学習する機会がなくしたことです。「やりたいし、おそらくやるだろう」と説明会では口頭で説明していました。全体のバランスを考え、もっと洗練させればできたに違いないと思いますが、今回はかないませんでした。ここはITIB2024の課題だと感じます。

それぞれの講座(『0. オリエンテーション』以外のこと)は、座学とハンズオンを用意することで、座学で学んだ内容をハンズオンで実践する形式としました。座学とハンズオンについてそれぞれの作成の仕方についてみていきたいと思います。

まず。それぞれの座学の講座を作成する手順は以下の通りです。
1. 構成: 設計部分。Notionに目次の大、中、小見出し、要素を並べます
2. テンプレート: スライドのテンプレを用意しここにテキストを載せます
3. テキスト: 肉付け。スライドの見出しごとにそれぞれ文章をつけます
4. 図解: テキストに対して図解、イメージを足して補完します

理想としては、それぞれの段階でレビューをはさむことです。ITIB2024では構成はちゃんとレビューできましたが、それ以降のテキストや図解のフェーズについてはレビューをはさむことができませんでした。
これは時間的計画が破綻していたからもはや仕方のないことでした(そもそもの結論として、1ヶ月でITブートキャンプを実施するのは無謀)が、それでも少なくとも構成だけはちゃんとしたものを作るべきです。
比較的まともな『1. ITインフラ入門』について、工程に沿って紹介します。

『1. ITインフラ入門』の構成
Notionで作成した構成のスクショを載せておきます。
ここにたどり着くまでにいくつかの参考文献を持っておくといいと思います。具体的な仕様用途としては「この講座では、これとこれとこれの目次を参考にしてみよう」といった形で構成をつくるうえでの指針となります。

『1. ITインフラ入門』の構成

ちなみに、構成の作成に関しては以降の工程と完全にパーティションを分けて、独立したタスクとして切り出すことができます。なので、構成だけ全部作って、それ以降の作業を進める、もしくは並列的に構成を作る人とテキストを作成する人をわけることが可能です。
ただし、大前提として教材の最終的なクオリティをどこまでのものとするかをチーム内で共有し、絶対に妥協しないことを決定する必要があります。そのコンセンサスを取れてない場合は、結局満足いく最終成果物は完成しないと考えます。なので、このチーム内でのイメージ共有は必須です。

ITIB2024のスライドのテンプレート
ITIB2024で作成したテンプレートは以下の通りです。
表紙に大見出し(講座のタイトル)を置き、各ページに中見出しと小見出しを配置するイメージです。また、必要に応じて、テンプレートにアレンジを加えてテンプレートを豊富にしていきましょう。

ITIB2024のスライドのテンプレート

ここで作成したテンプレートは、今後使いまわします。なので、スライドの作成に関してはFigmaでなくてもOKです。ITIB2024のスタッフがFigmaを使ったことがなく、Canvaを使っていたといったこともあり申し訳なさがありました。
むしろ、GoogleSlidesなど比較的誰もが使ってことのあるツールがいいと思います。かりにGoogleSlidesであれば、導入も比較的楽で、おそらくチーム内で心理的コストがかからず、しかも無料でテンプレートを配布されているのでおすすめです。そして、何かしらのツールを導入する場合は、予算なども念頭に置く必要があります。忘れてはいけない要素です。
結論として、チームで使用するツール類はそもそも独善的であるべきではありません。教育コストが多少掛かることを前提に踏まえつつ、チーム内でコンセンサスを取りながら、どういった形式、データ、ツールで最終成果物を作るのかを決めていくことをおすすめします。逆に、これが決められない状態で生産体制の確立は無理なのです。

『1. ITインフラ入門』のテキスト&図解

『1. ITインフラ入門』のテキスト&図解

テキストと図解は、画像のようにして作成しました。
スライドを作れば分かるので、こまかな説明は避けますが、これらのスライドはPDFにエクスポートして、PDF to MP3の変換ツールに掛けて、YouTubeにアップロードして完成します。

最終的にはYouTubeの動画は限定公開にしてリンクをチーム内で共有して流せるようにすれば、その講座の座学の準備は完了です。YouTubeチャンネルに登録したスライドの資料は以下のようになります。

ITIB2024で作成した動画用のスライド

これらのスライドはSlidenのようなワールドギミックを利用することで、VRChatで閲覧できるようになります。

ハンズオンの作成
座学の講座を作成できたら、今度はハンズオンの準備です。
ハンズオンは比較的自由度が高いですが、座学を振り返りできる、もしくは座学を応用できる内容が好ましいです。
以下に『1. ITインフラ入門』の実際のハンズオンを例として示します。
ハンズオンの内容によって異なりますが、基本的には実施する内容と、回答例を用意しておくとよいかと思われます。(回答のなかには、著者のWindowsのOS環境の内容が含まれるため今回の例では含みません)

ハンズオンの作成

また、ハンズオンで使用したソフトウェア、ツールも紹介しておきます。生徒さんには「ハンズオンではこれらのツールを使うから、事前インストールしたり、登録しておいてください」と伝え、個別に実施していただきました。
()内に補足を付記しています。

Wireshark
Tera Term
WinSCP
VSCode
VMWare Workstation Player
AlmaLinux(ダウンロードのみ)
WSL2
Docker Desktop
Zero Tier One(VPNへのアクセスのため)
Docker Hubへの登録(Docker Desktopの利用のために)

ITIB2024で使用したツール

ソフトウェア、ツールの準備が上手くいった背景としては、生徒さんが勉強熱心のおかげで、運営スタッフがわざわざ導入の説明を個別にする必要が無かったりしたのもとても大きい部分かもしれません。

カリキュラムの作成について以上になります。


リモート環境、AWS環境の作成

今回、カリキュラムの内容を見れば分かりますが、リモート環境を構築する必要がありました。具体的には『03. サーバ基礎』、『04. サーバ応用』、『05. データベース基礎』、『06. Webアーキテクチャ基礎』で必要でした。

ここではITインフラ集会のメンバーにお願いして、こちらで用意したWindows ServerのHyper-V上にリモート環境の構築を依頼しました。

以下の要件で仮想マシンの構築をお願いしました。ちなみに、余談ですが、Hyper-Vは仮想マシンをvCPUでパーティショニングしてません。おそらくできるんだとは思いますが、それは意外な気づきでした。

CPU: 1vCPU
メモリ: 2GB
ディスク: 40GB
OS: AlmaLinux9.2 もしくはUbuntu22.04

最初のUbuntu起動してZeroTier Oneをインストールしたマシンのスナップショットを取得して、複製した6台ずつ計12台をA日程とB日程で使い倒す感じ。A日程終了後は、さっさと仮想マシンを削除できるようにしたい。 サーバとネットワークは、ぼくの方で提供する。

ホストにインストールしたZero Tier OneとVPNを張る形で外部から作業できるようにしたいと思ってるんだけど、この辺の実現方法を考えたい。

・検討してる方法
Windows Serverがすでに2台いるから、Hyper-Vで構築するか。
Proxmoxを2台インストールするか。

ハードウェアはこれ(4コア、16GB、4TB) https://h50146.www5.hpe.com/products/servers/proliant/system_old_pdf/tm200.pdf

最初にスタッフに依頼したときの要件

結果的に以下のような構成で完成しました。

ITIB2024で構築したリモート環境

done_sanが用意した物理サーバ、Windows Serverが下のLANに構築されていて、Windows ServerにStaffがつなげるようにしたら、あとはStudentが接続できるように構築してあげる感じです。そこまで複雑ではありません。

あと、仮想基盤としてはWindows Serverである必要はどこにもないですね。単純にすでに構築されていたのがWindows Serverという話です。そして、全体としては作業用のVPNの接続環境と生徒が接続できるVPN環境を用意してあげればいいというイメージです。それぞれ赤い線と黄色い線でトラフィックを分けて描きわけています。

作業の流れとしては以下の通り。
1. Windows ServerにVPNクライアント(ZeroTier)をインストール
2. VPNネットワークの作成
3. スタッフ用のローカルのOSユーザを必要な権限を振り分けて作成
4. OSユーザの認証情報と接続先のIPアドレスを共有
5. VPNでWindows ServerへのPing疎通とRDP接続の確認
6. Hyper-V上にゲートウェイサーバとリモートサーバの構築(Ubuntu)
7. VPNサーバにゲートウェイサーバ向けのスタティックルーティングの追加
8. リモートサーバへのPing疎通とSSH接続の確認

6については、Hyper-V上の仮想マシンの構築はcloud-initで自動化したようですが、この実装はITインフラ集会のメンバーに任せていたので、ぼくは正直よくわかってません。よしなに構築してくれました(いや、普通に最強すぎる)。ちゃんと動くシステムとして機能したのでマジあっぱれです。

念のため、Hyper-Vマネージャーの中身も公開します。

Windows Server上のHyper-Vマネージャー

Ubuntu-Bastion-2023-12-27_17-10-01がゲートウェイサーバとして、その他のUbuntu-Students-yyyy-mm-dd_hh-MM-ssのサーバとのルーティングを担っています。あとは、ゲートウェイサーバは一応DHCPサーバとしての機能も設定しています。

次はAWS環境の作成です。AWSアカウントはすでに作成していたので、そこにITIB2024の生徒用のIAMユーザーを作成することにしました。

ITIB2024グループのユーザー
ITIB2024グループのポリシー

作成する手順としては以下の通りです。
1. IAMグループの作成
2. IAMグループへのIAMポリシーのアタッチ
3. IAMユーザーの作成とIAMグループへのアタッチ
4. IAMユーザーのログイン確認

リモート環境、AWS環境の作成については以上となります。


配信環境のテスト

ITIB2024では、生徒さんの学習環境として2通り用意しました。1つはDiscordサーバでYouTubeのライブ配信で、もう1つはVRChat上でデスクトップで直接講座を受けることの2通りです。
YouTubeライブでの配信は学習環境を多様化するだけではなく、配信コンテンツをそのままアーカイブとして残すことができるので、何かあったときに便利だと考えた次第です。
OBSとVRChatのカメラを利用してYouTubeで配信ができるかどうかを事前にテストし、確認しましょう。ちなみに、今回はdone_sanは講師として登壇し、ITインフラ集会のメンバーに配信をお願いしました。


講座の実施

講師は今回はdone_san一人だけでしたが、別に一人で抱え込む必要も無いなと思います。ただし、全体のクオリティを安定させる必要があるという点には注意が必要です。全体でムラがあってはいけないと考えます。むしろ、生徒さんが一番価値を感じる部分は、実際に受けた講座の内容なので、ここで妥協してはいけません。

講座は、座学とハンズオンという形で進めていきましょう。ただ、実際のところ、準備不足のためにA日程とB日程とで、できたこととできなかったことがあります。この部分についてITIB2024の課題だなと感じています。


アンケートの取得

最後、実際に講座を受けてもらった感想などを、そのレビューを生徒さんからアンケートという形で受けましょう。アンケートは、特に『自分が提供したかった価値をちゃんとユーザーは感じたか』と『よかったところと改善できる余地』にフォーカスを当てています。アンケートの内容をPDFファイルとしてお渡しします。


ITIB2024の裏側という内容は以上です。
おまけとして振り返り、反省について見ていければと思います。



振り返りと反省

まず最初に言えるのは、先述しましたが1ヶ月でブートキャンプをやろうというのは無謀です。準備期間で3週間程度、講座で1週間程度という形で詰め込みましたが、本当はもっと時間を取るべきだったと思いました。
以下の通り、タスクの一覧シートを作成しましたが、途中からもはや機能していませんでした(なお、作成する時期が遅すぎたことも起因しています)。

ITIB2024のタスク一覧シート

大きな反省点としては、意思決定とアクションとチームビルディングとマネジメントをdone_san一人が担っていたことです。ハッキリ言って、組織としての体を成してなかったのが実態です。これは自分の力不足としか言いようがありません。

個人的にこのITIB2024について点数をつけるとしたら、『50点』という評価になります。A日程、B日程を最後までやり切れたという点については評価をしますが、それ以外のチームの生産体制の確立や、ハンズオンを含めたカリキュラムの品質、マネジメント不足といった課題が山積していました。

そのためなのか、done_san一人にタスクが集中して分散化できなかったことで、最終的にはITIB2024以降に体調を崩す羽目になったりしたので、本当自分の基礎的なプロジェクト進行能力のなさに落胆ですね。

正直言えば、余裕も含めれば3ヶ月は欲しいプロジェクトでした。もしこれからITIB2024の後釜のようなものがあるとしたら、そこの部分をしっかりやるともっとよくなる、と感じています。1 -> 10、10 -> 100というスケールのフェーズにおいては、個人の力では回りきらない部分がでてきます。なので、組織としての生産力をあげていく必要があると感じています。



おわりに

これまでITIB2024におけるITブートキャンプの立ち上げについての構造を見てきました。改めて、今回ご協力いただいたすべての方々に感謝申し上げます。done_sanは能力不足なところも多いとは思いますが、楽しい時間を過ごしていただけたなら幸いです。

それでは、本シリーズの最後の総括として、以下の図を残しておきます。

ITIB2024の全体像(理想)

以上


この記事が気に入ったらサポートをしてみませんか?