こんにちは。製品企画室の土井です。
今年も残すところあとわずかとなりました。TOPSICチームに配属されてから約8か月間、今まで何をやってきたのかを振り返り、自分がどれだけ成長できたのかについてお話したいと思います。
言語とフレームワークの勉強
まず、最初に取り組んだのは、プログラミング言語(Ruby)の勉強です。通称「チェリー本」と呼ばれる教科書でRubyの使い方を学び、TOPSICやAtCoderを利用して言語の使い方に慣れるよう練習しました。
次に、Railsチュートリアルを行いました。RailsはTOPSICでも使用しているRubyのフレームワークであり、独自のルールや記法などが多数存在します。大学の授業やインターンで既に触れたことがあったため、その経験が大分生かされたと思います。
最後に、オリジナルのRailsアプリの開発です。テーマは備品管理でした。当社では、紙媒体で備品を管理しているため、その作業をシステム化してしまおうということです。チュートリアルとは異なり、開発するシステムの機能や画面、DB構成などを全て自分で考える必要がありました。大変ではありましたが、ものづくり好きな私にとっては、この辺りが最も面白い部分だと思いました。開発する際には、チューターさんだけでなく、製品企画室の室長さんや人事総務、役員の方などとも打合せをしてもらえました。実務に入る前に、非常に貴重な経験ができたと感じています。
実務開始
7月の後半から、実務に入る準備が始まりました。はじめてTOPSICのソースコードを見たときは、ソースコードの量に驚きましたが、とりあえず最初はお客様が直接触らないような部分の実装からスタートしました。また、チーム開発になるため、ソースコードのバージョン管理にはGitを使用しました。私は学生時代からGitを使うのが苦手で、特にチームで開発を行う場合は、プッシュやマージするタイミングを間違えて怒られた記憶しかありません。ですが、現在の開発では、プルリクエストを作成し、必ずチームの人が確認をしてからマージすることになっているため、そのような危険性は大分抑えられています。(先日developに直でpushした際には声を上げましたが)
8月からは、お客様が直接触る部分の開発に入りました。CSVから情報を取り込む機能の開発です。既存では、新規登録のみの機能でしたが、そこに手を加えて更新処理も行えるようにしたいとのことでした。CSVからデータを取り込んで登録するだけなら実装はできましたが、パフォーマンス(実行時間)の問題がなかなか解決せず、苦戦した記憶があります。お客様に提供するサービスである以上、正しく動くだけでなく、快適に利用できることが大事だと感じました。
テストコードの導入
9月の後半からはRspec(テストコード)の作成に取り組みました。画面へのアクセスやデータの更新、削除といったユーザーが行う操作をコードで表現し、自動でテストするといった仕組みです。先輩からテストコードの書き方を教えてもらい、現在も定期的にテストコードを作成しています。追加実装の度に手動で確認すると時間がかかるので、早いうちにテストコードを揃えてしまいたいと思います。
10月には、次バージョンで開発する新機能についての打ち合わせなどを行いました。既存機能の拡張などは、これまでも何度かありましたが、完全な新機能開発ということで、要件定義や画面設計などの段階から、打ち合わせに参加することができました。
新機能開発
11月からは、現在も進行中のプロジェクトのメインとなる新機能の開発が始まりました。今までのTOPSICにはなかったツール(Chart.jsなど)を使用する必要があり、公式ドキュメントやQiitaなどを参考にしながら、試行錯誤しました。ここでの新機能とは、受験者の成績情報をグラフで可視化するものでした。可視化が目的ということで、いつも以上に見た目に気を遣う必要がありました。グラフのサイズや文字の位置、配色など、ぱっと見で利用者がすぐに理解できるようなデザインを考えるのは非常に大変でした。
12月に入り、11月中に開発した機能のテストと細かな修正を行いました。開発中には気づかなかったバグや改善点を洗い出し、より完成度を高めていきます。それと同時に、新機能開発した際には、チュートリアル画面を更新する必要があります。使い方が分からない利用者のために、実際の画面のキャプチャを貼り、できるだけ丁寧な説明を心がけました。
まとめ
そして本日、2019年最終営業日になります。
2019年TOPSICチーム内での私の戦績がこちらになります。
これは、TOPSICのGitHubでの私のCommit数です。2019年の私のCommit数は447回でした。
入社当時、利用者の目線で使いやすいシステムを考えられるエンジニアになりたいと言ってました。そして、新機能の開発やチュートリアル作成などに取り組むにあたって、利用者の行動の予測や何を期待しているかなどを常に考えられるようになりました。(というより考えないと何を作ったらよいのか分かりません) しかし、今の段階では、作りたいものがあっても、能力不足で実装できないことが多いため、2020年は実装力の強化を目標にしようと思います。
来年もよろしくお願いします
年内におわらせるべき仕事は、大体終わったと思います。年越しを挟むと何をやっていたか思い出すだけで、時間がかかってしまうため、きりの良いところまでやっておけたと思います。あとは、大掃除をして納会を楽しみ、ゆっくり年越しするだけです。
来年も良いお年を。