VOYAGE GROUP
8 月 13 日から 8 月 31 日までの三週間,VOYAGE GROUP のインターンへ参加してきました.
概要
前半は講義,後半はチームか開発となっていました.
講義内容は以下の通りです.
- Go 言語の講義
- TDD について
- ペアプログラミング
- http について
- フロントエンドの講義
- JavaScript の変遷
- React
- Redux
- Web API の講義
- セキュリティ
- XSS
- SQL インジェクション
- データベース
- ER 図
- サーバ環境構築
- AWS
その後,チーム開発
前半の講義
Go 言語を用いて,サーバ側で行われている処理を勉強しました.テストを書く人と実際のコードを書く人に分かれてペアプログラミングをしました.私は,今まで一人でコードを書くことが多く,考える時間が多くかかるということが多々ありました.しかし,ペアプログラミングをしてみると,話すことによって考えが整理され,自然と手が動くという感覚になりました.今後も機会があればペアプログラミングをしてみたいです.
セキュリティの講義では,適切な処理が行われていない場合,SQL インジェクションや XSS といった脆弱性を生み出してしまうので,注意が必要であることを体験しながら学習をしました.実際に脆弱なウェブアプリケーションをローカルで動かしながら,攻撃し,その脆弱性を防いでいくという講義で,なかなかおもしろかったです.
データベースの講義はとても良かったです.ER 図を作成する際の手順として,
- エンティティ抽出
- 属性洗い出し
- どんなデータを保持するか洗い出し
- 正規化
- リレーションシップを張る
- 主キーと外部キー制約を定義する
という手順を紹介されていました.この手順に従って考えていくことによって,スムーズにデータベースの設計ができることを実感しました.
前半の講義を通して,新しく学ぶことばかりでとても成長できたと感じました.
後半のチーム開発
この TREASURE のテーマは,「Go 言語を使って学ぶ、価値のあるもの創りとチーム開発」です.前半で学習したことを用いて,価値のあるもの創りをしました.
価値のあるものとは?
価値のあるものを考えるときに参考となるのが USN という考え方です.
- U は User で,そのプロダクトをどのような人が使うのか
- N は Needs で,そのプロダクトを利用することによって,どのような需要を満たすことができるのか
- S は Solution で,どのような手法で,User の Needs を満たすのか
というものです. この3つが揃っていなければ,サービスとして成り立たず,価値のあるものということはできません.
私達のチームは,「インターンの参加者/社員旅行のメンバー」が「楽しみたい,わいわいしたい」という課題の解決方法として,「お題に沿って写真を投稿するライブフォトアプリ」というものを考えました.
実際の開発
プラットフォームは iOS を選定しました.Web アプリケーションとして実装するという選択肢もあったのですが,対象としているユーザ層は,共有をする際ネイティブアプリを使うという意見や,投稿の際わざわざブラウザを立ち上げてサイトにアクセスするという手間のかかることをしないという意見があり,ネイティブアプリでの実装となりました.
チームは5人で,クライアント側 2 人,サーバ側 2 人,マネジメント 1 人といった構成でした.
私はクライアント側の担当で Swift をゴリゴリ書いていました.しかし,最近やっていない,PC が貧弱かつ 今までとは違う書き方(Storyboard を使わない)となると開発速度がかなり落ちました.そのため,予想していたよりも長い時間がかかりました.サーバ側の方々は優秀で,クライアント側の実装待ちのような状況になっていました.非常に申し訳なかった.
マネジメントの人は,主にモック作成とクライアント側とサーバ側の連携を行うための調整を行っていました.この人がいたおかげで,私のチームは順調に開発することができたと思います. (私達のチーム以外,会社に泊まっていたような気が…)
TREASURE の感想
圧倒的に成長することができたインターンだと感じます.前半の講義はもちろん,後半のチーム開発では,どのようなことを考えて一緒にものを作っていくのか,どのようにするとより良いものができるのかということを学びました.
コンフォートゾーンの外側へ行くことができたと思います.