こんにちは。システム本部 三浦@hironomiuです。

VOYAGE GROUPの夏のエンジニアインターン「Treasure2014」が8/25 - 9/12の3週間で行われました。
Treasure2014は前半(座学、ワーク)、後半(グループ開発)でカリキュラムが組まれています。
今回は前半についてお伝えしていこうと思います。

又、本エントリーを見て圧倒的な成長をしたいと思って頂けた学生さんは
11月に大規模サービス構築プログラムSunriseがありますのでエントリーお待ちしてます!!

スケジュール
前半は8/25 - 9/3の8日間で行いました。
(但しTreasure2014の開始2週間前から事前課題でTreasure中に最低限必要となる技術について、みっちり講師陣とQAのやり取りを行います。)

各講義について
1日目
環境構築 講師:三浦@hironomiu


treasure2014-githubvagrant


Treasure2014では出来るだけ実際の開発フローを経験してもらおうと個人開発環境で開発を行い本番環境へデプロイする流れを取ります。その上でGitHubを用いissueベースで開発を行っていきます。

issue -> 開発branch -> push -> pull request -> merge -> 本番デプロイの流れを初日に簡単に倣っていきます。

個人開発環境はVagrant,Puppet,Virtual Boxにて仮想サーバを構築し仮想サーバ内でベースアプリをGitHubリポジトリからcloneし開発出来る状態で臨みます。

2日目
アイディアソン 講師:渥美(@daisuke_atsumi)さん


treasure2014-atsumitreasure2014-atsumi2

Treasureはただ学んだ技術で何かを作るインターンではなく、学んだ技術などを用いて「価値」のあるWebサービスを生み出すこと特に大事にしています。

そこでアイディアソンと言う形で各Treasure生が作るべき「価値」のあるWebサービスのイメージを具現化するトレーニングを開発の前に行います。そしてこの後の技術的な講義ではアイディアソンでイメージしたWebサービスのモック作成からより具現化していく流れで進めていきます。

限られた期間で「価値」のあるWebサービスを生み出すのは相当困難です。しかしアイディアソン後の講義でも常に各Treasure生が考えたアイディアは本当に顧客に対して「価値」のあるWebサービスとして成り立つのだろうかと実装しながら検証していきます。

3 - 7日目
エンジニアインターンとしての肝となるのが3 - 7日目です。

フロントサイド 講師:前田(@brtriver)さん

treasure2014-brtrivertreasure2014-brtriver2

今回の開発はアイディアソンでイメージしたアイディアのモック作りから始める形で進めます。まずWebの概念や仕組みを再確認し、その上でモック作りに入ります。Webアプリケーションを振る舞いの責務と言う観点からフロントサイド、サーバサイドの二面を切り口に解説しサーバー側の実装に左右されない柔軟なフロントサイドを開発すると言う目的で今回はVue.jsを用いデータバインディングについて触れていきます。

treasure2014-brtriver3treasure2014-brtriver4

treasure2014-brtriver5treasure2014-brtriver6



中間課題(個人課題) 評価者:前田(@brtriver)さん

treasure2014-brtriver7treasure2014-brtriver8


中間課題はここまでのフロントサイド(プラス一部のサーバサイド)の講義で学んだ技術を用いて2日目に行ったアイディアソンのアイディアのモック作成か講義中の例題で作ったアプリの更なる改善したモック作成のどちらかを選択し制作物はプレゼンで発表します。


サーバサイド 講師:すずけん(@suzu_v)

treasure2014-suzukentreasure2014-suzuken2

今回のTreasureで用意したサーバサイドベースアプリ(PHP,Slim,Twig,etc)についてコードリーディングを実施し説明していきます。説明も大事ですが自分でOSSのソースを読み解き進める力をここでは養っていきます。

treasure2014-suzuken3treasure2014-suzuken4

今回サーバサイドの役割はフロントサイドからAPIを叩かれJSONを帰すイメージで進めます。そのために必要なAPI,URI設計や更にバックエンドにあるデータ永続やテスト(TDD)についても触れていきます。

treasure2014-suzuken5treasure2014-suzuken6

鬼教官すずけん(@suzu_v)とTDDです!(Let's TDD Bootcamp!)

treasure2014-suzuken7treasure2014-suzuken8
treasure2014-suzuken9treasure2014-suzuken10


8日目
DB 講師:三浦@hironomiu

Treasureではデータの永続化でRDB(MySQL)を用います。事前課題でTreasure生向けにRDBでは必須な技法である正規化について課題を行ってもらいます。その正答を伝え応用を実際に定義したテーブルに対してSQLを用いて様々な問い合わせについて触れていきます。またMySQLのアーキテクチャやRDBMSの機能であるトランザクションなども触れます。

treasure2014-hironomiutreasure2014-hironomiu2


セキュリティ 講師:えび(@co3k)ちゃん

ここまでも相当ヘビーな講義でしたがトリを勤めるのがセキュリティです。Treasure史上最長の講義資料の136ページ!えびちゃんワールドの開始です。

講義は情報セキュリティから始まります。

treasure2014-co3ktreasure2014-co3k2

情報セキュリティを抑えた上でWebセキュリティの概要をまずは俯瞰します。今回は限られた時間内で XSS (含 DOM based XSS)、SQL Injection、CSRF、クリックジャッキングについて触れていきます。

treasure2014-co3k3treasure2014-co3k4

個別のセキュリティ(XSS)について触れていきます。

treasure2014-co3k5treasure2014-co3k6


番外編
ランチ風景とTreasureの総合プロデューサー(Hさん)。

treasure2014-1treasure2014-4


他にもまだまだ書ききれないこともあります。

前半戦はここまでとなります。いかがだったでしょうか?
ここまで学んだことを用いて後半は4人1チームの開発を行います。後半のアウトプットが楽しみですね。後半戦のエントリーをお楽しみに!

Special thanks
各講義中、常にフォローをしてくれた15エンジニア内定者

せんちゃん
わっさん
だっち
ぷろ
ももえちゃん
いなっぺ
ぽくてぃ
さかもっちゃん
ゆきみね