Septeni Engineer's Blog

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

新卒研修を受けて

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

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に挑戦したい方もどしどしご応募ください!

第2回新宿Geek Loungeを開催しました!

2年目エンジニアの大北です。 今日は9/5に開催した弊社主催のエンジニア交流イベント、第2回新宿Geek Loungeのレポートをお送りします!

第2回目のゲストは、スターバックス社のJamie Allenさん。(※講演は通訳付きです)

Jamieさんは、スターバックス社のバックエンド開発を牽引するDirector of Engineeringであり、過去にはLightbendでSenior Directorを務めていたそうです。

Scalaエンジニア歴は9年!Effective Akkaの著者、Reactive Design Patternsの共著者でもあります。

20:00〜 Jamieさんの講演(前半)

f:id:sachipapi423:20170906013527j:plain

新宿Geek Loungeは乾杯からスタート。

ビールやワイン、ジュースなど思い思いのドリンクを取って席につきます。

f:id:sachipapi423:20170906015338j:plain

Jamieさんの講演が始まります。 スターバックス社やLightbend社での経験を話しつつ自己紹介をされるJamieさん。実はコーヒーは全く飲まないそうです(笑)

スターバックス社の開発テーマは、「ビジネス価値をもたらすこと」。今回のお話は技術力の追求とビジネス上の価値の関係性をメインにお話いただきました。

f:id:sachipapi423:20170906015853j:plain

Functional ProgramingかReactiveなのか?

Jamieさんの答えはどちらも良いところがあるので取り入れる、でした。

またAkkaを使うべきか、というテーマには、Akkaは必須ではなく、ビジネス上の価値が出せることにフォーカスすべしとの見解でした。

たとえば、1日15億件のエラー通知システムを開発した際もAkka Clusterは必要ないと判断したそうです。

20:30〜 休憩

f:id:sachipapi423:20170906013507j:plain

ここで待ちに待ったディナータイム★

見た目も素敵なお料理を美味しくいただきました!

20:45〜 Jamieさんの講演(後半)

f:id:sachipapi423:20170906013539j:plain

後半のテーマはデータについて。

スターバックスカードに70億ドルもの額がチャージされているスターバックス社は、Jamieさん曰く「銀行」

お金という点で必ず問われるデータの一貫性、また世界中に展開するサービスという点で必要となる可用性のトレードオフは、Kafka、Cassandraなどのシステムを使って実現しているそうです。

Jamieさんが今注目しているのは、Google Cloud Spannerで、データの一貫性を保ちつつスケールもできるのだとか。ただJamieさんご本人も「クレイジーなサービスだ!」(素晴らしいという意味で)とおっしゃっていました。

Google Cloud Spannerの概要はこちらが参考になると思います。 jp.techcrunch.com

Jamieさんのスライドはこちらから見れます。

www.slideshare.net

21:30〜 じゃんけん大会

f:id:sachipapi423:20170906104746j:plain

Jamieさんの講演後、サプライズでDeepLearning4j作者のAdamさんから抽選で本をいただきました。 じゃんけん大会を制した参加者の方に、Adamさんのサイン付き本が贈られました!(おめでとうございます!)

LT① 玉置さん

f:id:sachipapi423:20170906013544j:plain

FutureのExecution Contextを中心にお話していただきました。

詳細はブログでも読めるそうで、恐らくこちらの記事だと思います。

qtamaki.hatenablog.com

最後の締めは庄内弁のありがとう「もっけだの」でした!

LT② Adamさん

f:id:sachipapi423:20170906013627j:plain

そしてAdamさんのLT。

「Adamさん:日本語を勉強しています。けど英語話します」でした(笑)

テーマはDeep Learning For Enterprise、どのようなEnterprise(例えば企業なのか学校なのか)にはどのような形のDeep Learningが適切なのか、などのお話をしていただきました。

ゆっくり分かりやすく話してくださったため、通訳の方はいなかったものの「理解できた!」という声が多かったです。

スライドはこちらからご覧いただけます。

www.slideshare.net

22:00〜 お疲れ様でした!

f:id:sachipapi423:20170906015319j:plain

終始和気あいあいとした雰囲気の会場でした。参加者の方々の会話に花が咲き、イベント後も飲みに行ったとか行かないとか。

次の新宿Geek Loungeは9/19(火)

第3回のテーマはデータ分析基盤! Embulk, ETL, Treasure Dataなどについて、3人の登壇者の方にそれぞれお話いただきます。

shinjuku-geek-lounge.connpass.com

次回も美味しいご飯とお酒を用意して、セプテーニオリジナルのカフェスペースでお待ちしております!