18
appenginescalaしばくぜ! #ajn6ライトニングトーク @marblejenka

#ajn6.lt.marblejenka

Embed Size (px)

Citation preview

Page 1: #ajn6.lt.marblejenka

appengineをscalaで

しばくぜ!#ajn6ライトニングトーク

@marblejenka

Page 2: #ajn6.lt.marblejenka

自己紹介

Page 3: #ajn6.lt.marblejenka

@marblejenka

Page 4: #ajn6.lt.marblejenka

•普段のお仕事

• java/c++な金融系業務システム開発

• appengineとの関わり

• balmysundaycandyというlower level apiなライブラリ群を作り中(scalaからappengineを呼ぶ、サービス呼び出しを捕捉してロギングする、非同期サービス呼び出しをサポートする、など)

• appengine ja hack-a-thonもやってます!

• お仕事で使えたらいろいろ面白いとは思ってます。

Page 5: #ajn6.lt.marblejenka

Why scala?(today’s goal)

Page 6: #ajn6.lt.marblejenka

その前に!

Page 7: #ajn6.lt.marblejenka

lower level apiとは!

Page 8: #ajn6.lt.marblejenka

lower level api• appengineにおけるサービス呼び出しは他ノード(?)とprotocol

bufferでrequest/responseをやりとりして実現されている

• 呼び出しは、ApiProxy.makeSyncCall(String serviceName, String methodName, byte[] request)を経由する

• この周辺のAPIをlower level apiと読んでいる

• APIの内部構造はそれなりに整理/公開されつつあり、見る価値はむしろ減ってきている(lower level apiが最下層ではなく、appengine上でのstub実装とdatastore/bigtableが連携して機能している)

• とはいえ、サービス呼び出しの最小粒度のインターフェイス

Page 9: #ajn6.lt.marblejenka

scala!

Page 10: #ajn6.lt.marblejenka

scala

• オブジェクト指向の特性と関数型の特性を兼ね備えている

• 静的型付け&型推論やtraitなど、様々な仕組みで記述性を高めている

• クラスファイルをアウトプットとすることができるため、JVM上で動作する

• インタプリタ的に対話的な実行を行うことも可能(REPL)

• javaのライブラリを呼び出すこともできる

Page 11: #ajn6.lt.marblejenka

balmysundaycandy-scalaとは!

Page 12: #ajn6.lt.marblejenka

• appengineのリモートAPIを実現するscala interpreterの拡張

• インタプリター上の対話的なコードにおいて実行されるサービス呼び出しをappengineに処理させる

• 関数全体をappengine上で動作させることもできる、様にしたい(サービス呼び出しの単位でover httpしたくないケース)

• 実行しているappengineでのサービス呼び出しの内容を見ることもできる

• 意外と使いでがありそうなので、ちゃんと実装する予定

balmysundaycandy-scala

Page 13: #ajn6.lt.marblejenka

balmysundaycandy-scala

Page 14: #ajn6.lt.marblejenka

対話的に!(demo!)

Page 15: #ajn6.lt.marblejenka

サービス呼び出しの捕捉!(demo!)

Page 16: #ajn6.lt.marblejenka

Wrap Up!

Page 17: #ajn6.lt.marblejenka

why scala?• 対話的に実行することができる

• デプロイ不要、簡単、appengine/javaでも使えるようになると思います

• low level apiの構造が自然と見える

• keyの内部構造はgoogle/ioなどで表現されている記法と同じ

• queryも内部的にはGQLライクなものを生成している

• さらに!lower level apiの構造も見ることができる!!

• entity groupなどの概念がどう実装されているか見ることができる

• 一部のマニア層からは大絶賛の嵐

Page 18: #ajn6.lt.marblejenka

Thank You!