Septeni Engineer's Blog

セプテーニ・オリジナルのエンジニアが綴る技術ブログ

新人研修を終えた新人が研修について書きました

みなさんこんにちは。今年の4月に入社した米田です。

今回は私が入社してからつい最近終えたばかりの新人研修についての紹介と感想を投稿したいと思います。弊社に新卒入社を考えている方は読んで参考にして頂けると幸いです。 研修について紹介する前に、初めましての軽い自己紹介をしたいと思います。

自己紹介

  • 氏名:米田 暦紀(ヨネダ トシキ)

  • 大学:立命館大学情報理工学部

  • 入社直後の技術レベル

    • Java, C, C++,を大学で成績が中間レベル(課題の基本問題はやるけど応用は頑張った形跡だけ見せる(笑))
    • htmlは見てなんとなくやりたいことがわかる
    • フレームワーク経験もほぼなし, チーム開発経験なし

ざっとこんな感じです。はい、わりかし素人です(笑)。正直エンジニアになるのも迷うレベルでした。情報系の学部に入学したものの、最初のC言語の講義で挫折。ポインタでさえ意味不明なのにポインタのポインタ・・・・・はい? って感じでしたね。あの時は本当にきつかった。そんな私ですがなぜか成績も少しずつ上がり、無事卒業し、紆余曲折あって、このセプテーニ・オリジナルに入社しました。私の簡単な自己紹介はこの辺にして弊社の新人研修について書いていここうと思います。

新人研修について

弊社の研修の目標が『早期戦力化』のため、実務で必要なスキルを身につける為に色々な研修があります。インターネットやシステムなどのWebに関わる基礎部分を理解するための研修を始め、アプリケーションに必要不可欠なデータベースについての基礎を固める研修、チーム開発で弊社が採用しているスクラムを学ぶ研修、他にも麻植さんによるScala研修、インフラ関連の研修などなど、手厚い研修があります。それらを終えた後、チームで一つのアプリケーションを作るチーム開発研修を行い新人研修を終えるというのが流れです。

ここでは最後のチーム開発研修について自分が困ったこと、学べてよかったことを書いていきたいと思います。

チーム開発研修について

先にも書きましたがこの研修ではチームで一つのアプリケーションを作成します。今回、メンバーは私を含め3人、期間が1ヶ月、お題は『要件を落とし込んだECサイトを作ること』でした。書き方が意味深ですが、要するに『自分勝手に想像でECサイトを作るのではなくちゃんと要望を聞き出し、それに沿って作り、時には自分からも提案しながら作ってください』ってことです。実務での動き方を意識した研修でもあるようです。 

ECサイトを作るにあたって

チーム開発でのことを書く前に、技術要素について紹介したいと思います。

ざっとこんな感じです。twirlはPlay Frameworkに備え付けられているテンプレートエンジンです。 読み方は色々あるようですが私はトュアル派です。

チーム開発研修 序盤

序盤はどんなECサイトを求めているのかを聞きつつ、自分たちでプログラムの構成を考えていきました。しかしここで早くも問題がありました。Play Framework知らない問題。メンバー全員ががPlay Frameworkを使ったことがなかったんです。なので要望を聞き出しつつ、プログラム構成を考えつつ、Playの勉強(ドキュメント読んでサンプルコード書きまくる)、このサイクルを2週間弱こなしました(笑)。そのおかげで最初はなんで動いているのかわからなかった状態から、なんとか動かせれるものを作れそうかな?ぐらいまでは持っていきました。

中盤

やっと開発をスタートし、順調に行くと思いきやまた問題が発生しました。書きたいことが書けない問題。Scala研修(麻植さんの講義)をこなしたにも関わらず少し複雑なコードになった途端、うまくかけない、エラー祭りでした。研修で結構な難しさの課題を解いてきたと思っていただけに、これはショックでした。原因は完全に実力不足。研修で学んだことはわかっているけど使いこなすレベルになってはないことを痛感しました。データベースのセッションは本当に時間かかった。この時は研修の時に書きまくったノートとScalaコップ本、グーグル先生をフル活用してなんとかメンバーに迷惑をかけないよう必死でした(笑)。そんなこんなで頑張ってさらに2週間が経った頃にメンバーの1人が早抜けしました(優秀すぎた)。

