トレタ開発者ブログ

飲食店向け予約/顧客台帳サービス「トレタ」、モバイルオーダー「トレタO/X」などを運営するトレタの開発メンバーによるブログです。

AngularConnectに参加してきました

こんにちは、トレタのウェブフロントを担当している吉田です。
トレタではウェブ予約やトレタ(Web版)などAngularプロジェクトが数多くあります。

業務の一環でトレタのカンファレンス補助制度を利用して、AngularConnectに9/27,28と両日参加してきました。
(NgConfに行きたかったのにすぐチケットが埋まって行けなかったのは内緒です。)

f:id:teyosh:20161018164921j:plain

AngularConnectとはEUから離脱をしてしまうことが確定しているイギリスはロンドンで毎年開催している最大級のカンファレンスとなっています。
今年の目玉は何と言っても開催2週間前に発表されたstableになったAngular 2です。

こちらのカンファレンスはその日の初回にキーノートがあり、それが終わると発表2つ ワークショップ1つ 質問1つ Q&Aセッション1つ とセッションが4つに別れます。

発表に関してはセッションリストからスライドやYouTubeのURLが公開されているので、気になるものをピックアップして見ると良いかと思います。

http://angularconnect.com/2016/sessions/

幾つか自分が参加したセッションを紹介したいと思います。

Day1 Keynote

キーノート前半ではAngular2やエクステンションの紹介、これからのバージョンに関する事柄が話されました。
メジャーリリースは6ヶ月のサイクルとなり、2017年3月にはバージョン3がリリースされる予定になっています。

後半では開発者であるMiško Heveryがパフォーマンスについての発表を行いました。

www.youtube.com

Secure your Angular applications

主にウェブアプリの攻撃方法はどういうものか、防ぐためにはどうするのかを論じています。
それらに対し著名なライブラリーはどうのような処理を施しているかを紹介しています。
AngularでContents-Security-Policyを利用するにはどのようにするかなどWebアプリを作成する上で重要な事柄がわかりやすく説明されています。

www.youtube.com

The Angular 2 Compiler

バージョン2ではTypeScriptを利用してAngular自体を開発しており、アプリケーション自体もTypeScriptを利用することがmore betterとされています。
TypeScriptからJavaScriptへコンパイルする際にどのようになっているか、どのようにパフォーマンスを得ているかなどの説明がされています。
AoTの初回ロードの優位性なども説明しており、どのコンパイル方法が望ましいかの指針になります。

www.youtube.com

Day2 Keynote

2日目のキーノートでは開発者のIgorとRobがアプリケーションの始め方と書き方を対話形式で紹介します。
一通り現時点でのベストプラクティスを学べます。Angular1を利用の方もバージョン2をrcで利用していた方もどちらにもおすすめです!!

www.youtube.com

RxJS 5 - Thinking Reactively

AngularではObservableを利用するためにRxJSを利用しています。
どのようにRxJSを使うのか、概念はどうなのかなどRxJSの入門的な情報満載です。

www.youtube.com

Angular 2 Forms

バージョン2にはもちろんFormsも用意してあります。
Formsではtemplate-drivenとReactiveの2つ書き方があり、両方を同じサンプルを用いてライブコーディングで発表していきます。
アプリケーションによりどちらが良いかをうまく選べると思います。
タイピングが正確で早いのでそれも必見です。

www.youtube.com

Testing Angular2

テストは使っている人も多いKarmaとJasmineの組み合わせで発表しています。
Angularではモジュールであったりコアであったり親和性の高いテストAPIが用意してあり、それを使うことにより書きやすい様になっています。

www.youtube.com

まだまだ他にも有用な情報がいっぱいありますので時間がある方はご覧になってみてください。

海外カンファレンス補助制度

トレタでは海外カンファレンスに積極的に参加して技術や情報を得るために補助を出す制度があります。
昨今のAirBnBなどを考慮して、渡航費とカンファレンス参加費を全額支給します。
ホテルに泊まるもよし、AirBnBで楽しむもよし。

トレタでは食べることや技術が好きな仲間を募集しています。

www.wantedly.com

www.wantedly.com

www.wantedly.com

www.wantedly.com

「データサイエンティスト協会3rdシンポジウム」に参加しました

f:id:serihiro:20161018145628p:plain

トレタのAPIをメンテしている芹沢です。
2016年10月14に開催されたデータサイエンティスト協会3rdシンポジウムに参加してきたので本シンポジウムの発表内容を簡単にご紹介します。

発表内容について

