はてなインターンに(1/2)参加してきました

所謂インターネットで「最高の夏」と言われているはてなインターンが先日終わったので報告です.
実際にどんな内容なのかは ここ とか見ると良いかと思います.


タイトルにもある通り,今回全日程を送っているわけではなくて,1/2.つまり後半パートには進めなかった感じです.


※このエントリを見るよりは,多分完走した他のメンバーや過去の参加者の方々のエントリを見るほうが為になると思うので,そちらを見て欲しいです.*1

応募まで

最近Perlを書くことが多かったので,Perlを使っている企業としてはてなインターンに応募しました.
他の企業も複数応募して,受かった所が1つ,ダメだった所が3つほどあった感じでした.
はてなJSONでプロフィール的なものを送るので,Perlで書いて送信したと記憶に残っています.
使ったスクリプトは消えていて,何を送ったかまではイマイチ覚えていないという雰囲気です.


その後面接があって,面接ではAcmeについて話した気がしています.
Perl6の書きかけのAcmeモジュールとかについて話したような気もしている….
合格の連絡が来たときは,まさかと思う気持ちが強くて,正直自分自身に起こったことなのか飲み込めていなかったなと思っています.


参加まで

インターン参加者にはその後インターン用のSlackと,それぞれの言語の事前課題が課されます.
Perlの事前課題はスイスイ出来たけれど,Jsがほぼ出来なかったので,「初めてのJavaScript」を一度読んで,その後に取り組んでいました.
それでも解らない所があって,Githubでの提出なので,他のメンバーのリポジトリちょっと見て勉強したりしました.
また,自己紹介を書く事もあって,その自己紹介を見ていると「あれ…レベルやっぱ高すぎない…」と不安になっていったのが印象深いです.

インターン

インターン初日

他のメンバーと人事の方とセブン前に集合して,このインターンの注意事項や社長とのお話やメンター紹介などがありました
この時人事の方に「一応脱落精度がある」的な話が改めてでて,漠然と(フラグ踏みそう…)と思った感じです.*2

その後歓迎会でLTをやりました
LTは普段通りの自己紹介だったが,他のメンバーが強者揃いという感じで
普段Acmeで遊んでいるだけの僕は「おおっ…」となったのが強い印象でした.

インターン2日目(Perl基礎)

二日目以降は午前中に講義,午後に実際にその知識を利用してコードを書いてp-rで提出!という流れでした.

インターン二日目はPerlの基礎と,CLIで動くブログプログラムを作ろう!という感じでした.
Perl自体は慣れていてわかっているつもりでしたが,それ以前にプログラムやオブジェクトの設計という所で躓いていた感じでした.

インターン3日目(DB基礎)

3日目はDBの話でした.クエリとはなんぞというところから,良い感じのスキーマの設計.
実際にPerlからDBに干渉するにはどうすれば良いのか.ORマッパはどうしているかなどなどてんこ盛りの内容でした.

このあたりも前日の流れで,DB単体の操作や一階述語論理的な話は講義でやったことがあるけれど,実践でやるには「…???」な状態だったので苦労していました.
他のメンバー見ていると最後まで一貫したスキーマを設定出来ていたけれど,僕のスキーマはわりとガタガタで,最後の日にどかっと変えたりした覚えがあります.

インターン4日目(WAF)

4日目は今までDBと接続出来ていたものを実際にWAFに乗っけてwebアプリ化するぞ!!!という奴でした.
PerlなWAFはAmon2とかMojoとかは触ったことはありましたが,実際にちゃんと動かす(?)アプリを作ったのは中々なく,今までのDBの部分などのリファクタリングなどもしていたので,結構取られた気がしています.

落ち着いてきてからはMojoとかの流れでViewとかを書けるようになってちょっと良かった気がしている.

インターン5日目(Js)

5日目はJavaScriptな話でした.jsはよくわかんなくて(上記参照) JQueryとかのライブラリは使わずに素朴に書いていました.
マウスストーカー書くやつがあったんですが,他のメンバーのクオリティが高くて「おおっ」っとなっていました.(n度目)

インターン6.7日目(機械学習)

インターン6,7日目の午前は機械学習の講義でした.機械学習系の話は大学で勉強していて話は結構飲み込めました.
ですが,「理論はわかるがコードが書けん!!」という状況に陥ってしまった感じがします.*3
やはり次元数増やしすぎると辛い上に,良い感じの特徴量を発見するという所が厳しいところかなと感じました