終盤

メンバーが2人になってタスクもコードの量も増えました。ですが自分がコードを書く範囲が多くなることで機能の1つを丸々担当することもあり、出来上がった時はめちゃくちゃ嬉しい。これがモチベーションになりストレスを感じることはありませんでした。結果、ECサイトが完成したのは始めてから2ヶ月弱かかりました。期限はメンバーが減ったこともあり伸ばしてもらいました。終わった時は素直に嬉しかったです。疲れてないと思っていたんですけどその日はめっちゃ寝ました(笑)。

研修を終えての感想と意気込み

まず学べてよかったところが多かったこと。Play Frameworkについてじっくりと知ることができたし、研修で習ってきたこと全てを使ったので学んできたことが一本につながった感じでした。チームで動くことでの立ち回り方も知れたし、自分以外のコードを責任を持って見ることも少なかったので勉強になりました。何より自分がどの程度の実力でどれくらいチームに貢献できるのかがわかったのが大きいと感じています。やはり自分の実力を正しく認識できないと事故の元になるのことを学んだので(笑)。あと新人研修を終えて、最初の自分から比べて明らかに成長していると実感して嬉しいです。 これからの意気込みとして、新人研修で学んだ数々の知識、歯がゆい思い、コードを書く楽しさを初心として忘れずにこれからも頑張ってエンジニアしていきたいと思う次第です。これからも米田をよろしくお願いします。

新卒研修を受けて

こんにちは、新卒の永倉です。
今回はセプテーニ・オリジナルの新卒研修の内容を個人の感想も含めていくつか紹介したいと思います。

Scala研修

Scala研修は外部講師として麻植さん(@OE_uia)が担当してくださいました。

私の研修が始まる前のScalaに関する知識は、
Scalaスケーラブルプログラミング第3版(以下コップ本と省略する)をある程度読んだことがあるが、
ところどころ読み飛ばしていたり、理解できていない部分があるぐらいでした。

研修内容

具体的な研修は以下のような形で行われました。

  • コップ本に沿って講義が行われる

    講義中には、適宜追加の説明や、資料の紹介、
    REPLを使って実際にコードを実行しながら動作を確認することもありました。

  • 講義の後に、演習課題に取り組み、講義で学んだことを確認する。

    最初の方の演習課題は、大して時間もかからずに、解けるものが多かったです。
    ただ研修の後半の方の課題は型クラスについてなどそれなりに時間のかかるものもありました。

  • 課題を提出しレビューしていただく

  • 講義中や課題提出時に質問をさせていただく

    講義、演習共にScalaの知識をつけるための助けになりましたが、
    質問をたくさんできたのが個人的には最も大きな収穫だったと思っています。
    質問への返答はもちろんのこと、
    質問する内容を整理している間に自分の理解が明確になったりと得るものが多かったです。

感想

研修によって自分でコップ本を読んでいる際には、
理解が曖昧であった暗黙の型変換や変位指定アノテーションなどについて
かなり理解できるようになりました。
またコップ本に載っていないことも教えていただきました。
まだ途中までしか読めていませんが、
研修中におすすめされた「Scala関数型デザイン&プログラミング」を読む際にも
今回の研修で学んだことは助けになっています。

データベース基礎

DB自体を使ったことはありましたが、
パフォーマンスの良いSQLの書き方やトランザクション
DBMSアーキテクチャーなどはほとんど知りませんでした。

研修内容

研修では、DBMSアーキテクチャから始まり、トランザクションや実行計画などを学びました。

  • トランザクション

    トランザクション処理に求められる特性であるACID特性を学び、
    さらにトランザクションの知識を深めるために、4種類あるトランザクション分離レベルや
    「ダーティーリード」などトランザクション中に起こりうる現象についても
    MySQLで実際に試しつつ学びました。

  • SQLのパフォーマンス

    まずクエリ処理の流れについての話があり
    その中でパーサやオプティマイザの役割についての説明がされました。
    また、実行計画は統計情報を元に作られるので統計情報が更新されていないと
    適切な実行計画が作られない場合があるといった注意点の説明もありました。
    その後、サンプルのデータセットを使って実際に実行計画を読み解く演習を行いました。

感想

