ENECHANGE Developer Blog

ENECHANGE開発者ブログ

テックベンチャー3社のインターン生が語る!学生エンジニアの本音とは【イベントレポート】

こんにちは、エンジニア採用担当の村上です!

先日、STORESさん、マネーフォワードさん、ENECHANGEの3社から学生インターンに登壇いただき、「【Ruby】テックベンチャー3社のインターン生が語る!学生エンジニアの本音トーク」というテーマのオンラインイベントを開催しました。

その中での発表が非常に素晴らしかったので、皆様にもレポートをお届けします。

社会人と遜色ない高いレベルの業務に取り組み、スキルを磨かれており、またインターンとして働くことで「社会人として働く」ことに対する解像度も非常に高く持っている方ばかりで、私も非常に刺激を受けましたのでぜひ最後までご覧ください!

Rubyを知らない私が STORES に惹かれた理由

最初に登壇してくださったのは STORES 株式会社でインターンをされている大学院修士2年の大塚真太朗さんです。

大塚さんはインターンを始めるまでRubyを使ったことがなかったとのこと。 STORES との出会いのきっかけは就職活動に向けてなんとなく参加した1on1イベント。 STORES はイベントのスポンサーなどもしているため、名前をなんとなく聞いたことがあり、さらに1on1ではこれまでの学習・開発の深い話で盛り上がることができたため、会社や人に対しての好感を抱き、ジョインすることを決めたそうです。

最初に任されたタスクは、なんとなくしかわからない状態から始まりました。 「CIとして行っている、Railsのassets:precompileが遅い Sprocketsから依存しているexecjsを速くできるか調査してほしい」

よく分からないながらも、「Sprocketsを起点に調査し、assets:precompileのタスクを速くする」という漠然としたイメージを持ち、取り掛かりました。

ここでまずは未経験のRubyの勉強が必要になりました。

Rubyの学習は、他の言語でも同じ動作のある言葉や、Ruby特有の動作、並列処理の癖など、これまで使ったことのある技術の知識をベースに違いを理解しながら進めたそうです。

Rubyは日本語のドキュメントや記事が豊富、仕様もシンプルなのでスムーズにキャッチアップができたとのこと。

その後内部調査をする中で、並列処理が可能な部分を発見し、ローカル環境で処理時間を40%削減することに成功。実運用に採用するのは一旦見送ったそうですが、Rubyのキャッチアップができていることを実感しました。

任された課題については、execjsというRubyからJavaScriptのコードを実行するgemの、ランタイムをより速いものに差し替えることで解決できるのではないかと見立てました。

速いランタイムとして案に上がったExecJS FastNodeを検討したところ、あまり改善が見込めないと判断。その原因となる並列性能の悪さを解消するためにランタイムを自作したそうです。

その後レビュー等を実施し、実運用を開始。assets:precompileのタスクにかかる時間は従来から20%削減することに成功したとのこと。

大塚さんはRuby未経験ながらも、公開されている豊富な情報に加え、社内の充実したサポート体制により無事業務を遂行できました。 インターンを経て、個人開発では触れられない大規模で高品質なコードと、その開発体制を知ることができたと感じているそうです。

マネーフォワードで学んだRuby on Railsの乗りこなし方

次に登壇したのは株式会社マネーフォワードでインターンをしている大学院修士2年の髙橋光さんです。 マネーフォワードとの出会いは2週間のサマーインターン。 それまでは競技プログラミングの経験はあった一方で開発の経験はなく、参加できるインターンも限られる中でたまたま見つけたのがマネーフォワードさんのインターンだったそうです。 髙橋さんはそのインターンで初めて、Rubyや開発に触れたとのこと。

実際のインターンの業務ではマネーフォワードクラウド会計の既存機能の改修や速度改善にメインに携わっていたそう。 タスクの大きさは1日で終わるものから、人を巻き込んで数ヶ月かかるものまで様々でした。

こうしたインターンの業務経験での学び、気づきや心掛けたことを3つシェアしてくださいました。

1.Ruby on Railsとの付き合い方

開発に初めて携わって特に実感したのはコードについて、「書く力」より「読む力」の方が強く求められるということ。 現状のコードを理解できれば、実装は単純だったりAIに任せられたりするため、そのように感じ、「読む力」を鍛えるため、普段からコードを批判的に読むように意識していたそう。 Ruby on Rails独特のファイルの連携や、データベースへのアクセスなどでコードを追うのに苦戦したそうですが、メンターとの壁打ちも積極的に行いながら読む力を鍛えているそうです。

