Opt Technologies Magazine

オプトテクノロジーズ 公式Webマガジン

JavaScriptではじめるプログラミング初学者向けインターンを開催しました

初学者向けインターンの様子

初学者向けにプログラミングを体験するインターンを開催したので、その様子についてレポートします。

あいさつ

中西)
こんにちは。今回のインターンで1日目のサブ講師を務めた、オプトテクノロジーズ エンジニアの中西(@yukari-n)です。
今年の春に新卒入社し、現在は広告配信に関わるプロダクトの unis/Feed Terminal チームで Scala などを使っています。
入社前は大学院で物理を研究していて、 JavaScript は入社してから学び始めました。

中原)
こんにちは、同じく新卒エンジニアの中原(@hey_cube)です。
今回のインターンでは2日目のサブ講師を務めました。
現在はSpinAppというツールの開発チームで Ruby on Rails を使った API を書いたり React / Redux を使ったフロントを書いたりしています。
学生時分にアルバイトでアプリの管理コンソールを作っていたこともあり、 JavaScript は入社前からちょっとだけ経験がありました。

インターンについて

概要

中西)
10月6日・7日にJavaScriptではじめるプログラミング初学者向けインターンと銘打って開催した今回のインターンは、オプトテクノロジーズ初の未経験者向けインターンです。
2020年卒の学生さんを対象に、 JavaScript でのプログラミングを体験していただきました。

タイムスケジュール

中原)
タイムスケジュールはこんな感じでした。

1日目

時間 作業
10:00 集合
10:00~10:20 前説と会社紹介
10:20 講義開始(適宜休憩)
13:00~14:00 お昼休憩
19:00 講義終了
19:30~19:40 締めのあいさつ
19:40 解散

2日目

時間 作業
09:45 集合
09:45~10:00 自己紹介
10:00~10:30 やることの説明
10:30 作業開始(適宜休憩)
13:00~14:00 お昼休憩
18:30 作業終了
18:30~18:50 締めのあいさつとアンケート
18:50 解散

どんな学生が参加してくれたか

中西)
普段は PC をあまり使わない方から、 Web デザイン経験者、他のインターンでアプリ開発に挑戦中の方まで幅広い層の方に参加していただきました。
初学者にはかなりきついボリュームのインターンだったかと思いますが、皆さん意欲に満ち溢れていてとても感心しました。

1日目にやったこと

中西)
1日目は CTO 平岩による講義が中心でした。
今回のインターンでは、今春入社の新卒エンジニアが使用した、弊社の研修テキストの一部を使って進めました。
JavaScript がどのように使われているかの話から、文法と変数、実際に DOM 操作1をしてみるところまで、1日で JavaScript について一通り学んでいただきました。

講義をする CTO

講義をする CTO

やはりループや関数を書いたり実行したりする場面でつまづく方が多かったように思います。
テキストには、その場でコードを書いて問題の答え合わせができる機能2が組み込まれているため、学生さんにはこれを使って理解を深めていただきました。
中西たちサブ講師は、学生さんたちを見回り、学生さんたちのわからないところや疑問に思ったことの解説をしました。

解説をする講師陣

解説をする講師陣

2日目にやったこと

中原)
2日目は Web ブラウザ上で動作するライツアウトを実装してもらいました。

ライツアウトは、5×5 の形に並んだライトをある法則にしたがってすべて消灯 (lights out) させることを目的としたパズル。

Tiger Toys や、日本ではタカラから 1995 年に発売されて有名になった。

あるライトを押すと、自身とその上下左右最大 4 個のライトが一緒に反転する。

ライツアウト - Wikipedia

手を動かしながら順を追って理解できるように、体験的な工程も盛り込んだ手順書を事前に用意して臨みました。
文字をブラウザに表示させるところからライツアウトの完成までを、メイン講師が手順書に沿って順に説明し、私は学生さんの間を行き来しながら助言して回りました。
開発環境にはGlitchを使用し、環境による動作の違いが発生しないよう配慮しました。

メイン講師による説明

メイン講師による説明

1日目と同様講師陣がサポート

1日目と同様講師陣がサポート

お昼はちょっと良いお弁当が支給されました

お昼はちょっと良いお弁当が支給されました

やはりかなり手応えのある課題だったようで、クリックされたライトの上下左右のライトを反転させる、全ライトの初期状態をランダムに決めるなどといった、条件分岐やループを組み合わせる必要のある箇所で時間をかけることが多かったように思います。
ただ、手順書を進めるごとに時間をとって講師陣が全員を回り、進捗確認をするようにしたため、全体の進行に対して誰かが大きく遅れるといったことはありませんでした。
また、我々のアドバイスに対して皆さんの飲み込みが早く、更に発展的な内容を質問してくれることもあったため、講師としても非常にやりがいを感じました。

盛り沢山の内容ではありましたが、講師陣の奮闘と皆さんの努力のお陰で、想定よりも1時間ほど早く完成することができました。
そこで急遽メイン講師と相談して、「ライトの数をフォームから指定して変えられるようにする」という機能追加を行いました。

追加する実装の解説をするサブ講師

追加する実装の解説をするサブ講師

時間が余るとは思っていなかったためややバタつきましたが、最終的にはアドリブで追加した機能を含めて全員ライツアウトの実装が完了しました。

全体の所感

中西)
新卒エンジニアも2日間かけていっぱいいっぱいだった内容なので、初学者の方には難しいのではないかと思っていました。
しかし、どんどん質問したり、自分でコードを書いたりする学生さんも居て、皆さんの学習意欲の高さにエネルギーを貰いました。
私自身、入社後から JavaScript を学び始めた事もあり、講師として至らない点もありましたが、講師のサポート体制には概ねご満足いただけたようで良かったです。

中原)
プログラミングを楽しいと言ってくれた方もいて、講師として大変嬉しい限りです。
ただ、中には「最後まで自分で解いてみたかった」という意見もあり、ちょっと口を出し過ぎてしまったかなと反省もしました。

アンケートでもらった感想の一例

今回のインターンシップで始めてプログラミングを体験し、本当に面白いと思えました。まだ就職活動も序盤なので、ここで視野を狭めずに多くの職種を見るようにしたいと考えていますが、エンジニアという職にチャレンジしてみたいという気持ちが増した二日間でした。また、社員のみなさん同士の雰囲気も良いと感じ、会社についても学ぶことができました。

今回のイベントでは、プログラミングの中でも自分の弱点である部分がよく復習できたなと思いました。誰かのコードを写したりではなく、自分でよく考えコードを書いていきたいです。

できなくても最後まで自分で解いてみたかったです。
少し悔しく思います。

中西)
プログラミングを体験してみて、エンジニア以外の職種の方が向いていると思った方もいるかもしれませんが、他職種の業務内容を理解していることは仕事をする上でアドバンテージになります。
今回の経験から少しでも得られるものがあれば幸いです。

中原)
エンジニアという職は専門的な知識が必要となる性質上経験のない学生さんからは敬遠されがちですが、これを機に是非興味を持っていただきたいです。

最後に

中原)
オプトテクノロジーズは今後もこのような催しを定期的に続けていくつもりです。
開催する際にはこちらで案内するので、是非覗いてみてください。
もちろん採用も職種を問わず募集中なので、もし興味をお持ちいただけましたら、エンジニア志望の方もそうでない方もこちらよりお声がけください。
新卒・キャリアは問いません!


  1. Web ページは HTML という言語で書かれており、 DOM はその内容をアプリケーション側から操作するための仕組み。

  2. ちなみに、この機能も JavaScript で実装されています。