データベースの内部でどんなことが起きているのか全く知らなかったので勉強になりました。
データベースの知識は今後も必要になるので理解を深めていきたいです。

TDD研修

TDD研修を受ける前は、TDDに対して、
「テストを先に書く」開発手法ぐらいにしか認識していませんでした。

研修内容

研修では、まずTDDについての講義が少しあり、
そのあとに実際にペアプロで課題をTDDの形で解いていきました。
テストライブラリはSpecs2を使いました。

課題を解いていく中で、TDDのサイクル

  • 失敗するテスト書く
  • そのテストが通るように実装する
  • テストが通る状態のままリファクタリングをする

の流れを意識して進めていきました。

感想
  • テストがあるとリファクタリングをするときに安心感がある
  • 短いサイクルで進めていくのでエラーが出た時にどこが原因か特定しやすい
  • テストケースを漏れなく導出するのは難しい
  • テストコードを書くためにも知識やスキルが必要
  • 動くテストを元にしてリファクタリングをするのも学習やスキルが必要
チーム開発研修

チーム開発は同期が書いてくれると思うので短めに

私は、チーム開発はほとんど未経験でした。
これまで、チーム開発といえばアルバイト先で少しの間、
2人で開発したぐらいしか経験がありませんでした。

チーム開発研修は成功というより失敗や反省の方が大きかったです。
例をあげるとすれば以下のような点がありました。

  • チーム内での認識を合わせるのが難しい
  • チームの他の人の進捗がわかりづらい、どの程度まで進んでいるかわからないとフォローもしづらい
  • ストーリーを元に自分以外にもわかりやすいようにタスクを分けるのが難しい

実際にチームへ配属になる前に、失敗できたのはよかったかなと
思う反面、もう少しうまくできたのではないかという後悔もある結果でした。

終わりに

研修で学んだことを生かしつつ、これからも頑張りたいと思います。

2泊3日の開発合宿に行ってきました! in 湯河原

こんにちは、広幡です。
残暑が厳しい中、いかがお過ごしでしょうか?
私は引きこもってクーラーガンガンきかせてアトリエシリーズやりこんでます。

そんな中、湯河原に開発チーム20人ほどで2泊3日の開発合宿に行ってきました!
しかも平日の業務時間内で! f:id:t_hirohata:20170919203919j:plain

背景

実は今回が初めてではなく、半年前ほどにも開発合宿に行ってました。 labs.septeni.co.jp

前回の開発合宿で、

  • 参加者の満足度が高く社内交流が深まった
  • データ分析基盤作成などの現在の業務に繋がる成果が上げられた

という成果が出たので、今回は業務に関わることで開催してみよう、という背景です。

目的

今回は業務に関わることをやるという前提で、以下の目的を設定しています。

  • 挑戦
    • 集中できる環境と明確な目標の元で、通常業務を超えた成果を上げること
  • チーム内交流(開発チームは3チームに分かれてます)
    • チーム内外の人と開発し、寝食をともにすることでプロジェクト内の交流を活性化させる

宿泊先

今回の宿泊先はおんやど恵さん
開発に必須なものは完備されてて、部屋、施設、ご飯、温泉、アメニティなど、全メンバーから大好評でした! www.onyadomegumi.co.jp

チーム決め

各々やりたいことを事前に考え、似ている同士で以下のようなチームを組んで取り組みました。

  1. 画像・動画チェック
  2. リファクタ系
  3. CI環境整備
  4. フロントエンド整備
  5. Embulkのプラグイン開発
  6. ECSの勉強

スケジュール

  1. 1日目
    9:40 東京駅集合
    10:00 東京駅発(特急踊り子)
    11:14 湯河原着
    ==== 各自昼食
    12:28 バス(自分で来る人はここで集合)
    12:37 おんやど恵到着
    13:00 開発開始
    19:00 夕食

  2. 2日目
    8:00 朝食
    9:00 開発開始
    12:00 各自昼食
    13:30 中間発表
    ==== 各チーム×5分
    15:00 開発継続
    19:00 夕食

  3. 3日目
    8:00 朝食
    12:00 昼食(お弁当)
    13:30 発表開始
    ==== 各チーム×15分(発表10分+質疑応答5分)+交代時間+休憩
    15:30 結果発表(ベストスピーカーチーム投票+発表)
    15:52 おんやど恵発(バス)
    16:09 湯河原駅着(いったん解散)
    16:34 湯河原駅発(特急踊り子)
    17:46 東京着→解散!