インターン7日目(デザイン,インフラ)

午後はデザイン.そしてインフラでした.
デザイナーが正直何をやっているのかあまり良くわかっていなかったので,実際のエンジニアとやり取りをする場面などをしれたのは良かったと思います.
またインフラは,非常に気になっていて,今実際に業務で動いている構成や基礎知識を知ることが出来,「なるほどなー」という感じでした.
かなり楽しく勉強できた気がしています… *4

インターン8日目(AWSハンズオン)

8日目は変わってAWSの方が来て,ついにAWSというものを触ってみました.
AWSにデプロイした経験はこれが初めてでしたが,良く噂に聞くAWSはこう使うんだな…という所が体験出来て結構楽しかったです.

ちなみにこの日FGOAWSの障害喰らっていたらしい…
【AWS】FGOの緊急メンテはアプリケーションサーバーの障害が原因と判明、AWSのBeanstalkを使用か?

インターン9日目(企画)

9日目は企画の講義だった.
企画は個人的にアイディアがポンポン出てくる方だとは思っていましたが,実際に作ってみてインパクトと面白さがあるアイディアは僕はあまり出すことができなかったなと思っています.
つまりちょっと真面目すぎて,あまり面白くない感じになってしまったのでは…という気がしています.
ただアイディアの出し方や,「最終的にはヒットしたもの勝ち」な話は為になりました.

インターン9日目,10日目

9.10日目は自由課題で,今まで作ってきたwebアプリに企画を踏まえて何かしらの問題解決機能を作ろう!!というものでした.
作ったものが「イベントごとにブログ記事投稿出来る君」で,実際に使えるようになればそこそこ便利では?と思っていましたが
デモで見せたものはクオリティが悲しいレベルで,他のメンバーの皆さんの自由課題と比べると「辛い…」という感じでした.
他のメンバーの方は,ぶっ飛んでいるものを作っていて,想像力と実装力がすごいな…という感じでした.

その後はTGIFでお酒飲んだりしていた.

様々なこと

インターン後半残れないかもと言われたのは10日目の朝で,それまで必須課題は終わらせていたので,なんとなく「残れるかな…?」という気があったが
「やはりか…」という感情になった.
全体的に処理能力と設計能力が他のメンバーと比べると中々低くて「もうダメだ…」が割りと多発していた気がしていたので,序盤から「残れないのでは…?」という気持ちはでていました.*5
つまるところHTML/CSSを含むWeb回りのスキルが低かったなという感じです.Perlもわかっている気がしていたけど全然わかっていなかった….

TGIFのちょっと前くらいに面談があって,そこで後半に進めないことが確定し,以降は社員さんに励ましていただいたりとかしていました.
その中では「厚い言語の入門書(パーフェクトRubyとか)をとにかく読む」や,「正規表現エンジンを作成する」や「Perlのモジュールを他言語に移植してみる」などのアドバイスを頂きました.
また,「web開発者のための大規模サービス技術入門」を頂きました.


はてなではインターン生に向けた京都観光も企画されているのですが,一人脱落した手前,参加するのも何か忍びなくてキャンセルし,インターンは10日目で終了しました.

雑感


言われたとおりエンジニア人生は確かに始まったばかりで,ですが世間には僕より年下,同年代でバリバリ出来る人がいて
そんな人達と一緒に作業を行うと,自分自身辛くなってくる事が多々あるなと感じました.
だけれども,そんな思いを抱いている暇があるなら,その分やっていく必要があって,良いモジュールのコードや良い本を読んだり,コードを書いたりしないと行けないんだなと感じたインターンでした.


実際10日目が終わったその次の日に,何か悔しくて,京都のヨドバシと梅田の紀伊國屋書店で技術書を買って読んでいました
悔しいというよりかは,焦燥感といたたまれなさで買ったというのが正しいのかもしれないですが….

はてなインターンでは前半の講義しか参加できませんでしたが,参加する前と後では大分考え方やスキルが身についたかなという気がしています.
id:anatofuz の野郎インターンで脱落してから,ちゃんとやってるな」と言って頂けるようにClass::Accessor::Liteとかをまずはゆっくり読み進めたいと思います.

*1: 脱落した人のブログエントリは初めてではという気がしています…

*2:案の定踏んでしまった

*3: いや,正確に内容を理解できていたかも怪しい…?

*4: 直接コーディングがでてこなかったので安心していた気もする

*5: 他には精神的な持病的なものが初週に出ていて,その他様々なものが重なっていた感じでもあった