2.タスクの進め方

事前の業務のイメージは設計書を読んでプログラミングをするものだったそうですが、実際は与えられるのは課題のみ。 解決の手段やタスクの進め方は自分次第で任せてもらったそうです。

髙橋さんは、まず解決すべき問題を深掘りして分析し、その問題をどうしたら解決できるのかを検討、さらに今後はどのように運用できると良いのか、を順に追いながら「あとはプログラミングするだけ」になるように進めるとのこと。

3.再現性を持たせる

最後に、コードを読む力の強化やタスクを進めるにあたり、一番意識していたのは「再現性を持たせること」。 「メンターの手を借りればできる」ではなく自立して一人前になれるように、メンターとの壁打ちを欠かさず行なっていたそうです。 具体的にはまずは自分の思考をアウトプット、そこにメンターからのフィードバックをもらうことでメンターの思考フレームを身につけられるように話し合いを行なっているとのことでした。

この発表から、社員を巻き込みながらインプット・アウトプットを精度高く回している髙橋さんの学びの姿勢に感銘を受けました。

私のENECHANGEでのインターンシップと今後

最後に登壇したのはENECHANGE株式会社 インターン生で大学2年の山田直生さん。 山田さんは小学生の時からプログラミングをはじめ、Rubyにも触れていたそう。 高校生の時には「中高生国際Rubyプログラミングコンテスト」で最優秀賞を受賞。 大学生になってからはいくつかの企業でインターンを経験した後、現在はENECHANGEでインターンをしています。

山田さんが「中高生国際Rubyプログラミングコンテスト」で最優秀賞を受賞した話については、下記インタビュー記事で詳細を語られていますのでぜひご覧ください。

note.com

初めに、インターンシップはいくつかの方法で探しているとのこと。

  1. 技術カンファレンスやプログラミングコンテストのスポンサーを探す
  2. Webサイト 魔法のスプレッドシート
  3. 他の学生のSNSで情報収集
  4. 更新がきちんとされている技術ブログ

ENECHANGEのインターンも、RubyKaigiのスポンサー一覧から見つけて応募してくださったそうです。

インターンの業務としては、大手クライアント向けに提供しているEV充電アプリのバックエンド開発を担当されています。

実際の案件のタスクをもらい、メンターと一緒に仕様の詳細を決めたのち、実装をしていきます。 具体的なタスクとしてこれまでに取り組んだのは3つ。

1.Good Jobのダッシュボードの導入

Good Jobという非同期処理を行うために利用するgemについて、利用状況を可視化ができておらず状況が把握しづらかったため、ダッシュボードを導入し、Good Jobの実行状況をリアルタイムで見られるようにしたそうです。

2.FCMのpush通知における500エラーのリトライ

スマートフォンにプッシュ通知を送信するためのサービスであるFCM(Firebase Cloud Messaging)において、時折リクエストで500エラーを返却することがあり、プッシュ通知が失敗してしまうことが課題でした。 その解決に向けて、通知の際に500エラーが返却されたデバイス情報を格納しておき、時間をおいて再度エラーが起きたデバイスに向けて処理を行うようにしました。

3.分間バッチにログを仕込んでCloudWatchで調査

EV充電器が使用可能かどうかのステータスを毎分更新するバッチについて、1分以内に処理が終わらないケースがあるため、どの処理に時間がかかっているのかを調査したいという課題がありました。 それに対してバッチ内で処理時間を計測し、その内訳をログ出力することで、バッチ処理のボトルネックを調査できるようにしました。

インターンでこのような業務に取り組む中で実務経験を積むことができ、技術的な新しいチャレンジもできるのがよかったとのことです。

またENECHANGEでは社内の技術勉強会(Tech Talk)にも参加でき、これまで触れたことのない知識のインプットや、他の事業部の取り組みも知ることができて学びが多いと感じているそう。

今後もカンファレンスや勉強会への参加・登壇や、技術書でのインプット、ハッカソンやプログラミングコンテストへの挑戦などで技術力を深めていきたいとのことです。

発表資料はこちらで公開してくださっていますのでぜひご覧ください。


本イベントを主催したENECHANGE株式会社では新卒エンジニアや長期インターン生を募集しています。 興味のある方は下記もご覧ください!

newgrads.enechange.co.jp