続きを読む

新宿Geek Lounge#3 分析基盤 Meetupを開催しました

こんばんは、@kimutyamです。

弊社で開催した新宿Geek Lounge#3 分析基盤 Meetupのレポート記事です。

f:id:kimutyam:20170919202026j:plain

第1~2回とScalaネタのイベントでしたが、 今回は分析基盤をテーマにイベントを開催致しました。

20:00~20:05 オープニングトーク

弊社、河内の軽快なオープニングトークから乾杯スタート

f:id:kimutyam:20170919203105j:plain

20:05~20:25 EMBULKの歴史 過去・現在、これから

f:id:kimutyam:20170919202904j:plain

gitpitch.com

EMBULKの歴史 過去・現在、これから

はじめに、@hiroysatoさんの登壇です。
題名どおり今までのEmbulkの変遷についてお話をいただきました。
当初はEmbulkのプラグインが少なく出来ることが限定的だったそうですが、 今や200を超えるプラグインが開発されたようです。
@hiroysatoさん自身も必要に応じて、プラグインを開発されたそうです。

資料中のEmbulkプラグインのまとめEmbulk(エンバルク)組み込みプラグインの設定覚え書きは私も普段大変お世話になっているまとめです。

プラグインも資料もなければ作ってきたらしく、 大変素晴らしくEmbulk&Digdagに貢献してこられたのだと改めて感じました。

20:25~20:45 動画系メディア企業で行われているETLの実際

f:id:kimutyam:20170919205310j:plain

動画系メディア企業で行われているETLの実際

続きまして、@smdmtsさんの登壇です。

「分析基盤刷新PoC」「ETL実例紹介」「ETLでぶつかった壁」の3部構成にお話をしていただき、実践向けの内容になっていました。

冒頭のPoCではSSOT(Single source of truth)を目指して検証した結果、 分析基盤の構成にTreasure Dataが導入したそうです。
Firebase Analyticsの生ログをBigQueryで分析したところスキャン量増大問題とSQL難読問題が発生していたところをFirebase Analyticsの生ログを最終的にTreasure Dataにロードすることで解決した具体例があげられています。
その仮定で7つのEmbulkプラグインを開発したそうです。

@smdmtsさんはScalaでEmbulkプラグインを開発していて、 私個人として非常に参考にさせていただいています。

20:55~21:15 セプテーニで分析基盤(Treasure Data)を導入した話

f:id:kimutyam:20170919210116j:plain

セプテーニで分析基盤(Treasure Data)を導入した話

最後に私の登壇です。 私が日々開発しているPYXISでどのように分析基盤を構築したかを説明させていただきました。
導入背景とアーキテクチャ構成、Treasure Dataを利用して良かった点をお話しました。
アーキテクチャはよく使われているパターンかもしれませんが、 社内事情を踏まえた上で開発者とデータアナリスト(非エンジニア)との業務連携するために工夫したことを紹介しました。

※本件は後日別途ブログエントリーで補足させていただきます。このエントリーにもリンクを載せておきます。

21:20~22:00 懇親会&じゃんけん

f:id:kimutyam:20170919213308j:plain

懇親会の風景です。
@oreradioさんよりTreasure Dataグッツをいただき、じゃんけん大会をしている様子です。
ありがとうございました!!

感想

今回は私も登壇しましたが、とても楽しかったです。(小並感)
私はEmbulk/Digdag/Treasure Dataに関して歴が浅いのですが、
界隈の人たちがとにかく優しいおかげですぐに参入できました。

日々の業務でTreasure Data社からの手厚いテクニカルサポートを受けたり、
Twitterで困ったことをつぶやいたら丁寧に教えていただけたり、
普段仲良くさせていただいてる@smdmtsさんに直接聞いたり..w

ありがとうございました。
今後とも宜しくお願い致します。

Scala関西Summit2017に参加してきました!

セプテーニ・オリジナルからの参加者

f:id:takashima0411:20170909182509j:plain
弊社からの参加者
8月にジョインしたばかりの青山さんを含め、5名が弊社から参加しました!

