はじめに
ドリコムで2週間弱インターンシップをさせていただいた2018年卒 河辺雅史です。
現在は公立はこだて未来大学大学院 システム情報科学研究科に在学中です。
大学では高度ICT演習という課外活動を通して主にiOSアプリの開発を行っていました。
他にも図書館、博物館のデジタルアーカイブCMSの構築に携わっています。
インターンシップでは、Rubyで社内サービスの開発に携わりました。
このインターンシップを通して、技術面だけではなくサービス開発の難しさやエンジニアとしてのあり方など、多くのことを学ぶことができました。
そこで、インターンシップで学んだことを共有したいと思い、記事を書かせていただきました。
参加した経緯
6月に参加した招待制ミートアップでドリコムの人事の方と面談したことがきっかけでした。
この面談の中で、自分がこれまで取り組んできたことを話し、ドリコムの事業内容やインターンシップの内容を説明していただきました。
話の中で「ドリコムは発明の会社で新しいことに挑戦し続けている」という言葉が印象的でした。
このインターンシップに参加することで、技術力だけではなくサービス開発に関する知見が得られるのではないかと思い参加しました。
インターンシップで行ったこと
社内サービスのデザイン修正、機能追加、データ移行のためのjobの実装を行いました。
社内サービスのデザイン修正、機能追加
社内サービスのデザイン修正、機能追加では、自由に修正していいと指示を受けました。
修正前のデザインはテーブルが使われていました。右端のカラムには長文が記載されるようなカラムになっており、横スクロールしなければ全文を見ることができない状況となっていました。
また、必要最低限のCSSしか書かれていませんでした。
そこでまず、他の社内サービスはマテリアルデザインの物が多いということから、マテリアルデザインを取り入れたCSSフレームワークのMaterializeを導入しました。
次に、かっこいいデザインにしようと思い色々と手を加えましたが失敗でした。
デザインを意識するあまり、一覧性を下げてしまっていました。
before
after
次に、一覧性を上げるために、長文が記載されていたカラムにボタンを配置しModal Viewで文章を表示するように変更しました。
しかし、文章を見るためには毎回ボタンを押す必要があり、悪いUXだということに気がつきました。
そこで、長文でも横スクロールすることなく全文が見れるように修正しました。
また、大量のレコードをスクロールすることでしか見ることができなかったため、いくつかの項目でソートする機能の実装を行いました。
before
after
データ移行のためのJobの実装
社内サービスのデータ移行のためのJobの実装を行いました。
サーバからJSONデータを取得し、データベースとの差分を見て保存するという処理の実装を行いました。
完成しているサービスに触れて、コードを読むだけでも勉強になりました。
またPull Requestを通してコードレビューをしていただきました。
このコードレビューを通して、自分のコードの悪いところや綺麗なコードの書き方、見やすくする方法について教えていただきました。
例えば、三項演算子を使えば綺麗に書けるという箇所をif else
で書いていました。
また、return unless condition
とするといい所を大きくif condition
で囲んでいました。
どの指摘も大学では得られない指摘だったため、自分のスキルアップに繋がりました。
インターンシップを通して学んだこと
静的解析ツールを利用し、コードの品質を保つ
今回はRuboCopを利用しました。静的解析ツールを利用することで、コードを一定の品質に保つことができました。
これにより、コードレビューしていただく際の負担を軽減することができるということを学びました。
また、スタイルガイドに沿っていないコードは警告してくれるため、書き方に関する不毛な争いは避けられるメリットがあるということを学びました。
レビューしやすいPull Requestの作り方
自分の書いたコードを取り込んでもらう際にはPull Requestを出します。
レビューには自分の作業を中断し、多大な労力と時間を要する必要があります。
そのため、レビューが開発スピードのボトルネックになりかねません。
そこで以下の記事を参考に、UIの変更前と変更後が一目でわかるようにBefore/Afterのスクリーンショットを横に並べました。
ある程度考えてもわからなかったら質問する
インターンシップでの大きな学びの中の一つに「ある程度考えてわからなかったら質問する」ということがあります。
長時間悩み続けて成果がないということは避けなければいけません。
周りには自分よりも技術力が高く、助けてくれる人はたくさんいます。
そのため、ある程度考えてもわからなかったら質問することは重要です。
しかし、周りの人たちも自分の仕事があります。
頻繁に作業が中断され対応しなければいけないとなると、その人の仕事が進みません。
そのため、まずは自分でしっかり考えてわからない場合は、どこまでわかっていてどこからわからないのかを明確化することが重要だと感じました。
まとめ
インターンシップを通して、大学では学べないことをたくさん学ぶことができました。
ただ「〜ができるようになった!」だけではなく、これから勉強が必要な箇所も見つけることができました。
これらの経験は自分のスキルアップに繋ると思います。
この経験を活かしエンジニアとしての価値を高めていきます。
新卒採用チームより
河辺くん、約2週間半と短い期間でしたがおつかれさまでした!
夏休みの最後ギリギリまでインターン頑張りましたね。
短い間でも先輩に食らいついてコツコツ改善と実績を積み上げていく姿が印象的でした。
エンジニアとしての技術力向上につながったら幸いです。
ドリコムでは現場で働くエンジニアのリアルな声がわかる学生向けイベント「エンジニアmeetup for student」を実施しています。
次回開催は10/12(水)、今回の参加対象は「普通の開発に飽きた人」。
知見を増やしたい方、ヘンタイエンジニア(自薦他薦不問)の学生の皆さんはぜひエントリーしてください!
https://drecom.snar.jp/jobboard/detail.aspx?id=K5lolNcmW5A