LINE Engineering
Blog

1ヶ月でLINEクローンを開発!LINEの新卒エンジニア技術研修をご紹介

Teppei Miki 2017.05.19

Tech PR at LINE Corp.

LINEで技術PRを担当している三木です。

今年の4月に入社した新卒エンジニア6名が、1ヶ月半に渡る研修を終えて、各チームに配属されました。本記事では、エンジニア職の新卒技術研修についてご紹介いたします。最後までお付き合いください。

はじめに

LINEでは新卒採用を2013年から開始し、その後、採用数は年々増加しています。エンジニア職は、開発/インフラ/セキュリティの3職種を採用しており、オフィスも東京・福岡の2拠点から選択が可能です(福岡は開発職のみ)。
本年度の新卒研修では、エンジニア職6名が全員東京に集合し、研修を一緒に受講しました。研修プログラムは以下のような構成でした。

  • [全職種合同] 入社式〜オリエンテーション(1日)
  • [全職種合同] 全体研修(3日)
  • [全職種合同] ハッカソン研修(4日)
  • [エンジニア職のみ] 技術研修(18日) ←本記事でご紹介

入社式の様子は、こちらの記事をご覧ください。当日のカジュアルな雰囲気を感じて頂けると思います。
全体研修ではビジネスマナー・ビジネスコミュニケーション・同期の相互理解、といったメニューを用意しました。またハッカソン研修は、全職種混合でチームを編成、サービス企画~開発までの工程を疑似体験し、その難しさ・楽しさを実感してもらいました(ここでは詳細は割愛させて頂きます)。

技術研修の目的

今年度の技術研修のプログラムを設計するにあたって、重視したポイントです。

  • 開発/インフラ/セキュリティの各職種のエンジニアが一緒に、チームでアプリ開発を行う
  • 講義は行わず、ひたすら手を動かして開発(講師は適切にフィードバックする事に徹する)
  • 開発プロセスに必要な情報共有・コミュニケーションの方法を、共有ツールを使いながら学習する

LINEでは、新卒/中途という入社区分でワークスタイルが大きく変わることはなく、エンジニアとして技術力は公平に評価されます。実際に入社1年目から高いパフォーマンスを発揮し、社内で高評価を得ている新卒エンジニアは多いです。
ただし、学生時代にインターネット企業でインターン経験を積んできた人もいれば、研究室でアルゴリズムの研究・論文発表にいそしんできた人もいたりと、技術的背景は様々です。また、中途エンジニアと比較すると、どうしてもチーム開発経験が少ないため、入社後チームに配属された時に要領が分からず、困る可能性があります。
そこで今回の研修では、「チーム開発に必要な要素を身につけてもらう」ことに主眼を置きました。

技術研修の概要

今年度の技術研修は、20日間スケジュールを確保する事ができました。その期間内で、6名を3名×2チームに分けて、並行して同じ課題に取り組んでもらいました。平たく言えば「LINEと同じようなメッセンジャーサービスを作る」という事をやってもらいました。以下、概要です。

▼開発物

  • Androidスマートフォン向けアプリ開発
  • サーバ+クライアント型アプリケーション
  • コミュニケーションツール(LINEアプリクローン)

▼開発目標

  • 最小限ライン

    • 複数クライアント間のチャット送受信
    • 個別ユーザー間のメッセージ送受信
    • わかりやすく利用しやすいUIの設計
  • 標準+推奨ライン

    • データ永続化
    • 非同期メッセージ
    • グループ機能
  • オプション

    • スタンプ・画像送受信
    • プッシュ通知
    • (プラスアルファの独自の機能)

▼開発言語・技術・ツール

  • Java
  • RDBMSまたはNoSQLデータベース
  • Git
  • その他使用したい技術があれば講師と相談

▼スケジュール

  • オリエンテーション(1日)
  • 開発シミュレーション(3日)
  • 企画・設計(3日)
  • 開発・デバッグ・単体テスト(9日)
  • 総合テスト・フィードバック(2日)
  • 成果発表(2日)

▼チーム運営のルール

  • チームリーダーは毎日交代制
  • 最初にスケジュール・チーム内での分担を決定
  • 進捗管理はTrelloで行う
  • コードレビュー・マージはリーダーが行う
  • 朝会・夕会にて、リーダーが各チームの進捗を報告
  • 個人の進捗については、日報で提出
  • 残業・休日出勤は厳禁

▼開発規約

  • 企画・設計時、命名・コーディング規約を各チームにて決定、それに従い設計・開発を進行
  • 開発時、コードレビューにて開発規約に違反している場合は差し戻し

特に技術的な講義を用意せず、いきなりチーム開発でスタートしたので(流れを掴んでもらうために開発シミュレーションは行いました)、新卒たちは当初やや戸惑ったようです。ただ今回の6名はWebサービスに関する開発スキルを持っていたため、講師側では適切な場面で必要な指導・フィードバックを行う事に徹しました。

