ふるつき

v(*'='*)v かに

はてなサマーインターン2019 に参加していました

退屈と言える程 幸せじゃないけれど 不幸だと嘆く程 暇もない毎日

――普通の人々

専攻科1年ということもあり、そろそろこの先の人生をどう振るのか考えなければならない時期なので、業界や会社を見学する気持ちで、はてなサマーインターン2019に参加してきました。本エントリはその振り返りです。

developer.hatenastaff.com

応募とか

絶対に書いておかなければならないと思ったので書きます。今年はとにかくどこかの会社を見学しないと何も定まらないと思っていて、焦る気持ちもありながら色々な会社に応募したのですが、結局はてなともう1社だけに内定をいただきました*1。この2社はインターン生の選考にとてもリソースを割いていると感じていて、特にはてなはやばかったです。

今年のはてなの1次選考では簡単なrot13を書く問題がでて、D言語で愚直に書いたら運良く通ったので、京都オフィスまで面接に行きました。

Hatena Summer Intern 2019 application quiz · GitHub

ここでの面接が本当に良くて、面接に良いとか悪いとかがあることを初めて認識しました。事前にGitHubアカウントやはてなブログのURLを提出していたのですが、面接官の方はそれをとても良く見てくださっていて、「シェル芸botの開発をしている」とか「J言語に興味があってポストを書いている」ということまで把握されており、そういう話をしても大丈夫だということがわかって、これまでになく楽しく喋ることができました。GitHubリポジトリやブログの深いところまで読まれていて自分が真剣に選考されているのだということがわかりましたし、そういうきちんと評価してくれる選考を通過してインターンに参加できたことはそれだけでとても嬉しかったです。

講義パート

はてなインターンはそういう構造なので前半2週間は講義パートでした。講義パートは2週間で「オレオレブログシステム」を構築することになり、基本的に午前中はDBやReactやGraphQLによるエンドポイントのようなテーマにそって社員の方に講義していただいて、午後はテーマに関連する部分を課題として「オレオレブログシステム」に実装するという感じでした。講義は知っている内容であったりして、自分のレベル感というものを確かめながら聞けてよかったです。一方で課題は、知っている内容のはずなのに意外とやってみると躓いたりして、理解度の確認や私の実力との兼ね合いが絶妙だと感じました。

そういう詰まったときに必ず近くにメンターの方がいるのがはてなインターンのすごいところだと思っていて、常時2〜6人程度がインターン生の進捗を見守っているので、躓いたときにすぐに助けてもらえます。インターン生としては業務も忙しい社員の方を捕まえてくだらない質問に時間を割かせてしまっては申し訳ないという気持ちがあるので、積極的に進捗を確認してくれたりとくだらない様に思えることでも質問して良いのだということを認識させていただいてありがたかったです。これをやるのってものすごくインターンのことを重視してないと難しいと思っているので、そういうふうに扱われていることもまた嬉しく思いました。

ちなみに講義は技術一辺倒というわけではなく、企画やコミュニティ設計の講義もありました。これはインターン中にも何度もフィードバックしたことなのですが、コミュニティ設計の講義は本当にありがたくて、学生だとそういう経験がなくてもサービスが当たって否応なしにコミュニティと向き合わなくてはならなくなるという場合があると思っていて、そういうときに必ず役に立つ良い講義だと思いました。

中間発表

さて前半パートの終わりには中間発表があり、前半課題で作成した「オレオレブログ」について社員の皆様の前で発表して評価を受けることになっています。どのようなブログをつくるかは個人の裁量にまかされていたので、私は「ブログのエントリに対して自動でエピグラフが挿入されるブログ」こと「エピにっき」を作って発表しました。

これは頑張ったので一応やったことを書いておくと、「ブログのエントリに対してエピグラフが挿入されると、エピグラフとエントリとの関連性が気になって、よりエントリが読まれるようになるのではないか」と考えて、文章の内容に合わせて自動的に適切なエピグラフを挿入するようにしました。エピグラフさだまさしの楽曲の歌詞から手動で抽出し、文章から最適な楽曲を選ぶところではword2vecでいい感じにやりました*2。本エントリのエピグラフもこのシステムで自動的に選択されたものになっています。はたしてこのエントリに適切かはかなり微妙ですが……。 f:id:Furutsuki:20190913160646p:plain

f:id:Furutsuki:20190913160707p:plainf:id:Furutsuki:20190913160723p:plainf:id:Furutsuki:20190913160734p:plain
こんな感じになる(社員の方のエントリもありますが掲載許可を得ています)

こういうものを発表したところ、さだまさしの力もあり*3、投票により1位の栄誉をいただきました。2位が16票だったのに対して35票も入ったのでかなり良い結果になったのではないでしょうか。深夜に何時間もさだまさしの歌詞と向き合ってきた甲斐がありました。

f:id:Furutsuki:20190913161159p:plain

実践パート

シェル芸botの運用経験からインフラまわりに興味をもったこと、製品や開発者を支えるレイヤーで貢献*4する仕事に興味があったことなどから、システム基盤開発コースを希望していたので、システムプラットフォーム部というところに配属されました。ここで何をしたかは以下のエントリをご覧ください。

developer.hatenastaff.com

ここに書いていない流れを少しだけ詳しく説明すると、まず配属されて簡単に自分の興味分野について語った後、じゃあこんなテーマがありそうだけど、という話を頂いて、それは週末だったので週明けにどれが良さそうか、みたいな話をしました。今回のテーマは2週間という期間で基礎部分を作り上げるのにちょうどよく、またはてなやシステムプラットフォーム部にマッチしていて、私の実力感からみてもちょうどよいものだったと思います。

