JAWS DAYS 2019 にサポーターとして参加してきました

こんにちは。freee の SRE チームの山本です。 先日開催された JAWS DAYS 2019 で、3 セッション 4 名の登壇とブースの出展をさせていただきました! また、弊社は過去に iOSDC2018 等でブースの出展をしております。

developers.freee.co.jp

セッション

Container/k8s で 2 名(2 セッション)、Supporter Session で 2 名(1 セッション)が登壇しました。 どのセッションも立ち見続出で、大変賑わっていました! AWS での Kubernetes 運用の関心の高さをひしひしと感じました。

ここからは各登壇者に一言ずついただきたいと思います。

EC2からKubernetesへの移行をセキュリティ/モニタリングから考える(杉浦英史/河村篤志)

こんにちは、CSIRT の専属エンジニアとして、色々首を突っ込んでいる杉浦英史と申します。 今回は、お客様の重要な情報を扱っている freee が、セキュリティとスタートアップとしての進化の二兎を追うために、Kubernetes 移行の時にどう考えて作り込んでいったのかを紹介しました。

f:id:yamamo429:20190306184748j:plain

Cyber Kill Chain の考え方で多層防御を考えると、EC2 instance のシステムから Kubernetes に移行する時に考慮しなければならない点が、整理できるのではないかと思っています。 freee の現時点の考えを積極的にオープンにしていますので、詳しくはスライドを参照していただけると嬉しいです。


こんにちは、SRE の河村です。

システムの健全性を保ち改善していくためにも監視は必要であり、その重要性は古今東西、システムの形態問わず普遍的なものです。しかし近年のトレンドであるマイクロサービス化においては、監視対象が多様化・増大化しており、効率的かつ正しい監視基盤の構築は一層重要度を高めています。全てのケースにマッチする最適解はなく、それぞれの要件にあった技術選定が大切なのは当然ですが、本セッションでは freee での事例として、Elastic Stack を活用した Kubernetes 向けの監視基盤について紹介しました。

f:id:yamamo429:20190306190944j:plain

詳しくはスライドを参照いただき、よろしければご意見・フィードバックいただけると幸いです。

なお、本発表は昨年末のAdvent Calendarの拡張版となっています。そちらも興味あれば是非御覧ください。 developers.freee.co.jp

