はじめまして!約半年間SAKURUGで長期インターンシップを経験しましたRioと申します。大学では経済学を勉強しています。
アイデアを形にすることができるエンジニアリングに魅力を感じ、プログラミングの勉強を始めました。
SAKURUGでインターンに参加する前はSwiftを勉強し、App storeにリリースしたりしていました。実務を経験して、もっと幅広い技術を学びたいという思いから、SAKURUGで長期インターンシップにチャレンジしてみようと思いました。
インターンを始めるまでは、webプログラミングの経験がありませんでした。なので、最初はJavaScriptを使ったアプリケーションの作成を行いました。
最初は以下のサイトを参考にして、todoリストの作成を行いました。
https://jsprimer.net/use-case/todoapp/
とは言っても、答えのあるコードを移していただけなので、理解度はかなり怪しかったです。
その後は、下のオリジナルで掲示板アプリの作成を行いました。1から自分で、コーディングしていくことで、上のサイトが行っていたことも、かなり理解できるようになっていきました。
このアプリケーションは新規登録したユーザーが投稿したり、いいねやコメントをつけたりすることができます。また投稿を検索することも可能です。
この時期は、社内で使われているフロントのフレームワークであるNuxt.jsを中心に切り替えていきました。Nuxt.jsの学習のために、以下の本を読み進めていきました。
https://nuxt-beginners-guide.elevenback.jp/
この本は、パッケージマネージャーの導入から、Nuxtを使った簡単な投稿サイトの作成までをサポートしてくれていたので良かったです。ただ使ってる用語が難しく、最初は苦戦しました。自分で調べたり、社員の方のサポートによって徐々に実装していくことができました。
この時期は、主に二つのことに取り組みました。
StorybookやJestの共有をしました。下のオリジナルアプリを使って、実際に技術検証をして、社内メンバーに共有しました。今回はStorybookを少しだけ取り上げます。
Storybookはコンポーネントをカタログ化して、デザイナーとエンジニアのコミュニケーションを円滑化するためのツールです。デプロイしたStorybookをチーム内で共有することで、そのメリットを享受できます。
従来のように、わざわざgitからfetchし、localhostをたてて検証する必要がなくなります。これによりデザイナーでも気楽に現在のUIを把握することができ、チームでの齟齬が発生しにくくなります。
また、前コミットのstoriesのスナップショットと現在のstoriesを比較できるのも、便利ポイントだと感じました。
下の画像は、チャットアプリの入力部分をstoryとして登録したものです。
その後、Nuxtを用いてオリジナルのチャットアプリの作成を行いました。この時、Nuxtの学習で難しかったポイントが、二つありました。
Vuexでどこまでの状態を管理するべきかと、どこまでコンポーネント化していくべきかです。
これを意識できていなかったため、pagesやstoreが肥大化していってしまいました。
しかし、Storybookの導入をこのアプリで行っていた際に、pageが肥大化しすぎていて、storyをうまく作成できない課題がありました。
Vue.jsはそもそもコンポーネント指向であるため、これはまずいと感じ、もう一度この観点からリファクタリングをしました。変更がしやすいコード設計にするために、UIとビジネスロジックの責務を分離することも意識してみました。
コンポーネント内だけで必要なstateはdataに保持させ、アプリ全体で共有すべきstateだけをVuexに記述するようにしました。
これにより、pagesやstoreの肥大化を解消することができました。またリアルタイム更新はfirestoreのスナップショット機能によって実現しました。
最終的な成果物としては以下のようなアプリケーションを作成しました。
このアプリケーションはユーザー新規作成すると、左のナビゲーションバーにユーザーが追加されるので、選択するとそのユーザーとチャットすることができるものです。
社員の方が、ランチに誘ってくれたり、話を聞いてくれたりしてとても働きやすい環境でした。交流も盛んでボードゲーム大会などが、定期的に開催されていて、そこに僕も参加させてもらいました。
社会人とお話しできることは、僕にとって刺激になることばかりであったので、この時間はとても充実したものになりました。
また誕生日や、最終出社日などは社員の皆様から、祝っていただきとても嬉しかったです。
本当に温かい職場で、最初の社会経験がSAKURUGで本当に良かったと思っています。
お世話になった皆様、ありがとうございました!
SAKURUGでインターンをしていて一番良かったと感じるのは、技術だけではなくエンジニアとしての自走力を身につけられたことです。
わからないところは基本的に自分で調べて解決することが多かったので、徐々に理解できてきたり、作っているものがうまく動いた時の達成感はかなり大きかったです。
SAKURUGで学んだ技術や自走力を活かして、インターン前ではできなかった挑戦をしていきたいと思っています。