はてなサマーインターン2017:1週目レポート(講義編・前半)

こんにちは。チーフエンジニアの id:wtatsuru です。 今年もはてなサマーインターン2017が始まりました! 今年で10回目を迎えたはてなのインターンシップ、1週目の様子を紹介します。 はてなサマーインターン2017

20日間のカリキュラムのうち、前半の2週間で行われる講義パートでは、Webサービスに関連する技術を広く学ぶことができます。講師は、はてなのエンジニアです。1週目では、プログラミング言語入門からサーバサイドの開発、フロントエンド/スマートフォンアプリケーション開発まで、Webサービスに関連する開発技術を一気に学んでいきます。

1日目 イントロダクション

初日は、導入説明や環境構築などを行った後、歓迎会を開催しました。自己紹介LTタイムでは個性豊かな参加者達の紹介で盛り上がりました。

f:id:hatenatech:20170901153319p:plain:h300 f:id:hatenatech:20170901153554p:plain:h300

2日目 Perl/Scalaによるプログラミングの基礎

サーバサイドプログラミングに利用される「Perl」「Scala」の2コースに分かれて実施しました。オブジェクト指向や関数型プログラミングといった言語のパラダイムの説明から、データ構造や制御構文などの言語仕様、テストの書き方までを学習します。データモデリング、モデリングに対応するオブジェクトの実装に加え、テストについての課題を用意し、言語に対する知識を深めてもらいました。

Perlの講師は id:akiym、Scalaの講師は id:stefafafan でした。

3日目 Perl/Scalaによるデータベースプログラミング

アプリケーションで取り扱うデータを効率性や信頼性に考慮して操作するには、データベース管理システムを活用することが重要です。この日は、最もよく利用される関係データベースを中心に、データベースの基礎的な概念や、Perl/Scalaで書かれたプログラムからデータベースを利用する方法、ソフトウェアのモデリングや設計について学びました。課題では、CLIで動作するブログシステムの実装に取り組んでもらいました。

Perlの講師は id:tkzwtks、Scalaの講師は id:Windymelt でした。

4日目 Perl/ScalaによるWebアプリケーション開発

Webアプリケーションフレームワークの使い方や、MVCパターンによる設計の仕方、セキュリティに関する知識を学び、Webアプリケーション開発における基礎的な技術を身に付けます。課題では、前日の講義で作ったCLIのブログシステムをベースに、Webアプリケーションとして動作するブログシステムを実装しました。

Perlの講師は id:papix、Scalaの講師は id:motemen でした。

5日目 JavaScriptによるWebフロントエンド開発/SwiftによるiOSアプリ開発

5日目は、コースによってJavaScriptまたはSwiftの講義を行います。Web開発に取り組むコースでは、JavaScriptによる動的なページ操作について学びました。講義では、言語のコアになる部分からフロントエンドの設計まで、重要なポイントを一通り学習します。

この日の目標は、筋の良い基礎技術を習得して応用部分にも対処できる力を身に付け、クライアントサイドに必要な技能の基盤をしっかり作ること。課題では、これまでに作成したブログシステムに対して、非同期でページ内容を変更するなどの機能追加を行いました。また、アプリコースへ進む参加者には、XcodeやStoryboard、Auto Layoutなど、iOSアプリを開発するために必要な全般的知識に関する講義を用意しました。

JavaScriptの講師は id:masawada、Swiftの講師は id:ikesyo でした。

おわりに

以上、はてなインターン1週目の様子をお届けしました。ここまでのカリキュラムで、インターン生はバックエンドからフロントエンドまでのWebサービス開発を一気に学びました。はてなインターンの中でも特に密度の濃い1週間で、毎日の課題に苦労したインターン生も多かったようです。次の週には、機械学習やインフラ、デザインや企画などより高度な内容を学びます。2週目の内容も近日公開しますのでお楽しみに。