全体の流れ

寿司

これはScala関西Summitに関係ありませんが、前日に梅田で食べたお寿司です。

f:id:takashima0411:20170908202735j:plain
寿司
f:id:takashima0411:20170908202341j:plain
とても美味しい寿司

会場

f:id:takashima0411:20170909101826j:plain
会場外観
会場の天満研修センターです。 遠くから見ても圧倒的存在感を放つ立派な会場です。

f:id:takashima0411:20170909100626j:plain
メインホール
弊社の名前が付いたメイン会場です。 少し恥ずかしいですね。

受付

f:id:takashima0411:20170909100835j:plain
受付
会場前から参加者で賑わっており、Scalaの関西での盛り上がりを感じさせます。

お昼ごはん

f:id:takashima0411:20170909131245j:plain
お好み焼き
弊社社員で天満のお好み焼き屋さんでお昼をいただきました。 この後河内さんによるこの世のものとは思えない味のたこ焼きテロがあったとかなかったとか。。。

懇親会

f:id:takashima0411:20170909202047j:plain
懇親会会場
さくらインターネット株式会社様のオフィスをお借りして懇親会が開催されました! グランフロントの高層階から見える夜景は素晴らしいうえ、料理のクオリティも素晴らしいものでした。

弊社社員のセッション

元インフラエンジニアが
Scalaを触ってつまづいたところ。

f:id:takashima0411:20170909110045j:plain
尾上さん

最近インフラエンジニアからアプリケーションエンジニアに転向した尾上さんです。 新卒社員と一緒に麻植さんからScala研修を受けた際に感じた難しさなどを語ってくれました。 インフラエンジニアとしてチームを支えてくれのと同様、これからはScalaでチームを支えてくれること間違い無しですね!

Scala の関数型プログラミングを支える技術

f:id:takashima0411:20170909115859j:plain
青山さん

8月に入社されたばかりの青山さんです。 青山さんの関数型プログラミング力には弊社も非常に期待しており、その知識の一端をここでは発表していただけました。

iOSエンジニアのためのScala入門

f:id:takashima0411:20170909160439j:plain
嶽さん

GANMA!でエンジニアをしている嶽さんです。 ScalaだけでなくSwiftも使いこなす嶽さんからはSwiftエンジニアが0からScalaを学ぶ際に押さえておきたいポイントを紹介していただきました。

Scala on JVM をプロファイリングするツールの紹介

f:id:takashima0411:20170909163143j:plain
河内さん

PYXISのテックリード河内さんです。 フィボナッチ数列を例にJVM上のパフォーマンスチューニングの方法を紹介していただきました。 直前にタイトル変更となるトラブルが有りましたが、さすがの内容で聴衆の評判も良かったようです!

PlayとIntelliJで学ぶデバッグ入門

f:id:takashima0411:20170909160937j:plain
PYXISの平社員です。 今回は身の回りのみなさんが意外にデバッガを使えていなかったので、デバッガの基本的な使い方と、IntellliJ上で動かした場合、sbt上で動かした場合などそれぞれのケースでデバッガをアタッチする方法を紹介しました。 発表時間45分では時間がギリギリで、サンプルもあえて手打ちしたら想定とは異なった動きをしてしまうなど練習不足が出てしまいました。

全体の感想

スタッフの皆さんに手際よくサポートしていただけたため、懇親会も含めつつがなく進行しました。 全体的に時間の余裕があり、ゆったりとお昼ごはん食べられたり移動の合間にも質問などが行なえたのはストレスフリーでした。 また、セッションの流れも良く出来ていて、AkkaStreamの話を聞きたければ重複無く順番に聞けるようによく練られていました。 後日動画公開があるとはいえ、気になるセッションを生で聞いて質問できるというのは大きいので非常に嬉しいですね。

私はScalaMatsuriには毎回参加していますが、Scala関西Summitの熱気も決してそれに負けないと感じました。

弊社からの参加者が全員登壇するというのは去年私が入社した時には考えられなかったことです。 人材が厚くなってきていることを感じますね。

人材募集中!

株式会社セプテーニ・オリジナルでは一緒に働いていただけるエンジニアを募集しています。 すでにScalaを使いこなしている方も、これからScalaに挑戦したい方もどしどしご応募ください!