Hatena REMOTE INTERNSHIP 2021に参加してきました!
タイトルにもある通りはてなのサマーインターンに参加してきたので感じたことや思ったことを中心にブログ記事にしました!
お詫び
インターン終了後すぐ記事にしようとしていたのですが、なかなか手が進まず...
所属しているサークル(システム工学研究会)のアドベントカレンダーを10月に予定していたのでいっそのことアドべの記事もかねて投稿出来たらなと思いこんな時期になりました。
遅くなってしまい申し訳ありませんm(__)m
自己紹介
愛知工業大学 情報科学部 3年のid:sken11 (ケン)です。
一年休学しているので大学4年目
趣味 サッカー観戦、麻雀、apex legends、乃木坂46
最近興味があること IT農業、宇宙開発
Twitter : Kensuke Suzuki (@KKkensukesuzuki) | Twitter
GitHub : KK56ken (KensukeSuzuki) · GitHub
参加に至るまでの経緯
先輩からサマーインターンはいいぞって話を聞いていたので参加して成長したいなと思っていました。さらに企業ではどのように開発しているのかだったり、ミーティングの仕方などにも興味がありました。学生の内にたくさんの企業を見ておくことで会社独自の文化や雰囲気を知り、入社後のミスマッチを防ぎたかったこともあります。
去年休学中にもサマーインターンに少し申し込んだのですがその時は全落ち
なので、今年は早め早め(3月くらいから)に動いていましたが、6月末になっても一社も決まらず今年もダメかな〜と諦めかけた時、ESを出していた、はてなさんとの面接がありました。
面接
正直なにを話したかあまり覚えてない(汗)
前半は今まで何をしてきたのか、どのような開発をしてどのような経験をしてきて何を学んだのかを話していたような気がする(間違ってたらすみません)
後半は会社について質問しているところで、呼び名をはてなidで呼び合っているんですよという話題で盛り上がったのは覚えています。
そんなこんなで面接終了
結果
7月2日(金)に面接をして7月5日(月)に合格の連絡が来たので早くてとても驚きました。
他のインターン生のレベル感などを見ても正直なぜ自分がインターンに合格できたのか今も不思議です笑
ESや面接で良いところを評価して見ていただけたのだろうと思っていますが感謝しかありません。
事前準備
今回は、事前にはてなさん側からMac Book Proを支給していただき、 Mac Book Proとdockerの動作確認、goのチュートリアルをやっておいて欲しいと言われました。
事前懇親会
7月5日に事前懇親会があり、初めて一緒に参加するインターン生を見ました。
(見た目からわかる強さを感じました)
nonpiというリモート飲み会用の食事を提供してくれるサービスを利用してhatenaさんからご飯を頂きました。(この時写真を撮り忘れており画像がなく申し訳ないです)
さらに、hatenaTシャツもいただきました。
インターン事前懇親会では社内案内や絵しりとりなどをやりました。
前半パート
前半パートは一週間あり、講義を受けました。
1日目
WebAPI講義
HTTP/1.1,HTTP/2,HTTP/3,Quic,graphQL,gRPCなどの説明がありました。 普段のwebアプリ開発ではHTTP/1.1しか使用したことがなかったので他のプロトコルについて学びが多くありました。(存在は知っていたが詳細まで詳しく知らなかった)
graphQL,gRPCは実際の書き方も出てきたが経験がなく構文を理解するのに手一杯でした。
時間ある時にgraphQL,gRPCを利用したアプリケーションを作成してみたいな
デザイン講義
ニーズからデザインを考えるなど今まで考えなかったやり方でデザインを決めていくのが新鮮でした。
ニーズを考える演習もあったのですが、個人的にものすごく難しかったです。 いかにユーザー(使用者)の気持ちになれるのか、サービスへの理解度(何を提供するために作るのか)が大切だと改めて感じました。
コンテナ講義
コンテナの仕組みから丁寧に解説があり知らないことが多く勉強になりました。 dockerのコマンド、軽量化は普段から使用していたので身近な話で共感しながら聞いてました。
インフラ講義
インフラで最も重要とされる以下の5つを中心に説明がありました。
拡張性、可用性、効率性、安全性、柔軟性
今後インフラの行く末を理解したいならこの5つを抑えておけば迷うことはないのだろうなと感じました。
インフラは範囲が広く本当に学ぶことが多いですが一つ一つ着実に身に着けていきたい
歓迎会
講義終了後は歓迎会がありました。 事前懇親会と同様nonpiというサービスで食事とお酒を送っていただきました。 歓迎会ではインターン生が一人ずつ自己紹介をして、気になることについて社員から質問するという形でした。 その後は、ブレイクアウトルームで少人数で話しました。 僕はちょうど、社長の栗栖さんと話せたのでラッキーでした。
今思えばですがせっかく経営者と話すことできたので経営のことや社長として意識していることなど聞けばよかったなと後悔
2日目
k8s講義
トラブルがありあまり進まなかったので4日目に講義をすることになりました。
マイクロサービス講義
正直難しくてあまり理解できなかった...
サービスを複数の小さいサービスに分ける。その小さなサービスの最大限の力を発揮させる。それをつなぎ合わせたら(共通のインターフェースを使用)良いものができるよねって認識。
今後の課題ですね...
RDBMS講義
RDBMSに関する基礎、使い方、DB設計、パフォーマンスについて学んだ。
DB設計のところでは、多対多の場合中間テーブルを作成することなど昔ハマった内容もあったので知らないと難しいよな~と思いながら聞いてました。
パフォーマンスはあまり学んできていなかったのでとても学びになりました。実践でもパフォーマンス意識して開発していきたい
フロントエンド講義
JavaScript,TypeScript,Reactのモダンな書き方などを教えていただきました。
TypeScriptもReactもほとんど使ったことがなかったので新しく学ぶことができてよかったです。
まだまだ、書き慣れていないので少しずつ勉強していきます。
宣言的UIを講義で触れたのですが、宣言的UIを知らずに今までVue.jsを使ってました...
3日目
企画講義
企画とはから入り、企画の立て方、企画の常識?を学び、実際に行ってる方法を教えていただいた後ワークショップを行いました。
ワークショップでは、miroを利用して実際に既存サービスの不満点などを挙げ議論しました。
同じサービスでも様々な考え方や様々な視点で意見が出ていて人によってサービスの見え方が全然違うことを再確認した。
課題
提示された課題に取り組みました。
4日目
課題
昨日の続きを行った。
k8s講義
k8sの基礎を学び、ハンズオンを行いました。
コンテナオーケストレーションを実際に触ってオートスケールまでするのは初めてだったので実際にコマンド打ってデプロイされるのを見ることができて楽しかったです。
AWS講義
実際にAWSさんのスタッフさんがきて講義をしていただきました。
途中ネットワークの問題で作業が遅れてしまったのですが、awsのスタッフさん、id:astjさんに助けてもらいながらなんとか最後はデプロイまで行うことができました。
クラウドはほとんど触ったことなかったので学習できてよかったです。
5日目
課題フィードバック
課題に対して個性を出した人の成果紹介やプラスで意識したほうが良いことなどを話していただきました。
チーム配属
チームメンバーの紹介やサービスの設計などの説明受けました。
後半パートでどの機能実装するのかを考え始めた。
perl講義
perlで開発できるようになるため1時間半詰め込みました。
ノベルチームの歓迎会
アットホームな感じで迎え入れていただき嬉しかったです。
緊張していたもののいい具合に話あえて緊張もほぐれました。
その時にも食事とquoカード1000円分を頂きました。
講義パートを通しての感想
全体的に知らないことが多くインプットが多く大変でした。さらにインターンの緊張も相まってめっちゃ疲れました笑
ただ、確実に成長でき、次のフィールドに上がれた気がしています。
一日の終わりに毎日日記を書こうとしていたのですが、講義が終了すると力尽きてました。朝は講義の復習をして講義開始という感じだったので日記書けませんでした...
書けてたらブログ書くの楽だったんだけど(戒め)
一講義一質問を心がけてインターンの講義を聞いていたのですが、講義内容を理解するのに精一杯で質問を考える余裕がありませんでした。 そんな中、他のインターン生は、鋭い質問を何度もしておりすごいなと思いました。
何日か忘れてしまったのですが、AmongUsをやったりもしました。
他のインターン生とも少し話せ楽しかったです!
後半パート(二週間)
後半パートは二週間あり実際にチームに配属して開発をしました。
インターン生は総勢8人、2人ずつ4チームに配属することになりました。
私はid:KarakasaDcFdさんと一緒にノベルチームに配属となりカクヨムの開発に携わりました。
id:KarakasaDcFdさんはカクヨムユーザーでカクヨムのインターンだったから参加したというのを聞いて、私は現場での開発を体験したいという抽象的な目的だったので具体的な目的をもって取り組めたらよかったなと反省してます。(意識の違いで学べることが違う(増える)と考えているので)
初日
配属後初めやったことはタスク決めでした。
2週間という短い期間で何ができるのかを本気で考え、土日を挟んでいたので、休みの日にカクヨムを実際に使用し、ユーザーのレビューなども見て決めました。
タスクを決めた後はカクヨムサービスのコードリーディングを行い初日を終えました。
2日目~5日目まで
これまで様々なアプリケーションを作成してきましたが通知機能は実装したことがなく、どのように実装されているのか興味がありました。さらに、自主企画の参加通知を欲しているユーザーが一定数いることを調べていたので下記機能を実装しました!
【機能改修】自主企画に参加者が増えた際に通知するようにしましたhttps://t.co/b0hnna3ox0
— Web小説サイト「カクヨム」 (@kaku_yomu) August 27, 2021
この機能追加により、主催している自主企画に作品が増えた際に素早く気付くことができます。
自主企画をまだ利用されたことのない方も、自主企画に参加してみてはいかがでしょうか?#カクヨム
id:KarakasaDcFd とペアプログラミングで開発したのですが、私の10倍くらいコードを読む、実装するスピードが速くとても驚きました。(冗談ではなく本当に10倍くらい早かったです汗)いつか私もそのぐらい早くかけるように頑張りたいと思います!
実際に開発してみてわかったこともありました。それは、テストコードを書く時間が機能実装するよりも長いことです。小さい機能でも多くテストコードを書かなければいけなく機能リリースの重みを感じました。
通知機能の実装なかなかに難しく理解するのに苦労しましたが実際にコーディングをしていくうちに少しずつ理解できました。(まだ一部理解できていない気もしてる...)
ディレクターやデザイナーの人と話しながら進めていく経験を初めてしたのですが、なかなか難しいなと思いました。特に言われたことを受け止めるだけでなく即座に意見をいい議論してよいものにしていくのことがあまりできませんでした。
今後、サービスをよいものにしていく上で必ず必要になってくるスキルだと思うでサービスのことをより理解しどうしたいのかを常に考えるようにしていきたいと思います。
リリース後、実際にユーザーさんから喜びの声を頂いたときには目頭が熱くなりました。開発の楽しさを実感し、エンジニアとして一生生きていこうと心に決めました。
多くのユーザーがいるサービスに機能リリースするという貴重な体験を学生の内にできてよかったです。(言葉に言い表せないですが大きな一歩を歩めた気がしています)
6日目~9日目まで
ここからは私とid:KarakasaDcFdさんは別の機能を実装しました。
私は自主企画をさらに最高にするために、参加順で自主企画を表示できるようにしました。
【機能改修】自主企画参加作品を参加順で表示できるようにしましたhttps://t.co/Dd5CA0a0JF
— Web小説サイト「カクヨム」 (@kaku_yomu) September 2, 2021
新しく自主企画に参加した作品を確認しやすいように改修しました。
これまで更新順ソートのみ表示されていましたが、本日以降は参加順でもソートできるようになりました。#カクヨム
今回は一人で機能を作らなければいけないので責任感がすごくありました。機能としてはそこまで難しいものではありませんが、実装、テストを一人で行えたのはすごく良い経験になりました。
今回もユーザーさんからの喜びの声で目頭が熱くなりました。
2週間という短い期間で二回もこのような経験ができてよかったです。
id:KarakasaDcFdさんは、web小説サービスでは実装されていない(おそらく)ランキング通知を実装していました。
【機能改修】週間ランキングが上昇した際に通知できるようにしましたhttps://t.co/CCE1yZEi1U
— Web小説サイト「カクヨム」 (@kaku_yomu) September 2, 2021
自分の作品のランキング上昇と、現在の順位を通知機能から知ることができるようになりました(毎日一回)。
ランキング順位を知りたくない方は、設定より機能OFFにすることもできます。#カクヨム
横で仕様を決めていく作業をみていましたがすごく大変そうでした。しかし、この機能を4日くらいでリリースまでもっていく実装力本当にすごいと思いました。尊敬しています。(どうしたらそんな力がつくのか教えてもらえばよかった...)
9日目は、リリース対応しながら発表資料と原稿を作ることをしました。
両方同時にするのは、本当に大変で夕方にノベルチームで発表練習をしたのですが、原稿はなく、最低限のパワポといった感じでぼろぼろでした ToT
とても悔しかったです。id:KarakasaDcFdさんも同じ事を思ったのか、シンプルにパワポが完成していなかったからなのかわかりませんが、「朝8時くらいからプレゼン資料を作りこまない?」と提案され二つ返事で「はい」と答えました。(本来は10:30から業務開始)
言葉にしづらいですがこういうの胸が熱くなりますよね!
9日目に私がミスをしてしまったことがあるのですが、ノベルチームの皆さんやid:KarakasaDcFdの協力によって助けていただきました。
ありがとうございましたm__m
結果的にはよい経験になったと思っています。
最終日
朝8時くらいから発表資料を作り始めました。
本当にぎりぎりまで作りこみ、最後にメンターのid:k-murakami0609さん、 id:mfzyさんに見てもらいました。前日とまるで違ってすごくよくなっていると言われ自信がつきました。
発表
練習したのもあって納得のいく発表をすることができました。
ノベルチームの人にも前日とは全然違く、最高な発表に仕上がっていたといわれ嬉しかったです。
はてなさんには、最もホットなタスクを手掛けたチームに賞を与えるというのがあり(通称ほたてという)はてなスタッフさんの投票で決まります。
優勝もいけるのではないかと話していたので結果発表を今か今かと待っていました。
待ってる間はとても長く感じました。
結果
発表練習の成果もあり、ぎりぎりではありましたが優勝することができました!
id:KarakasaDcFdさんのおかげなので感謝してもしきれません。
送別会
一人一人インターン生がインターンの感想を言ったあと、ブレイクアウトルームで少人数で話しました。最後にディレクターのid:minemuracoffeeさんと一緒になり話せて喜びを共有できてよかったです。
最終日のサプライズ
サプライズでタンブラーとメモ帳?が届きました!
タンブラーは社員も持っていないレアものらしい(大切に毎日使っています)
全体を通しての感想
成長もでき、実際の開発に携われ、本当に最高の夏でした!
大規模なソースコード読んだことがなかったのでコードを読むだけでも大変で、苦しい時もありましたがそれでも楽しかったです!それには、インターン生の開発のサポートが手厚く何不自由なく開発することができた環境を作っていただいたからだと思っています。
2週間たち慣れてきて徐々に開発が楽しくなってきた中でのインターン終了だったのでもっと続けばいいのにと本気で思ってました。
後半パートで開発している中で、はてなさんは、ユーザーさんのことを本当に大切にし考えていることを感じることができました。
ともに開発したid:KarakasaDcFdさん、メンターのid:k-murakami0609さん、 id:mfzyさん、ノベルチームのみなさんには大変お世話になりました。ありがとうございました!
いつの日かノベルチームの皆さんとid:KarakasaDcFdさんとご飯行きたいな~
最後に
しっかりとした文章で伝えるのは私には難しいので、感じたことを自分の言葉で書かせていただきました。
つたない文章でしたが最後まで読んでいただきありがとうございました。
おまけ
参加前までの経歴
※この章は長い上にインターンと関係ないので興味のある人だけ見てください
インターン生のブログとかよく見るのですがその人がどのようなことをしてきてインターンに受かったのか知りたいと思ったことが多々あったので私の場合だけでも記載できればと思い書きました。
高校生の時に少しC言語を触る(基本文法程度)この時期にITパスポート取得
(高校の時は全商検定の取得を頑張ってました)
2018年4月~2019年1月 大学の講義でC言語を本格的に触る(前期の最終課題で五目並べを作成)
趣味でC言語でシューティングゲームなども作ってた(描画と判定周りでめっちゃ苦労したのを覚えている)
2018年9月~2019年1月 大学の講義でwebプログラミングをする(HTML,CSS,JavaScript)
最終課題でタイピングアプリを作成した
webで作成したものは多くのプラットフォームで提供できることを知り興味を持ち始める
2019年1月~2019年10月 サークルの活動で工科展に出場するため時間割作成webアプリケーションを作成
担当箇所はフロントとインフラでdockerで環境構築したのちvue.jsをやることになった。
初めてのチーム開発でプログラミングもそこまでできるわけでもなかったので足を引っ張ってばかりで苦しかった...
ただ、その苦しさ、何もできない悔しさが今への成長につながったと思っているのであれはあれでよかったのかなと今では思っています。(挫折って結構大事だと思うんですよね)
ちなみに同窓会賞を頂くことができたので結果も出てよかったです。
この辺で基本情報技術者試験に合格
2019年4月~2019年7月 講義で画像処理をする(C++)
好きなように色を変えたりして遊んで楽しかったのを覚えている
2019年4月~2019年7月 講義でオブジェクト指向プログラミングをする(Java)
関数もろくに扱えなかった状態でクラスなどを習いますますわけがわからなくなったのを覚えている。ただ、オブジェクト指向の考え方を学ぶのは楽しかった。
2019年9月~2020年1月 講義でオブジェクト指向プログラミングをする(Python)
オブジェクト指向プログラミングというよりはmvcモデルのwebアプリケーションの作り方みたいな感じだった
最終課題がチーム開発でWebアプリを作成することでした。
私のチームは料理名や食材名で検索するとその作り方と材料が出てくるアプリケーションを作成しました。
サークルでチーム開発をしていたこともありスムーズに開発できました。
この時、料理の検索やuserのログインや料理のお気に入り登録などwebサービスで使われやすい機能、バックエンド、DB構築などを学べてよかったです。
2020年2月~2021年3月 心を病み一年休学する
2020年4~5月 オンライン対戦可能3Dオセロを作成
2か月ほど休み少しずつ何かできるようになってきたので高校の時の友達とオセロを作成
初めてUnityでゲーム開発したので慣れるまで難しかった。
実際にオンライン対戦出来たときは声を出して喜んだのを覚えている。
ちなみにandroidアプリでリリースしてみたりした。
2020年6~7月 vpsでサーバ構築
インフラのことをもっとやりたいと思いさくらのvpsを借りてwebサーバを立ち上げる
ドメイン名でアクセスした時の喜びは今でも忘れられない
2020年8月 HackU2020に参加
スッカという小学生を対象にした課題管理アプリケーションを作成
vue.jsを使用&担当
2020年9~10月 サークルのサーバメンテでインフラのことを学ぶ
インフラのことを幅広く学びました
2020年 12月 自宅サーバにハマる
中古のPCを二台、ラズパイ一台、ciscoルーター、ciscoスイッチを購入
グローバルIPが動的だったのでwebサーバーを外部公開するために試行錯誤し、最終的にmydnsのDDNSを利用
ラズパイには内部DNSサーバを構築しました。
2021年 1~3月 春のインターン祭り
1dayも入れたら6社ぐらいのインターンに参加した
同じ業種でも企業によって雰囲気など全然違うことを知れた良い機会だった。
2021年 3月 k8sを勉強
nttデータさんの勉強会に参加したり、virtualboxにubuntu三つ立ち上げてクラスターを作ったりした(半年前ぐらいなので結構忘れてる)
2021年 3~4月 CA Teach Job Liteに参加(2週間)
サイバーエージェントさんで通年募集しているインフラのインターン
ネットワークのことを主に勉強した
最終的にsocket通信でhttpリクエストを送るなどした
2021年 4~5月 webSocketを利用してチャットアプリの作成
サイバーエージェントさんのインターンでwebSocketを知り、実際に使ってみたいと思い作成しました。フロントはvue.jsでバックエンドはgoで作りました。
2021年4~7月 大学の講義でciscoのnetworkAcademyを受講
IPv6関連の知識はほどんど知らなかったので勉強になった
2021年7月 サポーターズのハッカソンに参加
ドーパミンを出させるアプリを作成
思い切ってネタに走ったがあまりうけなかった...
nuxt.jsを使用&担当
2021年4~現在 サークルのホームページ制作
現在も製作中
nuxt.jsを使用&担当
2021年6~現在 研究室の入退室ログシステムの作成
現在も製作中
nuxt.jsを使用&担当