Kubernetes を使ってエンジニア組織の生産性を上げよう(坂井学 @manabusakai

こんにちは、SRE チームのプレイングマネージャーをやっている坂井 (@manabusakai) です。

最初の紹介にもあったとおり、今年の JAWS DAYS には freee から 4 名が登壇しました。全員が Kubernetes をテーマにしていたので、自分はあえて技術的な話ではなくて、なぜ Kubernetes を導入しようとしているのか、Kubernetes に何を期待しているのか、といった話を生産性という切り口から紹介しました。

f:id:yamamo429:20190306191515j:plain

またセッションの後半では、freee が今まさに取り組んでいるマルチテナントクラスタからシングルテナントクラスタへの移行についてもご紹介しました。 Kubernetes を実際に 1 年ほど運用して見えてきた課題を踏まえて、EKS へ移行するのに合わせてシングルテナント化を進めています。 Kubernetes を採用している他社の事例を見ても前例がないので、移行してみた結果はまたどこかで発表したいと思います。

スライドも公開していますので、興味のある方はぜひご覧ください。

Kubernetes on AWS/EKSベストプラクティス(九岡佑介 @mumoshu

こんにちは!コンテナヒーローです。

これまで繰り返しいろいろな形で Kubernetes のベストプラクティスをお話してきました。今回は、昨年末満を持して Tokyo リージョンに EKS が上陸したことに起因するアップデートも含めて、2019 年 2 月のいま、AWS で Kubernetes を採用するのはどんな理由からか?採用するとしたら運用する際にどんなことに気をつければいいのか?といったことをお話させていただきました。

f:id:yamamo429:20190306192159j:plain

マイクロサービスアーキテクチャを採用している freee のエンジニアによって最適なプラットフォームとはなにか? freee の規模でそんな「理想のプラットフォーム」をデザインするとしたら、それはどんなものか?そんなことを考えながら、Kubernetes on AWS を運用する中で得た知見を全力であえ共しています。ぜひスライドを読んでみてください!

ブースの出展

個人事業主の方、副業なさっている方、勤務先でご利用いただいている方など、実際に使っていただいているユーザーさんとたくさんお会いすることができました。 私は先月freeeに join したばっかりなのですが、こんなに早くたくさんのユーザーさんとお会いすることができて感動しました!

f:id:yamamo429:20190306193846j:plain

ところで、みなさま確定申告のシーズンですが無事に完了しましたか? ということで、確定申告ガイドをお配りしたのですが、あれよあれよという間になくなってしまいました。 会計 freee の導入を検討くださっている方、まだなかなか使いこなせていない方の手助けにきっとなってくれていると思います! 疑問等あればぜひ会計 freee のサポートへ御連絡くださいね。

また、今回もノベルティの一つとして、freee のカンパニーロゴ入りのキートップを用意していたのですがこちらも大変注目を浴びていました! 私は自作キーボードの存在を知ってからまだ日が浅いのですが、エンジニアの心をくすぐるアイテムだとつくづく感じました。 今後もブース出展などでプレゼントすると思いますので、またの機会をぜひお楽しみに!

まとめ

f:id:yamamo429:20190306194539j:plain

私自身はJAWS DAYS への参加は初めてだったのですが、盛り上がりが想像以上で圧倒されてしまいました。 入社早々にたくさんの freee ユーザーの皆様にもお会いできた貴重な場でした。今後もよりユーザーさんにとって価値あるサービスをお届けできるよう精進していこうと思います。

最後に

freee では SRE エンジニアを募集しています。AWS や Kubernetes に興味のある方という方、私たちと一緒に働きませんか?みなさまの御応募お待ちしています。

jobs.freee.co.jp

2018年度も早稲田大学で「アルゴリズムとデータ構造」の特別講義を行いました

freee株式会社の浅羽です。普段はエンジニアリングマネージャーをしつつ、エンジニアの新卒採用も担当しております。昨年度に引き続き、今年度も早稲田大学様での特別講義を行う機会をいただきました。

壇上で講義をする筆者の写真

昨年のレポートについてはこちらをご覧ください

developers.freee.co.jp

講義内容を昨年度と比べて何を変えたか

さて、今年度の講義内容を考える上でどこをメインゴールにしようかと考え、最終的に昨年度と同様にアルゴリズムとデータ構造が実際にどう使われているかのイメージをもたせること主軸としました。

  • 難しすぎる内容を伝えることで変に挫折感を与えない
  • 簡単すぎてもよくないので学びのあるものにしたい

2017年度の講義資料がボリュームや難易度が程よいところだったので、最終的にはだいたい同じ内容で講義することにしました。資料はこちらになります

  • Webサービスの裏側の概要
    • リクエストに対してレスポンスを速く返したい
    • 何かしらのデータを読み書きすることが多い
    • ユーザが識別されることが多い(ログイン機能等)
  • RDBMSで使われているアルゴリズムのうちの一部
    • B+Tree
    • ソート (クイックソート、マージソート、Top-K selection)
    • テーブル結合(Nested Loop Join, Merge Join, Hash Join)
    • いかに速くデータを検索・操作するかの一例として紹介
  • KVS
    • セッション管理を例に紹介
    • ユーザの識別の一つの手法として紹介
  • キュー
    • 非同期処理を実現するためのコンポーネントとして紹介
    • レスポンスタイムを早くするために急いで処理しなくても良いものは後回しにするよ、という説明

speakerdeck.com

練習問題

こちらも昨年と同様にテーブル結合を3つのアルゴリズムを実装してもらい、入力データが大きくなった場合にどれくらい実行時間が変わってくるかを計測してもらいました。

Nested Loop Joinに関しては内部表のスキャンはフルスキャンのみ実装している前提なので、実際はB+Treeからのフェッチでそこまで重くならないこともあるよ、とは口頭で補足しつつ、データが数十万件くらいになると大きく実行時間が変わってくるのを体験してもらいました。

GitHubに解答例を置いておきました。

github.com

結果どうだったか?

講義が終わってから匿名でアンケートを取り、42名の学生の方から回答をいただきました。ご回答ありがとうございます!

本日の講義を、知人や友人に勧めたいと思われますか?

  • 「ぜひ勧めたい」を10、「全く勧めたくない」を1とした場合の10段階評価でご登録ください。

アンケート結果のグラフ

NPS(ネットプロモータースコア)という、顧客(今回の場合は学生さん)の推奨度の測定で用いられる手法で計算をすると、 (12 - 9) / 42 * 100 = 7.14となりました。この数字の絶対値の適正がどこかはわかりませんが、昨年も同様のアンケートを取ったところだいたい同じくらいの数字でした(経年で追いかけるのが大事だなと思いますので、次回も同じ方法でスコアを計算して改善したかどうかを計測したいと思っています)。

一方で1を一人でもつけさせてしまったのは、私の講義の改善の余地が十分にありそうなので、定性コメントにある内容をまずは改善していこうと思います。

本日の講義の難易度はいかがでしたか?

  • 「難しすぎた」を5、「簡単すぎた」を1、「丁度よかった」を3とした場合の5段階評価でご登録ください。

アンケート結果のグラフ

定性コメントの抜粋(私が一部コメントを編集)

以下のように良い点と改善点のフィードバックをいただきました。特に資料については字を詰め過ぎたりしている箇所があるので、次回また講義する機会がある際には修正しようと思っています。

  • 回答
    • 実際にどう使われるのかイメージができた
    • 演習問題が適切でよかった
    • 後ろの方からだと資料の字が小さかった
    • 演習問題の回答がほしい

まとめ

今回は2回目の講義になりましたが、内容や難易度に関しては程よいサイズだったのかなと思います。一方で改善のポイントは大いにありそうなので、プレゼン能力等を改善しつつ、学生の方にとって学びのある講義を引き続き提供できればと思っております。

宣伝

freeeでは現在2020年新卒エンジニアを積極採用中です。もし興味ある方はfreeeの新卒採用ページをぜひ御覧ください!

jobs.freee.co.jp

ボタン一つで勤怠打刻できる方法、お教えします

こんにちは。freee株式会社で CISO 兼 CIO をやっている土佐です。

御大層な肩書きですが、情けないことに勤怠打刻が苦手です。

やらなきゃと分かっていても、ズルズル先延ばしにして、いざ登録しようとすると、何時で登録したらいいか分からず、あれこれ時間を調べてなんとか登録すると言うような有様です。

しかし、当社提供かつ当社利用の人事労務freeeには打刻APIが備わっています。

すでにこのAPIを使って弊社社員は声で打刻 したり、VRで打刻 したりしているわけですが、私は ボタンで打刻 を実現することで、この怠惰な勤怠打刻生活に終止符を打とうと考えました。

ボタンで勤怠打刻

AWS IoT エンタープライズボタンを持っている写真
AWS IoT エンタープライズボタン

ボタンには、 AWS IoT エンタープライズボタン を使います。比較的安価で購入できて、手軽な設定で AWS Lamda と接続することができます。

出来上がりの仕様はいたってシンプルです。 ボタンをワンクリックで出勤打刻、ダブルクリックで退勤打刻 というだけです。打刻がうまく行ったかどうかのフィードバックは欲しいので、Workplace Chat(弊社で利用している社内SNS の Workplace のチャット機能)に、通知を送ります。

Workplace Chatに打刻成功したときに送られてくるメッセージのスクリーンショット
Workplace Chat に 打刻結果を通知

我ながら最高のUX

このボタンで勤怠打刻するようになってから2ヶ月ほど経ちますが。我ながら最高のUXだなと思っています。

出社する、もしくは退社のための片付けをする、という過程で必ず机の上に置いてあるボタンが目に入り、そのボタンをクリックすれば打刻すれば、勤怠打刻完了なわけです。

そうだったんだ、これだったんだ。と、社会人生活始まってから 15年以上苦手意識を持っていた勤怠報告をようやく乗り越えることができた気分で最高です。

実装方法の社内ハンズオンを開催

ところで、仮にもエンジニア。こんな簡単な実装をやり遂げただけで自己満足しているようでは、 freeeのエンジニアの名折れです。

そこで、エンジニア以外にもボタン打刻できるようにと、ハンズオン会をやるとしたら参加を希望するかと社内SNSで問いかけてみたところ、思いの外大きなリアクションがありました

社内SNSでハンズオン会を呼びかけた投稿のコメント欄のスクリーンショット
社内SNSでハンズオン会を呼びかけたところたくさんのリアクションが

これを受けて、ハンズオン会を実際に開催し、多くの社員が集まってくれました。

社内のセミナールームにて、十数人集まった社員の前で説明をする筆者の写真
社内で開催したハンズオンの様子

ハンズオン資料を「あえて公開」

そして!このボタン打刻のUXを 人事労務freeeのユーザの皆さんにも体験してもらいたいと考え、社内ハンズオン資料を公開したいと思います。

打刻ボタン開発の社内ハンズオン資料

打刻結果の通知が Workplace Chat になっていて、必ずしも一般的ではないと思うので、Slackなど適宜ご利用のchatツールに置き換えてご利用いただければと思います。その他、社内資料をほとんどそのまま一般公開する形になっており、色々配慮不足な点があるかもしれませんが御了承ください。

こういったことを色々懸念して動けなくなるくらいであれば、「あえて共有する」のが freee の価値基準に定められてるところであります。その精神に則り、「あえて公開」してみようと思います。よろしければご参照ください。

Wanted!

freee では、「スモールビジネスを、世界の主役に。」のミッションの元、マジ価値を実現する エンジニアを募集 しております。まずは話を聞いてみたいという、お問い合わせでも歓迎しておりますので、お待ちしております。

www.wantedly.com

jobs.freee.co.jp

新卒で入ってくる君たちへ

こんにちは、freee株式会社 CTO の横路です。裏カレンダーでは初日を担当しましたが、表では最終日を担当します。

この記事はfreee Developers Advent Calendar 2018の最終日です。

新卒でエンジニアを目指すといってもさまざまな選択肢があるなかで、わたしは新卒の皆さんに自信をもってfreeeを選んでもらいたいと思っています。そこで今回は、なぜfreeeは新卒を採るのか?採用面接ではどこを見ているのか?新卒のみなさんに何を期待するのか?なぜ新卒でfreeeを選ぶのか?をお伝えしようと思います。

freeeの新卒採用でひとつ特徴的なのは、3年間でスモールチームのCTOになってほしいと伝えてることだと思います。CTOという役割自体、会社やフェイズによって多様に異なる中で、このフレーズ自体が眉唾ではありますが、今回はその真意もお伝えします。

なぜfreeeは新卒を採用するのか

そもそもなぜ新卒なのか。freeeが新卒採用を拡大してる理由は色々ありますが、次の3つはその中でも大きな要素です。

1. すでに優秀な新卒メンバーが急成長していて、今後も期待値が大きいから

freeeでは昨年度から新卒エンジニアが入社してますが、すでに1年目から機械学習プロダクトのインフラ立ち上げから運用までやり遂げたメンバーや、2年目で新プロダクトの最速リリースを達成したメンバーがいたり、その他にもすでに多くの新卒エンジニアメンバーが大きなチャレンジを任されて急成長してます。優秀な新卒メンバーに大きな期待値があり、会社も急成長を続けているから、これからも大きなチャレンジを任せられます。

2. 会社のミッションとして、社会に長く価値を届ける使命を持っているから

freeeは、「スモールビジネスを、世界の主役に。」というミッションを掲げて、中小企業の経営を変革するビジネスをやってます。その性質上、われわれのビジネスは一発当てて終わりというものではなく、10年、20年と価値を生み続けないと達成できないであろうものです。その中で世の中のトレンドをおさえたベストプラクティスを、常に瞬発力をもって市場に広く提供しつづけるためには、組織全体を若く保ちつづける必要があると思ってます。

3. 優秀なシニアは優秀な若者に突き上げられてさらに成長できるから

優秀なシニアは若手にとってよきメンターでありよき師匠ですが、シニア自身は案外孤独な存在でもあります。そんなときに、自分を超えていくかもしれない若者のポテンシャルを見て、より高みを目指したり若手の育成に情熱を傾ける優秀なシニアがfreeeでも増えてます。

freeeのシニアには、厳しくも面倒見がよいギークなひとが多いと思います。技術を課題解決の重要な手段のひとつと捉えつつ、それ自体を匠の技として楽しみ、結果として修練を欠かさない人たちです。それが、技術的に常に世の中のベストプラクティスを取り入れようとする風土や意思決定につながってます。

新卒採用で個人的に見るポイント

新卒採用の面談はとても難しいです。中途だと即戦力を求めるから、過去の経験と再現性を中心に深掘りしますが、新卒はたとえ技術的な素養があっても、社会的に影響力の大きなエンジニアリングの経験がある人はほとんどいません。今後の成長を感じる経験にあまり一貫性はないですが、個人的には以下の2点を重視してます。

1. 何かに夢中になって、短期間で成長したり成果を残したことがあるか?

freeeでは特に変化が難しい業界をスピード感をもって変えていくことにこだわっているから、短期間でというのは重要です。短期間でやりきるために、俯瞰的・構造的に課題を捉えて何か工夫したか?やりきることにこだわったか?というところを中心に見ます。

2. そのパッションを人に伝えられるか?

採用面談の評価項目には、面接官の主観が求められる項目もたくさんあります。その中の代表格は「一緒に働きたいか」という項目です。後述するプロジェクトの進め方にも通じますが、究極的にはプロジェクトを前進させるのはリーダーやメンバーのパッションや人柄だったりするので、相手の理解にあわせて丁寧・ロジカルにコミュニケーションができるかなどを見ます。

社交的であったりプレゼンがうまい必要は全くないですが、わかりやすく情熱を伝える力は求めます。

⇒ それでもわからない

それでもやっぱり短時間で見極めるのは難しいから、インターンシップで一緒に働いてみるのが一番というのが結論ではあります。 これはfreeeに限らないですが、短期でもいいからインターンに参加してお互いを知るのが、現状のベストプラクティスです。

新卒エンジニアに3年間で身につけてほしいこと

短いようで長い3年間で、ぜひ身につけてほしいのが、これからの時代の課題解決者に必要な次の2つのスキルです。

1. 顧客にどうやって価値が届くのか、細部まで想像できるようになること

想像できないものはつくれません。または、想像できる限りにおいてのみ最高のものをつくれます。疑似体験でもよいので、フルスクラッチでサービスを企画・開発・運用してみることをすすめます。チームでやってもいいですし、freeeでは他チームへの留学制度を利用できます。

Webサービスであれば、ユーザは何を思ってサービスを開くのか?画面をクリックしたら、裏側で具体的に何が起こってどうやって動いてるのか?あるいはどうやってユーザはサービスを知って、何が決め手でサービスを使ってくれたのか?そのユーザはうまくサービスを使えているのか?それをエンドツーエンドで細部まで想像できるようになることで、エンジニアの課題解決精度が飛躍的に伸びます。エンジニアの本分は課題解決だと思っていて、たくさんの解決オプションを持った上で、最善のオプションを選択できることが価値になります。とびきりのコードを書いても、その他のプロセスに大きなボトルネックがあれば、結果として顧客に価値は届きません。

何でも出来るようになれというわけではないですが、全体感を知った上で、自分の想像力の解像度が高いところ・低いところを常に意識してほしいと思います。

2. プロジェクトの成功体験を積み、よく振り返ること

成功するには失敗から学ぶことが重要とよく言われますが、それと同じくらい、成功体験そのものから得られる自信や勢いも重要です。 もちろん、プロジェクトの成功には様々な要素が絡むため、次につなげるためには自分やチームを客観的に見るための振り返りや セルフマネジメントも欠かせません。freeeでは、若手に成功体験を積んでもらうためのプロジェクトや、2週間に1回以上の 1on1など、メンバーの成長にコミットする環境を用意してます。

⇒ これらのスキルの意味

いまのfreeeの感覚では、これらのスキルを身につけるために3年間くらい必要かなというイメージです(逆に3年で出来ない人は5年、10年かけても出来る確率は低そう)。

そしてこれら2つのメタスキルは、プロダクト開発において役割を問わず応用が効くスキルでもあります。テックリード、アーキテクト、エンジニアマネージャ、プロダクトマネージャなど、役割によって高解像な想像力が求められる領域は異なりますが、課題解決者としての姿勢はすべて共通だと思います。

また、これらのスキルがきちんと身についていれば、たとえ立ち上げ期のスタートアップにCTOとして参画しても、どこでも活躍できてより大きく飛躍できると、スタートアップ界隈を見ていて思います。スモールチームのCTOというのは、「技術やエンジニアリングを軸に、プロジェクトの成功に大事なことなら何でもとことんやる」という役割の象徴だと思っていて、これらのスキルを身につけたら、freeeでは新しいサービスや事業はもちろん、さまざまなプロジェクトで次にチャレンジできる環境を用意していきます。

わたしが新卒3年目でfreeeの立ち上げに参画したときには、これらのスキルが十分でなくても腕一本でギリギリなんとかやってましたが、ある側面でものづくりのハードルが下がり、小さなサービスで大きな価値を届けやすくなってきている今の環境を考えると、これくらいのスキルがないと生き残るのは難しいなと感じてます。

なぜ新卒でfreeeを選ぶのか

さまざまな会社がある中で、なぜ新卒でfreeeを選ぶか?それは以下の2点から、エンジニアの本分としての本質的な課題解決スキルを最短で磨く環境があるからだと考えてます。

1. 世の中のリアルな社会問題解決がテーマ

freeeのターゲットである日本のスモールビジネスには、顕在化した課題が山積みです(低迷する生産性、労働力不足、後継者不在、黒字倒産...)。変わらなきゃいけないことはわかっているけど変わるのが遅れている業界に対して、どうやったら変えていけるか。やってみてうまくいかなければ、他にどういうオプションをとれるか。数打ってワンチャン当たればラッキーではなく、課題が解けるまで粘り強く頭をひねり手を動かし続けて社会問題を解く経験が、再現性があって市場価値の高いスキルにつながります。

2. スピードや世の中のベストプラクティスを重視

freeeは新しい技術もどんどん取り入れていくし、実際に創業から6年で7割の技術スタックはより最新のものに移行済みです。100人を超える開発組織で新しいプロダクトや機能を全速力で出しながらも、5年でRailsは3.2 -> 5.2へ。そしてバックエンドサービスはGoによるマイクロサービスへ、フロントエンドはCoffeeScriptから最新Babel on ES、Backbone.jsからReactへ、インフラはKubernetesへと全レイヤで技術転換が一巡してます。スピード感をもって技術で世の中を変えていくのがfreeeのアイデンティティだという風土や自負があります。

まとめ

エンジニアのキャリアの最終地点がCTOであるとは全く思っていませんが、これまで書いてきたようなことを総合して、これからの時代の一流の課題解決者のスタートラインとして、うちでは新卒エンジニアに3年でスモールチームのCTOになれという話をしてます。もちろん数人のチームでもCTOならばより高い視点や期待値を求められますが、少なくとも自信を持ってバッターボックスに立てると思います。

freeeは、若手にチャレンジさせる会社でありたい。

freeeは、これから社会に求められるエンジニアとして必要なスキルを最短で身につけてもらえる環境を用意していきます。

jobs.freee.co.jp