各チームとも、開発にあたり必要となる・使いたい技術(Kotlin/Firebase/gRPC/spring boot/Docker/ReactiveX etc.)を自発的に調査し、採用していました。またセキュリティ職のエンジニアが所属するチームはE2EE(End to End Encryption) を実装するなど、同じ課題に取り組んだにも関わらず、それぞれ個性あるアーキテクチャーのサービスが出来上がりました。またチーム開発の経験の浅さからか、両チームとも工数見積もりの大変さを実感したようです。

なお突発的なイベントとして、開発の中盤あたりで仕様変更を両チームに指示しました。リアルな開発現場に近い体験を意図していたのですが、Webサービスにつきものの指令に新卒エンジニアたちも果敢に対応しました。

最終日は、配属先チームのマネージャー/メンターを前に、成果発表会を行いました。準備〜本番まで1.5日とタイトな準備期間でしたが、事前にプレゼンのリハーサルを行うなど入念に準備して臨んだ甲斐があり、温かい反応で迎え入れられました。両チームとも緊張の面持ちでスタートしましたが、先輩からの「どうしてその技術を採用しようと判断したのか」「そこは設計的に矛盾していないのか」といった鋭い質問に対して、自分たちの言葉でしっかりと回答していたのが印象的でした。

研修を受けてみた感想

研修を終えた新卒のうち3名に、簡単に感想を聞いてみました。

▼参加者紹介(L to R)

  • 山口(LINE Fukuoka 開発1チーム配属。以下、Y)
  • 久保田(セキュリティ室 アプリケーションセキュリティチーム配属。以下K)
  • 土屋(ITサービスセンター ネットワークチーム配属。以下T)

Q. 新卒研修を振り返っていかがでしたか?感想を教えてください。

Y:これまでインターンしてきた会社は即戦力採用だったため、すぐに現場に参加してコードを書く、という環境でした。LINEに入社を決めた理由の一つが、エンジニアとして学習する環境が整っている点だったので、入社後に研修がしっかりと用意されていたので安心しました。

T:自分はこれまでアルバイトした会社では個人開発だったため、チーム開発が体系的に学べて非常に身になりましたし、楽しかったです。新卒研修は、linuxコマンドとかプログラム言語の演習が多いと聞いていたので、いきなりチーム開発で始まったのには驚きました。

K:すでに知っていることをなぞるような研修より、刺激はありましたね。個人開発だとなかなかやらないような、世の中で一般的に行なわれている開発のやり方を学ぶことができたのはよかったです。あと、研修終了後に打ち上げを会社が用意してくれていたのも嬉しかったですね。

Q. 今回の研修で新しい学びはありましたか?

K:E2EEの理解が深まりました。とはいえ自分でまだまだというところもあるので、論文を読んだり詳しい人に質問して理解を深めようと思います。

T:しっかり設計して工程を立てて開発に取り組んだのは良い経験になりました。
Y:タスク管理方法など、現場によっては触らないけど抑えておくべきことを研修中に一通り経験できたのは非常に良かったです。

Q. 大変だった、苦労した点はありましたか?

Y:これまで個人開発では経験がない部分は多少大変でしたね。それぞれ得意なところを持ち寄ったりググったりを繰り返しながら、チームでなんとか協力して乗り切った、という感じです。

K:Dockerを開発環境として使っていたのですが、工数の関係で社内サーバでオーケストレーションツールのセットアップを諦めて1サーバで動かすようにしました。工数の見積もりは意外に大変でしたね。

T:androidの開発経験のある人がいなかったため、androidの実装に入るまでに勉強会を集中的に行いました。それによって、全員がandroidの開発力をある程度向上することができました。

Q. チームに配属後、現場でどういったことをやりたいですか?

T:今回の研修で自動デプロイやチャット通知を実装したらチームメンバーが助かったと言ってくれたのが嬉しかったので、引き続き開発者をサポートできるような事をやっていきたいですね。

Y:自分はLINEのサービスが好きでLINEに入社したので、1ユーザーとして、アプリのユーザビリティを高めることに貢献したいです。

K:Githubのリポジトリが社内publicなので、各サービスのコードをしっかりと読み込んでいきたいと考えています。

終わりに

今回の新卒研修を通して、新卒たちは現場に入る前にチーム開発の効率的な方法を学べたようです。

LINEでは新卒採用に力を入れるとともに、入社後の研修をはじめ、エンジニアのスキルアップ・働きやすい環境作りに力を入れています。
なお2017年度のサマーインターンシップの募集が開始となりましたので、(エンジニア就業コースは、期間:8/7〜9/1、人数:20名の予定)学生の皆さまはぜひご応募をご検討ください!

training newgrads

Teppei Miki 2017.05.19

Tech PR at LINE Corp.

Add this entry to Hatena bookmark

リストへ戻る