最初はどういうものを作りたいか、どういうものなら作れそうかという話をしていて、何ができるかという技術的な調査を踏まえつつ、作るべきものの姿を固めていきました。途中ではチーム内で「これこれこういうものを作っています。こういう技術をつかってこういうことをやろうとしています」という話をしてフィードバックをもらいました。そして、ある程度のものができることがわかったので、それをコード化したいねという話になり*5CloudFormationのテンプレートを書いていました。しかしCloudFormationはこと現在に至ってもCodeDeployによるBlue/Greenデプロイ周りをサポートしておらず、中途半端なものができあがりました。

この時点でかなり残り日数が危なかったので、できるところまでで発表するか、という話になっていましたが、私はどうしても諦められなかったので残業という闇の儀式を1時間と30分くらいやって、Terraformを書きました。頑張ったのですが、Terraformも結局環境依存なところがあったりしてちゃんと動かすには少し作業が必要になってしまいました。CloudFormationが対応してないものにTerraformが対応していることがあるというのは学びでした。

後半全体を通して、メンターの方々*6と毎日朝会や昼会をしてこまめにやっていること・やることの確認をしたり、マイルストーンを設置したり確認したりしていて、非常によく面倒を見てもらっていました。

最終発表

こちらはそんなに書くことがなく、上記エントリの内容をTPOに合わせてスライドにして発表しました。前日に一度チーム内で発表したときはひどい出来だったのですが、大量にフィードバックを頂いて、当日にはなんとか及第点の発表になったと思います。評価のされ方を見た感じそこそこ良いものを作れたみたいで嬉しい。

投票の結果は5コース中5位で奮わなかったのですが、4位とは1票差だったなど地味になりがちなシステムプラットフォーム部の成果としてはそれなりだったと思っています。個人的には満足している

その他

講義や実践パートの流れ以外にも書きたいことがあるのですが綺麗な文脈を作れないのでここに箇条書きします。この書き方をすると書き漏れがあるので思い出したら追記します。

  • 過去の参加者ブログを見たり、社員の方の話を聞いたりしていると、「はてなインターン同期生はめちゃくちゃ仲良くなるし一生モノの友達になる」という話で、自分にこれができるかめちゃくちゃ不安だったのですが、案の定できなかった。
    • 週末などときどきボードゲームをやったのは楽しかった。前半パートは僕は定時になるとすぐ帰っちゃったし、他の人は残っても課題やブログ開発を頑張っていたようなのでやらなかったけど前半もやっておいたほうが絶対に良かった
    • もしどこかで出会ったら声をかけるくらいはできるかもしれない程度にそこそこ仲良くなった気はするので、何も得られないよりは遥かにマシだと思う
  • 同様に社員の方ともめちゃくちゃ仲良くなったかといえばそうでもないと思っているので残念だったり申し訳なく思ったり諦めていたり
  • はてなのランチはめちゃくちゃ美味しくて感動した
  • 通勤・退勤はつらいことがわかった。社と家は近い方が良さそう
  • 退勤後なにか作業をするみたいな気力が残らなくてインターン中はインターン以外なにもできてない
    • 同様に土日もなにもできなかったりしてかなりショックだった。社会人になってもCTFをやりたいができるか大変あやしい。
  • はてなのオフィスは結構静かで「静かに見えるけどSlackとかでめちゃくちゃワイワイしている」という話を聞いていたんだけど、インターン生は限られたチャンネルしか見えないゲストアカウントだったので、盛り上がり方をいまいち観測できなかったのはちょっと残念だった。
  • 自己紹介や中間発表で、完全に「さだまさしの人」として認識された気がするけどこの肩書は僕にはちょっと重たすぎたので失敗だったなと思っている。認識されやすいのはよいことですが……。
  • 初日やインターン生とご飯を食べる会やシステムプラットフォーム歓迎会や技術勉強会などで寿司が振る舞われるので寿司をめちゃくちゃたくさん食べた。あと人前で飲酒したの初めてだったかも。
  • インターンは4週間やって5合目、ブログを書いて7合目、インターンで講師をして頭頂らしいので頑張っていきたい(いきたい)
  • デベロッパーブログのはてブ数が当日で200いきました。嬉しい

f:id:Furutsuki:20190913212839p:plain

最後に

はてなサマーインターンはめちゃくちゃインターン生のことを考えてインターン生のために労力を割いてくれているし、それもあって本当に良い体験ができたと感じています。完全に信頼できるエンジニアに指導してもらったり一緒に作業できたりしたのは本当に良いし、そういう人々にある程度評価されているというのも得難いことで自信になりました。それから蒸し返すようですが、面接の体験がすごく良くて本当に良かったです。

このようなインターンを提供してくれた株式会社はてなの皆様には感謝の言葉しかありません。最高でした。

*1:時期が被っていたのでもう一社は辞退させていただきました。でもやってることは絶対面白いと思ったので体が2つほしかった

*2:詳しいことが知りたい人がもしいたとしたら、おそらくこのへんなのでよろしくおねがいします。モデルとしては word2vecの学習済み日本語モデルを公開します | カメリオ開発者ブログ のものを、辞書としてはMeCab-IPADICをおそらく用いています。ありがとうございました

*3:自己紹介でさだまさしが好きだと言ったら変なウケ方をするなど、さだまさしの人という文脈がかなりあったとか、そもそもさだまさしの歌詞が良すぎてオーバーキルみたいな話もある

*4:https://i-beam.org/2019/03/25/taishoku-shimasen/ を読んで感銘を受けた言葉です

*5:当初の予定では厳しそうだということで今後の課題になっていたけどマイルストーンを長めにとったのと思ったより検証が早く済んだのでできました

*6:メインメンターの方は東京にいて、となりの席には現地メンターがいるという豪華な状況