Gaiax TechEgg's Blog

非エンジニアがエンジニアを目指すブログ

インターンを卒業します!

こんにちはー!

おひさしぶりです!@fukufukumarimoです。 3月も終わりにさしかかり、出会いと別れの季節ですね。 私もこのブログを開設きっかけになったエンジニアインターンを3月末で卒業することになりました! それに伴いこのブログもクローズすることとなります。

6月より、Perlの基本的な内容をお送りしてきました。 ブログ公開当初では公開されていなかった、勉強する資料となったPerl入学式の資料も今では公開されています。 引き続き参考にしてくださいね。

6〜9月と基本的な内容を一通り勉強した後は、このエンジニア基礎の総仕上げとして、Amon2で簡易的なTwitterを作成しました。 その簡易的なTwitterを作成した後は、12月〜3月まで社内の蔵書管理ツールのチームにジョインさせていただき、エンジニア基礎学習では見落としていた箇所をまたこの期間でいろいろ学びました。

最後の投稿ではこの最終課題とチームにジョインした内容を振り返ってみたいと思います。

最終課題:簡易Twitterの作成

課題の内容

これまで学んできた知識を利用して、1人で1つのアプリケーションを開発する研修です。開発するアプリケーションの題材はAmon2を使った簡易的な「Twitter」です。ログインして発言を投稿できたり、フォロワーの発言をタイムラインで見れる機能を中心に実装します。この研修の目的は、「アプリケーション開発の全てを, 1人でチャレンジする」という所にあります。

実装内容

以下の機能を実装します。DB設計書、URL設計書、画面イメージなどは参考資料が作成されていました。

  • ユーザ登録
  • 発言投稿
  • タイムライン(ホーム)
  • ログイン
  • ログアウト
  • 全投稿表示
  • メンション確認
  • プロフィール編集

学んだ点

  • 一通りの実装仕方はわかった

Amon2をインストールして自分で実装を進めていったので、全体的に実装して形にしていく雰囲気は掴めたかなと思います。

  • 他人からコードレビューしてもらう大切さ

自分の知識だけで実装していく力も大切ですが、他人にコードを見てもらってレビューしてもらうことも大切だと感じました。自分が思いついたのとは違う切り口での実装方法もあります。それを知ることで、どんどん自分の実装できる幅が広がっていくなと感じました。

  • わからなかった時に質問する大切さ

私はこれが本当に苦手でした。わからないけど、あと5分ググったらわかりそう、と思って1日暮れてしまうタイプです。それを繰り返すと「今更聞けない」という気持ちに変わり、ますます質問できなくなるのです。これは悪循環に陥ってるので早期に脱したほうが身のためです。自分で「10分やってわからなかったら質問する!」というように決めて取り掛かっていくほうが賢明です。そして、質問する際は「なんで質問するに至ったか、どこがわからなくて詰まっていたか」を添えると、優しく教えてくれます。

  • エラー吐いた時の対処法

エンジニア基礎学習では学びきれなかった、エラー吐いた時の対処法。Dumperなどを使って、どこまできちんとデータが渡っているのか?を確認し、問題箇所をいち早く探すことがとても大切です。最初はエラー文がエラー内容を教えてくれているのにもかかわらず、その内容がわからない時があります。その時も素早く質問しましょう。また、エラー箇所を修正する時は「できてるはずなのにできないのはなんで?」というフィルターをかけてしまうと、非常につまづきポイントが見つけづらくなります。エラー文は嘘つきません。謙虚な心で見つけて対処しましょう。

  • 実装する楽しさ

自分が書いたコードがどんどん反映されて、形になっていくのは非常に楽しいです!!!!

社内蔵書管理ツールのチームへのジョイン

上記のツイッター課題を経て「ひとりでやる」というより「チームで何か取り組みたい」という意思があったため、このチームへジョインしました。社内蔵書管理ツールというのは、この名前の通り、社内にある本の在庫管理をするシステムで、2015年入社の新人エンジニアの方が研修の最終課題として制作しました。今、社内の本棚にある蔵書検索、貸し出しや返却もできます。Hipchatとも連携して、入荷した際にはメンションが飛んでお知らせするというような仕組みにもなっています。そんな今となっては欠かせなくなっているツールで、「棚卸し機能」があると、本の管理がとてもしやすくなるとのことで機能実装にかかわることになりました!

棚卸し機能

  • 本棚でISBNを入力して本の情報を読み込む
  • DBと照合して在庫数が一致するかどうかを確認する機能

学んだこと

  • チームでの連携

「チームで取り組みたい」という意思があっての参加なのにもかかわらず、ついつい報告連絡相談を怠りがちになってしまいました。「もう少し完成してから報告しよう」「もう少し考えてから質問しよう」と考えがちに。そこはチームなので、もっと自分をさらけ出してバンバン発言していくべきだったなと思います。コミュニケーションがなくなっていくことがチームとしてやっていく上では一番避けた方がいいことだとも感じました。チームって支え合う感じが一番の魅力なので感謝する気持ちを忘れないで、適度に頼ることも大切だと思いました。

  • 誰もが読んでわかりやすいコードをかくこと

また、コードはチームみんなの財産になるということを考えて、配慮しながらわかりやすい命名にしていく必要が有ります。また、実装も読んでわかりにくいものだと、他のチームメンバーへの負担がかかります。こういった点で常にわかりやすい命名、わかりやすい実装を心がけることが必要だと感じました。

もちろん最終課題時にも感じた質問する大切さも痛感しました。なかなか質問できない体質は変わりにくいですが、自分でも努力することが大切です。

まとめ

最終課題で「ひとり」ですすめていくことをメインにし、チームにジョインすることで「人と連携」しながらすすめていくことをメインにしていきました。このどちらにも共通していたことは、質問する大切さです。課題の早期発見や早期解決は物事をすすめていくにあたって、非常に効率的です。また、自分ではカバーできない知識もたくさんあるともいます。その知識を持っているのは自分の周りの人たちです。どんな機能もいろいろな実装の仕方があります。ひとによって見方が全然違うことを心に留めて、周りの方と協働してよりよいものを作り上げていくことを忘れないようにしたいです。

最後に

6月開設からご愛読してくださった皆様誠にありがとうございました。 この記事をもってブログ終了としたいと思います。 これからも自分でエンジニアリングを学び続けたいと思います。 Perlのコミュニティにいくつか顔を出させていただいた時に、お話ししてくださった皆様、どこかでまた見つけた時にはぜひ声かけてくださいね。

ありがとうございました!