NaClの鈴木です。
東京支社で初めてのインターンシップが開催されました。
何度も開催し成功させてきた本社のノウハウを参考に、なんとか無事に終了しました。
本記事では、東京支社のインターンシップの全体の流れや、参加者の声、開催側の課題や感想についてまとめました。
インターンシップの題材は「Rails Tutorial で作成したWebアプリの機能追加」です。
昨年の本社での開催で、業務に近い題材として実施されたのがこの題材でした。
あらかじめ課題を設定し取り組んでもらうという方法が、改修という業務を体感して頂くのに良いようで、今年度も同様の方法で実施することになりました。
また、支社の開始日を本社と合わせることで、オンラインで繋いでイベントをシェアしたり、交流の機会を設けることができました。
実際のスケジュールは下記のようになりました。
開発作業以外にも、web アプリ開発に必要な前提知識の講義や、ランチ会、Ruby の父まつもとさんとの交流会、TRICK(RubyKaigiで開催される超絶技巧プログラミングコンテスト)の作品の紹介などが含まれます。
開催期間 5日間の内、開発している時間は実質半分ほどでした。
情報共有の為のツールは、Discord を利用しました。常にそばに控えている社員がいた為、支社内でのコミュニケーションは直接行っており、主に本社との情報共有として利用しました。
インターン初日。
まずは自己紹介から実施しました。オンラインで本社のインターン組と繋いで行いました。
オンラインで参加している支社インターン生が 1名だけというのもあり、特に緊張していた様子。
インターンの説明を終え、前田からの会社説明タイム。NaCl についてのお話を興味深く聞いてくれていました。
オンラインでのやり取りを終え支社の施設を紹介した後、出社していた社員みんなと「ウェルカムランチ会」に繰り出しました。支社のある秋葉原周辺は美味しいランチのお店がたくさんあるので、色々食べに行けて良いですねとのこと。たしかにランチの豊富さは仕事のモチベーションアップにも繋がりますよね~。
弊社はリモートワークか出社か勤務形態が選べる為、日毎に出社人数がまちまちなのですが、この日はいつもより多めに人がいた為、ぞろぞろとステーキランチを食べに行ってきました。
食事中は社員の当時の就活事情や、好きなことを仕事にするということの良し悪しなどについて話していたような気がしますが、ステーキが美味しかったです。
ランチの後は開発環境の構築をしました。
環境構築の手順は、ローカルか Docker か VirtualBox の3択だったのですが、今回のインターン生さんの使用 PC が Mac だったことと、実際の開発での利用も多いことから Docker で環境構築してもらいました。
初めての Docker でしたが、Dockerfile や、docker-compose.yml 等、コンテナを立ち上げる為の準備はこちらで用意していた為、コマンドをインストールした後、割と時間がかからずに開発用のコンテナを立ち上げることができていました。
環境構築が 1時間程でできてしまった為、午後予定していた講義の時間までけっこう時間が余ってしまうという事態に。せっかくなので開発を始めてみることにしました。
この時点でまだ Web アプリの開発に必要な前提知識の講義を一切受けていないのですが、HTML はある程度わかるとのことだったので、画面の見た目を変える課題から取り組んでもらうことにしました。
そうこうしている内に、オンライン講義「Web アプリとは」の時間に。
Web アプリってそもそも何?というところから、Rails の MVC アーキテクチャについてじっくり伊東が解説しました。仕組みを知ると、与えられた課題を解決するためにどこを修正したら良いのか? ということのあたりがつくようになるので、大事ですね~。
初日はこれで終了。
Docker? Git? Ruby? Rails? と初めてのことばかりで盛りだくさんすぎてあっという間に過ぎたようです。
インターン 2日目。
オンライン講義「Git/HTML について」からスタート。
バージョン管理の大切さと、Git の簡単な使用方法について加納が解説しました。チーム開発ではかかせない Git ですが、授業では扱わないとのこと。初めての Git の操作にこの後も振り回されることになります。必要性がわかるととっても便利なんですけどね~。
HTMLについてはある程度の知識があった為、HTML の講義はラジオ的に聞かせてもらいつつ、昨日の続きから開発作業に入ってもらうことにしました。
事前に用意した課題は、難易度が「初心者向け」、「やさしい」、「ふつう」、「難しい」の 4つです。今回のインターン生さんは、Ruby も Rails も初めての方だった為、まずは「初心者向け」の課題からやりたいものを選んで改修してもらう流れにしました。
お昼の時間になったので、近くのタイ料理のお店に。
インターン生さんが 1人ということもあり、実は期間中ずっと社員数人と秋葉原ランチに行っていたりします。このタイ料理のお店は数日続けて食べても良いくらい美味しいです。インターンについてや、就職先に求めることなどから、学校での話などをもぐもぐしつつ聞かせてもらったようです。
午後はオンライン講義「たのしい Ruby」から始まります。
普段 Ruby をあまり使っていないもしくは初めてのインターン生さんが多い為、「楽しく Ruby を使っている様子を見てもらう」をコンセプトに、西田がライブコーディングを実施。
1つ1つやりたいことをコマンドで実行していき、成功したらそのコマンドたちをまとめてスクリプトにしていく。少しづつ一括で実行できることが増えていき、最後にイチから一括でスクリプトを実行する。すると、「おーーーー!」となって何やら一体感が生まれていました。西田の人柄もありますが、大変盛り上がっていてライブコーディングはとても良い時間になりました。
その後は2時間ほど開発の時間でした。
初日は開発の時間は合間のちょこっとでしたが、この日から開発の時間がしっかり入ってきます。
私はこの日リモート参加だったのですが、プルリクエストのレビューが 4個ほどきていたのでびっくり。いくら難易度「初心者向け」とはいえ早いなーと思っていたら、出社していた早川が付きっきりで不明点を解消してくれていたようです。参加者 1人だと社員に質問しやすいというメリットはありますよね。
そのメリットを生かしてがんがん質問してくれたようです。
2日目はこれで終了。
課題をこなしていく中で、少しづつ難易度が上がりわからないことが増えてきているようです。あと Git と Docker に振り回されているよう。概念がピンとこないと難しいですよね~。
インターン 3日目。
この日は午後に 「Ruby の父まつもとさんを囲む会」があるので楽しみにしつつ、午前中はごりごり開発をしていきます。
2日目の終盤から難易度「初心者向け」から「やさしい」にステップアップして挑戦してみていましたが、ここの難易度の差が大きすぎるらしく、一旦「初心者向け」の課題をやることに。ただ、「初心者向け」課題はすぐにできてしまう為、やはり少しチャレンジしようということで「やさしい」の課題に取り組んでもらいました。
「初心者向け」と「やさしい」の違いは簡単に言うと複数箇所の修正が必要かどうかです。MVC の構成が頭に入っていないと繋がりがわからない為、修正箇所のあたりがつかないことが難しい要因のようでした。
初めて触る Ruby on Rails です。いくらオンライン講義で習ったといっても、腹落ちしないままだと難しいですよね。ということで、両サイドに布陣した早川と鈴木で手厚くフォロー。1人参加ということで、チーム内で問題解決という経験はできない代わりに、いつでも社員に聞ける環境がここでも功を奏し、「やさしい」の課題もなんとかこの日の内にやりきってくれました。
この日の社員交流ランチ会は高架下の中華のお店。
周辺のランチの中でも、比較的安くてボリューミーなのに美味しいので普段から良く行きます。過去のインターンの話とか、就職とかプログラミングとかぜーんぜん関係ない雑談とかしつつ、午後の作業に向けておなか一杯にします。
午後の開発の合間に待ちに待ったオンラインイベント「まつもとさんを囲む会」開催!
まつもとさんは本社に実際に来てくれていたようで、本社はリアルにまつもとさんを囲んでました(うらやましい!)が、支社はオンラインで参加。Ruby の父になんでも質問できるチャンスなので、たくさんの質問が飛び交っていました。
プログラミング言語を開発するというだけでもすごいのに、それが世界中で現役で使われているというのはものすごいことですよね。神のような存在の方ですが、実はとてもきさくで話しやすい素敵な方です。この「まつもとさんを囲む会」は、実は NaCl で毎月開催している社内イベントの出張版として開催して頂きました。
3日目はこれで終了。
Rails もですが、 まだまだ Git と Docker に振り回されているよう。まだ理解が追い付かないようでおまじないとして唱えているような状態です。
インターン 4日目。
東京支社のインターンの期間は 5日間。明日の成果発表に向けてラストスパートをかけていきます。
この日は講義やイベントなどはなく、もくもくと開発を行っていきます。
これまで実装してきた内容の復習になる課題がちょうどあったので、それをできるだけ 1人で開発してみようとお願いしてみました。初挑戦の難易度「ふつう」ですが、チームメイトもいない中、1人で 1日で開発するにはギリギリの線かな~というところ。
例のごとく両サイドに早川と鈴木が布陣。困ったらすぐに聞けるようにした上で頑張ってもらいました。途中課題の要件を少し間違えていて修正が入ったものの、その時点で動きは問題なく実装できており、成長が感じられた 1日でした。
ちなみにこの日の社員交流ランチ会はまたまたタイ料理。
美味しいと好評だったのでもう一度行っちゃいました。前回行ったときに気になっていたメニューを食べれて満足されていた様子。この日も就職についてやらサッカー日本代表戦についてやらもくもくしながらお話ししました。
4日目はこれで終了。
がっつり開発した日だったので、一番実際のお仕事に近い 1日でした。
インターン最終日。
最後に成果発表会がある為、学んだことを振り返りつつ発表スライドを作成していきます。
最後の社員交流ランチ会はつけ蕎麦のお店。
太くてもっちもちの麺をラー油入りのつけ汁につけて食べるアウトローな蕎麦を食べつつ、この一週間の思い出を語りました。
夕方の発表会の前にとても興味深いオンライン講義が開催されました。
その名も「超絶技巧プログラミング( 「Quine 」 や「 TRICK 」の紹介) 」。
かっこいいですね。TRICK の審査員をしている原が過去に受賞した方々のコードを説明しつつ実行していきました。コードの見た目が美しく、実行結果も芸術的なアートのような作品や、シンプルだけど面白いというものもあり、こういう世界もあるのだなーと皆様感心していたようです。
さて、いよいよ支社の成果発表会。
オンラインで開催したので、出社している社員はもちろんリモートワーク中の社員も集まる中、この 5日間に学んだことや開発作業について渾身のスライドで発表してくれました。インターン生 1人だけということで大変だった部分もあったと思いますが、それ以上にメリットを十分に活用して頑張ってくれたんだなーとしみじみ。
これで最終日終了となりました。
5日間という短い期間の為、初めて触る Ruby や Rails にようやく少し慣れてきたかというところで、終了となってしまいましたが、これを機に Webアプリ開発について興味を持って頂けたらなと思います。
本当にお疲れ様でした。ご参加ありがとうございました!