産学問わず様々な登壇者があつまっており、私は以下のセッションを拝聴させていただきました。

  • 「計算機視覚技術:人工知能の古くからの問題と新たな可能性」
  • データサイエンスアワード2016 最終プレゼンテーション
  • 「実務者達のデータサイエンティスト「業」 フリートークセッション~結局、実際の業務やデータ分析チームで必要なスキルって何?~」
  • 「統計学・計算機・データサイエンス」
  • 「滋賀大学データサイエンス学部で学ぶこと」
  • 「限られた情報から精度良く:機械学習技術の最近の発展」

自分自身の統計学や機械学習のスキルは嗜み程度なのであまり専門的なことは理解できませんでしたが、その中でも 「統計学・計算機・データサイエンス」 のプログラムが印象的でした。

本プログラムでは、2009年にgoogleがインフルエンザ流行予測を行うために立ち上げたGoogle Flu Trendsの予測結果と、米国政府が発表したデータを組み合わせて新たな予測モデルを作ったところ、Google Flu Trendsより正答率の高い予測モデルを実現できたという事例を元に、古典的な統計学とビッグデータ・機械学習とがどのように関わっていくべきかについて語られていました。古典的な統計学と機械学習を勉強中の身としては非常に考えさせられるものがありました。(Google Flu Trendsについては2013年出版の『ビッグデータの正体』という書籍で詳しく説明されているそうなので後で読んでみます)

その他、実際にデータ分析サービスを提供している企業の方々によるパネルディスカッションもあり、実務的な側面と学問的な側面から多くのことを学べたイベントでした。

トレタのカンファレンス参加補助制度について

話は変わりますが、トレタにはカンファレンス参加補助制度があります。具体的には、会場までの交通費(海外の場合は渡航費含む)とカンファレンス参加費を会社で負担する制度です。
この制度を使って過去にWWDC16hashiconf2015に弊社エンジニアが参加しています。今回もこの制度を利用して参加してきました。ありがたいことです。

トレタは飲食店の予約・顧客データから新たな価値を生み出す仲間を募集します

さて、さすがに業務と何も関係がないカンファレンスに会社のお金で行かせてもらえるほど世の中甘くない訳でして、今回自分が本シンポジウムに参加したのもちゃんとした業務上の理由があります。

トレタでは、現在トレタのサービスに蓄積された予約情報・顧客情報を用いて新たな価値を提供する方法を模索しています。
具体的には、過去の予約情報から学習して店舗の運用に活かしたり、店舗を予約するお客様の情報から効果的なお店のPRにつながるアクションをサポートするような機能を提供できないか、といったことを考えています。

しかしながら、トレタには現在機械学習のスキルを持った社員がいない状況です。。私が普段のRails業の合間にその手の実現可能性について考えたりもしているのですが、さすがに手が足りません。

そこで、機械学習を用いて新たな価値を生み出すスキルを持った仲間を募集します!
正式なポジションとしてはまだ募集を開始していませんが、機械学習で飲食業界に貢献するチャレンジに興味のある方は、お気軽に採用問い合わせフォームからお問い合わせください。

Rubyを2.0から2.3にバージョンアップした効果とか

インフラをチョメチョメしている佐野です。今日はRubyを現最新バージョンの2.3.1にアップデートしたのでその効果について書きます(2.0、とっくにEOLですしね...)。gemのバージョンアップはserizawaニキがやってくれました。結論から言いますと、

  • CPU使用率が劇的に下がり、メモリ使用率が少し上がった。
  • サーバ台数削減できる。

です。

CPU

f:id:hiroakis:20160907163559p:plain

9/6の昼過ぎくらいに2.3に切り替えたのですがそれ以降、CPUが下がっていることがわかります。

メモリ

メモリについては使用率が上がっています。

  • 2.3

f:id:hiroakis:20160907163610p:plain

  • 2.0

f:id:hiroakis:20160907163625p:plain

何が使っているのかというと、Ruby2.3なプロセスのメモリ使用量が全体的に増えました。次のtopコマンドは左ペインが2.3、右ペインが2.0なのですが、rubyないしbundleとなっているものがunicorn, sidekiqになります。これら全般的に2.3の方がメモリ使用量が多いです。 ちょっと気にしていたら、TLにてhttps://github.com/ko1/nakayoshi_forkなるものがあると教えていただいたのですが、まだ試していません。

f:id:hiroakis:20160907163546p:plain

性能

簡易的に測定しました。ヘルスチェックパス(DBアクセスあり)に10000発のHTTP GETを投げてみた際の処理時間です(3回ほど試行)。2.3選手の方が3回ともかなり早い結果となりました。

  • 2.3
counts: 10000 total time: 120.01s
counts: 10000 total time: 128.66s
counts: 10000 total time: 120.59s
  • 2.0
counts: 10000 total time: 207.34s
counts: 10000 total time: 199.82s
counts: 10000 total time: 230.72s

なのでバージョンageていったらいいと思います。簡単ですが以上です。

おわり

© Toreta, Inc.

Powered by Hatena Blog