AWS Summit Osaka 2019 2019年6月27日参加レポート

大阪のグランフロント大阪で開かれました「AWS Summit Osaka 2019」に参加してきましたので、 私の中で良かった3つのセッションを紹介したいなと思います。

aws.amazon.com

f:id:silverbirder180:20190627232406p:plain
AWS Summit Osaka 2019
f:id:silverbirder180:20190627232409p:plain
もらったもの

hastagはこちら twitter.com

私のメモはこちら scrapbox.io

Amazon Sumerian によるVR/AR/MRアプリケーションの開発

Amazon Sumerianの位置づけ

xRと呼ばれる3つのRについて説明がありました。

  • xR
    • VR (virtual reality)
      • 仮想の世界に没入
    • AR (augmented reality)
      • 物理に仮想をオーバレイ
    • MR(mixed reality)
      • 物理と仮想が相互作用

VRやARについては、広く知れ渡っていると思いますが、MRははじめて聞きました。

VRは、Oculus Questのようなヘッドセットで仮想世界に没入できます。
www.youtube.com

ARは、ポケモンGoのようなアプリで現実世界に仮想のキャラクタを投影できます。 www.youtube.com

MRは、VRとARのMixみたいな感じですね。ヘッドセットをかぶりながら、現実世界に仮想世界がmixされた景色が見えます。
代表的なものとして、Microsoft HoloLensがあります。
www.youtube.com

Amazon Sumerianは、このVR/ARにフォーカスしたサービスになります。

xRアプリの課題

課題は下記の感じです。

  • ハードウェアが浸透していない
  • 何が必要?
  • どうやって作る?
  • 使ってもらえるかわからない

私自身、xRのアプリを作ったことが1回だけありますが、同じような課題に悩んだことがあります。どうしても専用ハードウェアが必要になり、使ってもらうハードルが高くなってしまいます。

Sumerianの特徴

特徴は4つあります。

  • Webブラウザベースの開発環境
    • 開発する環境はWebブラウザベースになるので、特別なものを用意する必要がないです。良いですね。
  • マルチプラットフォーム
    • モバイル、デスクトップ、VRヘッドセット、ARプラットフォームに対応しています。これが一番魅力的なんじゃないかなと思います。開発者にとってもユーザーにとってもありがたいですよね。
  • Sumerian Host
    • セリフにあわせて口を動かしたりジェスチャーを行うキャラクターが8人いるそうです。こちらのキャラで開発する感じでしょうか?
  • AWSのサービスとの連携
    • AWS SDKを使って各種サービスを使えます。そのため、より柔軟なアプリケーションを開発することができます。

感想

xRはWeb好きな私でも興味がある技術です。Sumerianをつかうことで、xRの開発をよりスピーディに進めれるようなサービスと感じました。 実際触るかどうかは分かりませんが(無料枠使い切ってしまったので...)、こういったxRを開発するための手段を1つ知れたことは良かったと思います。
(他のクラウドサービスにはxR向けサービスないのですかね...?)

aws.amazon.com aws.amazon.com

※ 下記のレポートもご参考下さい dev.classmethod.jp

クラウドネイティブなモダンアプリケーション開発入門

モダンアプリケーションのデザインパターン

今回紹介されたパターンは、マイクロサービスのデザインパターンのことを指しているのでしょうか。 microservices.io

デザインパターンといえば、GoFデザインパターンが有名ですね。 en.wikipedia.org 最近では、分散システムにフォーカスした分散システムデザインパターンがあります。

今回登壇で話されいた内容を私が説明するより、下記のほうが十分に説明がありますので、そちらをご参考下さい。 qiita.com

感想

今回のセッションでは、少し駆け足になっていたせいか全て聞き取れなかった印象でした。 ただ、マイクロサービスデザインパターンの存在を知れてよかったです。 CQRSというパターンを業務上調査した覚えがあるのですが、マイクロサービスデザインパターンの 1種だったんですね。知りませんでした。 デザインパターンというのは、先人の知恵が蓄積された素晴らしいカタログなので、 1度目を通しておこうと思いました。

※ 下記のレポートもご参考下さい dev.classmethod.jp

クラウドネイティブがもたらすスケーラブルな開発、インフラストラクチャー、そして組織

Nulabの現状

Nulabのサービス

Nulabではbacklog,cacoo,typetalkの3つプロダクトをもっています。 backlogでは、ユーザー数が順調に伸びてきており、今年で100万人を突破したそうです。

backlogについて

backlogには、4つのサービスに分かれており、それぞれIssues, Wiki, Gantt, Gitがあります。 前3つのサービスがMonolithで作られており、後1つのサービスが3つの言語(Perl, Python, Java)で作らていたそうです(Goで再実装されました)。

インフラ部分については(backlogの話に限らない...?)、クラスタが日本に6個、海外に2個存在し、インスタンスが200個もあるそうです。 それらは、Terraform+Ansibleで管理するようにしていたそうですが、物理ホストのメンテナンスに大きくコストがかかるという問題がありました。 また、コードベースが巨大化になると開発者、特に新規の人は理解するのに時間がかかってしまう問題もありました。

Kubernetes・EKSの導入

Backlogの問題点から、開発やインフラをスケールするためKubernetesを検討するようになりました。 そこで(比較的規模が小さい?)CaccoにKubernetesで動くように運用してみたそうです。Nulabではコンテナのノウハウが蓄積されているので、効率よく進めれたそうですね。 しかし、kubernetesで運用していくと、ControlPlaneの面倒を見るのが手間になってきます。そこで、マネージドサービスであるEKSを使いはじめたそうです。

どういった点にメリット/デメリットがあるのか知るために、既存と新規をNginxを通して平行提供したそうです。 運用を進めることでkubernetesやEKSのノウハウが蓄積され、BacklogにEKSを検討する材料を手に入れることができます。

感想

Nulabさんの取り組みで勉強になったのは「小さなところから検討したい技術を導入し、ノウハウを蓄積する」ところです。 社内で実績がない技術をプロダクトとして導入するには、それなりに調査する必要があります。
また、その技術に明るい人がいれば導入までの工数は短くなると思いますが、大抵の場合、そういった人は少ないはずです。 そこで、Nulabさんのような取り組みをすると、低いリスクで大きなリターンが得られます。
小さいところからスタートするので、失敗してもリスクは少なくて済みますし、
運用ノウハウが蓄積できれば、拡大できます。
私も、プロダクトへ何度か提案したことがありますが、今回のポイントも検討してみたいなと思います。

※ 下記のレポートもご参考下さい aws.amazon.com

全体感想

AWS Summit Osakaは今回が初めてだそうです。前回は震災の影響で中止になったみたいです。
AWSは、私がはじめて触ったクラウドサービスなので、今回参加してみました。
Sumerianってものを知りませんでしたし、マイクロサービスデザインパターンも知りませんでした。
こういう大規模なセミナーでは、様々なジャンルのセッションが集まっているので、全く知らない領域のセッションを受けてみたり、よりDeepなセッションを受けたりと面白いです。
関西に住んでいる私にとっては、こういった大規模セミナーは中々珍しいので、とてもありがたかったです。

【増枠】Mix Leap Study #45 - Google I/O、WWDCまとめて報告会! 2019年6月15日参加レポート

今回は、ヤフー株式会社主催の下記セミナーに参加してきました。 Google/Appleどちらも大好きで、けど海外カンファレンスにいけなかった私にとって、今回の報告会は新鮮な内容ばかりでした。 その内容を記事に書こうと思います。 yahoo-osaka.connpass.com

f:id:silverbirder180:20190627095615p:plain f:id:silverbirder180:20190627095612p:plain f:id:silverbirder180:20190627095619p:plain

hashtagはこちら twitter.com

Google I/Oとは?

Googleが主催する、開発者向けイベントです。 Google I/Oでは、WEBやGoogleが出しているガジェットなど様々な技術情報についてセッションが行われています。 https://events.google.com/io/

https://yahoo-osaka.connpass.com/event/132601/

WWDCWorldwide Developers Conference)とは?

Appleが毎年開発している、開発者向けイベントです。 WWDCでは、appleの新製品の紹介や新しい技術についての発表が行われています。
https://developer.apple.com/wwdc19/

https://yahoo-osaka.connpass.com/event/132601/

ヤフーでは、google I/OWWDCの両方に約30名の社員が参加したそうです。 すごい数ですね。

Google I/Oの概要とMLKitのアップデート 加藤 貴晴さん

Google I/Oの概要

Google I/Oが始まったのは2008年からで、毎年開催しているそうです。 今年は2019年なので、11回目になります。

今回は全部で164セッションありました。 その内のTOP3が下記のとおりでした。

Web好きの私としてはTOP2というのが悔しいですね。(笑) ML/ALが3番目とは驚きです。

Deplex on the web

www.gizmodo.jp ウェブベースでも使えるGoogleAssistantのことで、レンタカーや映画の予約ができるみたいです。 これのすごいところは、レンタカーを予約するまでのステップを全て自動入力してくれるみたいです。 そこまで便利になったのかと驚きました。 ちなみに、日本にはまだ対応していません。

WebAuthn

パスワードレスな生体認証のことを指すそうです。 こちらについてのセッションが下記のようです。 developers.google.com

ひとまず知ることができてよかったです。

ML

ML Kitの発表があったそうです。 developers.google.com

その中でも、翻訳APIについて報告会では熱く話されていました。

ML On-Device Translate API

バイス上で翻訳することができるようになります。 そのため、外部とのやり取りができない環境でも翻訳できます。
つまり、オフラインでも動作します。

また、59言語に対応しているというすごい数です。 firebase.google.com

一部無料で使えるとのことで、こういうスタンスは本当に大好きです。 firebase.google.com

※ 翻訳する際は中間に英語を挟むような作りになっているみたいです。

AutoML Vision Edge

こちらもEdgeというデバイス、つまりはAndroid端末上で動作するカスタム機械学習モデルを作成できるサービスです。
ここで注目したいのは、またしてもデバイス上(On-Device)で動作する点です。
Googleではこのデバイス上で完結する方針を、これからも進めていくのでしょうか。

On-Deviceだと、どうしてもデータをデバイス上に保存する必要があります。 そのため、保存すべきデータをいかに軽量にするかという問題があります。 オフライン環境でも動作できるようになれば、災害時や緊急事態には役立ちますよね。 Web好きなら知っていると思いますが、PWAという技術があります。 こちらにもOfflineModeという機能があり、こういったOn-Deviceの先駆けとなっていたのでしょうか。

Googleアシスタントの他プラットフォームへの拡張方法の紹介 一円 真治さん

いろいろとお話されていたのですが、下記の内容が一番衝撃でした。 japanese.engadget.com

Googleはまったくあたらしい音声認識と言語理解モデルを開発し、100GB必要だった学習モデルを0.5GB以下まで削減したとしています。これにより、学習モデルをスマートフォン内部に格納できるようになり、AI機能の動作にネットワーク接続不要に。この結果、ほぼ遅延なくデバイス上で音声認識が行えるようになるとのことです。

またしてもデバイス上ですが、GoogleAssistantを動かすのにモデル作成が必要みたいです。 それにかかる容量が100GBも必要だったものを0.5GBまで削減したという衝撃的な発表があります。 また、AI機能の動作にネットワーク接続が不要とのことなので、必要なデータをダウンロードできていれば、オフライン環境でも動作できます。

What’s WWDC? / Swift UI ’n Siri Recap 田中 達也さん

SwiftUIについて

WWDCで発表されたSwiftUIは、WWDCを参加していた人みんながめちゃくちゃ盛り上がったそうです。 Swiftであんまり開発したことがないので、ほぼ想像で話しますが、 従来のSwiftによる開発は、ソースコードをビルドして、端末にビルド後のデータを移動させて動作確認する必要がありました。 そこを、SwiftUIはわざわざ端末にデータ移動せず、xcode上でpreviewできるという開発者にとって、とてもハッピーな機能がついたようです。

SwiftUIってどうやって使うの?

この件について登壇者さんに質問してみました。そのとおりとのことです。 swiftUIを手軽に動かしたい場合は、playgroundでも試せるそうなので、近い内にやってみようかなと思います。

qiita.com

ショートカットアプリ

標準でiphoneにインストールされるようになったアプリで、正直あんまり使った覚えはありません。 他アプリとの連携が用意になったらしいので、アプリ開発の幅が広がりますね。 (すみません、SwiftUIのことばかり考えていました(笑))

AR・ML・その他Appleプラットフォームのアップデート 林 和弘さん

内容的には動画があったほうがわかりやすいのですが、 都合上見せれないものばかりだったため、なんだかモヤっとした内容でした。(笑)

ARについて

ARKit→ARKit2→ARKit3の順で進化してきたのですが、動画がなく、ふ〜んってなってしまいました...。

Authentication

sign in with apple」という内容に私は惹かれました。 AppleのIDで認証ができるようになります。 特に、JSライブラリや、REST APIの提供もあるそうです。

JSライブラリ developer.apple.com

REST API developer.apple.com

良いっすね〜!これで認証の種類が増えました!

最後に

Google I/OWWDCには参加したいという気持ちがあるのですが、 やはり英語のちからがまだまだ自信がありません。 徐々に聞き取れるように勉強していきます。 note.mu

今回の報告会で何度も耳にした「デバイス上で動作、オフライン環境」は、 今後、Googleでは力を入れていきたいのかなと思いました。 いま私ができることは、無料で使えるML On-Device Translate APIを試すぐらいかなと思います。 あとは、今と同じで継続して技術情報に対して、アンテナを貼り続けるぐらいでしょうか。

ヤフーの社員さんたちは、こういった新技術に対してキャッチアップする姿勢が積極的で良いなと思います。 私も負けないように頑張りたいと思います。

【大阪・梅田】Kubernetes Meetup Tokyo #19 大阪サテライト- 2019年5月31日参加レポート

f:id:silverbirder180:20190601112302p:plain
kubernetes osaka Satellite
k8sjp-osaka.connpass.com

大阪からKubernetes Meetup Tokyoに参加できるとのことで、こちらに参加してきました。 Kubernetesの生みの親である3人の内の1人のJoe Bedaから、Kubernetesの歴史の経緯について教えて頂きました。 その話がとてもわかりやすく、なるほどなと思ったので、ぜひとも共有したいと思います。

twitter.com

※ 以降の内容は、私なりの解釈が入っており誤った認識かもしれません。ご了承下さい。 発表の内容は全てYoutubeにありますので、そちらが正しいものです。ご参考下さい。 www.youtube.com

Who is Joe Beda ?

Joe Beda は、Kubernetes の co-founder(共同創設者/最初に開発した3人のうちの1人)/ 昨年 VMware に買収された Heptio の CTO / O'Reilly「Kubernetes: Up & Running」 (邦題「入門Kubernetes」)の共著者で、現在も Kubernetes をリードしている1人です。今回は、Kubernetes のこれまでと未来についてお話いただきます。

https://k8sjp.connpass.com/event/126207/

Kubernetesの最初のコミッターで、超有名人。 Googleで働いていたときは、KubernetesやCompute Engineを作っていたそうです。

Joeさん曰く、プラットフォームで開発する上でおもしろいことは、下記2点のバランスだと仰っていました。

  1. ユーザーが簡単に使ってもらえる事
  2. 想定していなかった使われ方があった場合の柔軟性

私なりの解釈で言うと、例えば、GCPというプラットフォームの中で、GKEを使うとします。 ボタンをポチポチするだけでクラスターが作成されますよね。簡単で使ってみたくなります。

ただ、簡単だけだと細かい要求を満たせないので、オプションを設定できるようにしたり、 カスタマイズしやすいものへ改善されていきます。柔軟性ってことでしょうか? この柔軟性をしすぎると複雑になってしまい、ユーザーが使ってくれなくなる恐れがあります(マニアックなユーザーは残るかもしれないけど)。 そこのバランスが大切なのかなと思いました。

Joeさんの詳細な説明はこちらです。

The origins and future of Kubernetes (en/英語)

Joeさんは英語で話されてました。 CPCAmerica(?)の田中さんが通訳をされていたのですが、ものすごくわかりやすかったです。感謝です! あと、記憶力はんぱねぇ...。

※ 以下、@‏apstndb さんの要約Tweetを参考にしました。神!!!

kubernetesの歴史

Borgの誕生

Googleでは、BigDataを処理するためのMapReduceを開発していました。 MapReduceを扱うために、GlobalWorkQueue(GWQ)というものを開発され、これは主にバッチのために作成されたものでした。そこからバッチだけでなく、リアルタイムに実行したい(検索など)サービスに対応するために生まれたのがBorgだそうです。 Googleのような大規模な検索であれば、数%の効率Upでも大きなコスト削減につながるメリットがあります。 これが、Kubernetesの元となりました。

Kubernetesの誕生

GoogleでBorgを開発を進めていく中で、世の中は仮想マシンを扱うユーザーが多かったそうです。 Borgはプロプライエタリなソフトウェアだったため、Borgの世界を知ってほしい、開発者を引き込みたいという願いから、 OSSとしてKubernetesが誕生しました。 またKubernetesは、APIドリブンで開発者の生産性を上げるというのが先で、効率やセキュリティは後からついてきたそうです。

Kubernetesの魅力

Kubernetesとは、「コンテナオーケストレーター」と多くの人は知っていると思います。普及した大きなポイントですね。 他の観点で「1つのデータベースだけでクラスタを管理している設計」が魅力的だという話がありました。 (勝手な解釈かもしれません。すみません)

f:id:silverbirder180:20190601152418p:plain
kubernetes overview

Kubernetesでは、クラスタの状態を管理するために分散型KVSであるetcdを使っています(その他の状態管理はキャッシュしているそうです。)。 etcdには、APIServerを経由しなければアクセスできないため、一貫したデータの維持が実現できます。 そのetcdの周りにある、ビジネスロジックを実現するコントローラー(Scheduler, Controller Manager)が価値を提供します。 例えば、PodをNodeにアサインしたり、エンドポイントを提供したり、レプリケーションしたりなどなど...。

kubernetesのcontrol planeである、APIServer, Scheduler, Controller Managerがあれば、シングルノードでもマルチノードでも動きます。 kubernetesをDockerForMacで動かしたときは、そういえばシングルノードでしたね。マルチノードってイメージでしたけど。

f:id:silverbirder180:20190601154007p:plain
kubernetes jazz Improv

Kubernetesはコンテナオーケストレーションとよく言われますが、事前にすべてがプランされたオーケストレーションではなく、ジャズのように即興で計画して組み立てていくものに近い思想だそうです。 私は音楽に疎い人なのですが意味は理解しました。(笑)性格的には即興は苦手っす。

CRDとOperators

PodやReplication,Deploymentなど様々なリソースがあります。 ただ、Kubernetes が持っていないものを実装するにはどうすればよいのでしょうか。 そこで、Custom Resource Definitions (CRD)です。 なんだそれは...?

kubernetes.io qiita.com

要は、PodやDeploymentのようなリソースを独自に作ることができるのですね。おぉなんだそれ! 独自に機能を作るためには、Custom Resource と Costom Controllerが必要になり、両方をあわせて Operatorsというものが生まれました。

例えば、下記のようなものがあります。 github.com github.com

Yahooでは、gimbalというOSSを使ってKubernetesを導入したみたいです。 github.com techblog.yahoo.co.jp

詳しくは分かりませんが、こういった拡張しやすい機能があるおかげでドンドン普及するのだなと勉強になりました。

Q&A

Q1. StatefulSets には今回触れられなかったが、どういう扱いなのか

Q2. スケーラビリティに関して

Q3. Kubernetes はなぜ etcd を使っているか

Q4. Virtual Kubelet とか k3s みたいなエッジで活用する動きがコミュニティでは感じられるが、どう見ている?

そのほか

参加者からの質問は、どれも鋭いものばかり。 適度な質問をしたいなとつぶやきました...。届かなかったけど...。

Osaka会場

会場提供は、株式会社Aimingさんでした。

aiming-inc.com

会場場所は、グランフロント大阪タワーBの18階にありました。(高い!) 今回使わさせて頂いた場所は、会議室でしょうか。 30,40人ぐらい入れるスペースで、清潔感がありました。

f:id:silverbirder180:20190601172018j:plain
kubernetes osaka satelite aiming

東京との中継は、ときどき音声が途切れてしまうときもありますが、しっかりと写っていました。 ただ、コンテンツとしては、YouTubeにあげらているので、わざわざOsakaに出席しなくても良いのでは?とも思いました。

しかし、それでもOsakaに出席しても良い面もあるのかなと思います。

  • 他の方とのコミュニケーションが取れる
  • 一緒に発表を聞いて議論ができる

まあ、私はコミュ障なので、ほぼなかったですが...。

改善ポイントとしては、中継地からも質問ができるようになってくれたら良いなと期待しています。

最後に

Kubernetesについて、どういった経緯で誕生したのか、またCRDについても勉強になりました。 また、Kubernetesとは違うのですが、「OSSのちから」というものがエンジニアの世界では大事だと強く感じました。 普段エンジニアが開発する上で、ほぼ間違いなくOSSを使っています。 エンジニアにとって、OSSは不可欠な存在であり、利用するばかりです。

Googleがしたように、「広く使ってほしい、エンジニアを巻き込みたい」という願いから、 OSSとしてKubernetesが広まっていった一要因と思いました。これが有償ならどうだったのでしょうか。 ここまで普及したのでしょうか。

OSSに貢献する企業は、日本にも多く存在します。 個人でもOSSへ貢献できますし、OSS Gateという初心者向けのものもあります。 Kubernetesのコントリビューターは、ちょっとハードルが高いですが、 私もエンジニアとしてOSSへ貢献し続けていこうと思います。

そのほか

拙い文章なのに、最後まで読んでいただき、ありがとうございます。 twitterをしていますので、フォローしてもらえるとうれしいです。(silver_birder)

【大阪】BMXUG勉強会 -Kubernates体験&Watson Discovery入門- 2019年3月27日参加レポート

f:id:silverbirder180:20190522223722p:plain
BMXUG
bmxug.connpass.com 今回、k8sの体験を目的として参加したのですが、意外な収穫があったので、 共有したく、記事を書くことにしました。

twitter.com

Watson Discovery

Watson Discoveryとは??

簡単に言うと、IBM製の検索APIになります。 全文検索システムでおなじみにElasticSearchとは違った「IBM」ならではの機能が搭載されています。 また、無料で使えるとのことで、興味津々になってしまいました。

どんな特徴があるの?

なにかしらの文章データをWatsonDiscoveryに渡してあげることで、 文章にあるコンテキストを種々様々な側面から抽出してくれます。 特に、大量のドキュメントを検索したいときに使う場合に活躍します。

メタ情報による検索

登録した文章データから良い感じのメタ情報を抽出してくれます。 たとえば、下記の属性があるみたいです。

  • エンティティ
  • リレーション
  • キーワード
  • カテゴリー
  • コンセプト
  • セマンティックロール
  • センチメント
  • エモーション

例えば、怒っている文章を渡すとWatsonDiscoveryでは、 「怒りのエモーション」メタ情報を付与されます。ほえ〜!すごい! 確かに独自な機能ですよね。
この機能は、日本語ではサポートされていませんでしたが、 2018年8月ごろにできるようになったそうです!

隠れたコンセプトをみつける

文章にあるワードだけでなく、文章にないワードのコンセプトも見出してくれるそうです。 どうなってるんだ!?

クローラも提供されている(WebCrewl)

日本語のニュースを定期的にクロールして、ディスカバリーの辞書を更新してくれる機能もあるそうです。 手段の1つに、URLを指定するだけで勝手にクロールしてくれる方法もあります。簡単だ。。。 これを使えば、データを用意しなくて済みますし、お問い合わせQ&Aみたいなのが簡単に作れちゃいます。

サンプル紹介

例えば、「喜ばれるホワイトデーのプレゼント」で検索してみます。 また、メタ情報検索として、センチメンタル「ポジティブ」を指定。 (データは、WebCrewlで収集済み)

結果を、種々様々な形式のランキングを表示してくれました。 例えば、「いくらお金をつかうか?」というランキングでは、TOPが無料でした。これは面白かった。

visual insight (ベータ版)

ワードの距離を視覚的に見せてくれるそう。wordCloudもありました。

最後に

IBMならではの、独特の全文検索システムAPIでした。 無料で使えるそうなので、時間があるときにでも使ってみたいなと思います!

【大阪】GCPUG Kansai 〜 Cloud Next Extended ~ - 2019年5月14日 参加レポート

f:id:silverbirder180:20190521230529j:plain
GCPUG Kansai Cloud Next Extended 案内板
gcpug-osaka.connpass.com こちらの参加しましたので、ご報告します。

twitter twitter.com

目的

2019/04/09 ~ 04/11 にサンフランシスコで開催された Google Cloud Next '19 San Francisco で発表された Google Cloud の 新サービスに関する解説や振り返りの内容がメインのイベントとなります!

セッション紹介

GCPUG Kansai 紹介

GCPUG Osaka
GCPUG Kobe
GCPUG Kyoto
GCPUG Nara
GCPUG Shiga
GCPUG Wakayama
FJUG Osaka (firebase)

関西には、こんなにも多くGCPUGコミュニティがあるみたいです。すごい、いっぱい! Osakaは、継続して参加しようと思います。GCP大好きですし。

Cloud Next Recap 1

発表者

Ian Lewis(Google)

内容

GoogleKubernetesの担当されているそうです。 また、Pyconや、connpassにも携わっているそうです。

Anthos

読み方は、アンソスと呼ぶそうです。難しい...。

特徴として、下記が挙げられるそうで...
・アプリケーションをモダナイズ
・ポリシーオートメーション
・一貫したエクスペリエンス

よーわからないので、ggってみた。 www.publickey1.jp

コンテナ化したアプリケーションをオンプレミスとクラウドのどちらでも実行可能にする、ハイブリッドクラウドおよびマルチクラウドのためのプラットフォーム。

オンプレミスを含むどのクラウド上にアプリケーションがデプロイされていても、Anthosの管理画面から統合管理可能。

なるほど、Anthosはマルチクラウドを実現するためのプラットフォームなのですね。 ふむふむ、わかりやすい。

また、IstioをベースとしてAnthosが作られたとも発表されていました。 Istioについては、こちらをご確認下さい。
Istioの機能の特徴として下記があるそうです。

k8sでは、対象とするクラスタを管理します。規模が拡大するにつれ、 サービスが複雑になってくるケースがあります。その際Istioが、そのあたりを 良い感じに管理してくれると、理解しています。(ざっくり感)
※ マルチクラスタは既に実現できていた(?)

Anthosは、その対象範囲をクラウドだけでなく、オンプレ(GKE on Prem)も含めるようにしたと思います。

CloudRun

これは、下記で一度試した経験があります。 qiita.com

コンテナとしてdeployできるようになります。 正直、AppEngine, CloudFunction, CoundRunとデプロイサービスが増えてきて、 どれが何に良いのか分からなくなりそうです...。下記に、まとまっていました。 docs.google.com

CloudRun on GKE

こちらは、k8sにCloudRunをdeployできるみたいです。 詳しくは分かりません。

Knative

cloud.google.com

Knative は、オンプレミス、クラウドサードパーティのデータセンターなど、場所を選ばず実行できるソース中心でコンテナベースの最新アプリケーションを構築する際には不可欠な一連のミドルウェア コンポーネントです。

んー、なんとなくわからなくないですが、他のサイトを見てみます。

www.apps-gcp.com

Knativeを使用するためには、Kubernetesがインストールされたクラスタを用意する必要がありますが、KnativeはKubernetesと同様にコンテナをオーケストレーションするためのものである、という点は変わりません。 Knativeは、クラウドにおけるPaaSやFaaSのようなアーキテクチャを、Knativeがインストールされていれば(つまり、Kubernetesクラスタであれば)どこでも実現できるものです。

なるほど。要は、クラウドサービスに依存しないコンテナオーケストレーションなんですね。 GCPを使おうがAWSを使おうが、エンジニアにとって、それは特段大切ではなく、 アプリケーションのプロダクトコードが重要だと思います。そこで、クラウドサービスを 意識せずに、k8sを使うことができちゃうということですね。

gVisor

www.publickey1.jp 従来は、下記のような問題をコンテナは抱えていました。

コンテナ間でOSのカーネルを共有しているためにコンテナ間の分離レベルは高くなく、同一OS上で稼働している別のコンテナの負荷の影響を受けやすかったり、コンテナからOSのシステムコールを直接呼び出せることなどによるセキュリティ上の課題を引き起こしやすくもあります。

そこで、gVisorの出番

従来のコンテナの軽量さを保ちつつ、コンテナの分離について新たな実装を提供することよって、準仮想化に近い、より安全な分離を提供するコンテナランタイム

なるほど〜!(ただ、記事を読んだだけw)

Cloud Next Recap 2

発表者

佐藤 一憲(Google)

内容

機械学習についてAutoMLを紹介されていました。 私は、そういったものが苦手だったので、よく覚えてないです...

Cloud Next Recap 3

発表者

Kirill Tropin(Google)

内容

スピーキングは英語だったので、よく覚えてないです...

Cloud Run ネタ

発表者

ちまめ@rito

発表資料

speakerdeck.com

内容

2コマンドでcloudrunできるぐらい、簡単! ただ、プロダクトとして扱うには、いくつか問題があるそう。

  1. docker full buildするみたいで遅い → kaniko で、cacheが効くそう。
    github.com

  2. memoryStoreがまだ未対応(VPC)

GCP大阪リージョンとレイテンシ

発表者

salamander さん

内容

大阪リージョンのレイテンシについて紹介されました。 docs.google.com

最後に

Googleでは、もはや当たり前のようにKubernetesのサービスを進めている印象でした。 クラウド、オンプレを関係なく動かせるプラットフォームであるAnthosや、 どのクラウドサービスでも関係なく動かせるコンテナオーケストレーションであるKnativeなど、 どこでもkubernetesを動かせるように進めらています。 これは、kubernetesを使えるようにならないと! 下記で、勉強中です! qiita.com

Go Conference 2019 Spring - 2019年5月18日 参加レポート

f:id:silverbirder180:20190521224335j:plain
Go Conference 2019 Spring Coffee
gocon.connpass.com こちらに参加してきましたので、ご報告します!

公式: gocon.jp twitter: twitter.com

場所: リクルートライフスタイル本社 東京都千代田区丸の内1-9-2 グラントーキョーサウスタワー

よかったセッション

H1 (S): Hacking Go Compiler Internals 2

概要

Since the previous talk at Go Con 2014 Autumn, lots of things in the internals have changed. In this talk, I will try to give an overview of Go compiler internals and update the information as much as possible, along with my new hacks.

資料

今回

speakerdeck.com

前回

www.slideshare.net

感想

このセッションでは、Golangソースコード機械語になるまでのステップ、要はコンパイラの動きを紹介されていました。 大きく分類して11ステップあり、ざっくり要約すると下記のステップです。

1.コードをトークンに分割
2.構文木に構築
3.型チェック
4.インライン化
5.中間言語(SSA)の生成
6.機械語の生成

正直、高級言語ばかり使っていたので、機械語に近い低級言語の知識が乏しい私ですが、 今回のお話は、そういった初心者でも分かりやすく説明されていました。 この話を聞いて、純粋に疑問に持ったこととして「どこに最も時間がかかるのか」でした。 ちょうど、同じ疑問を持った方が質問されていて、回答として「型チェック」だそうです。 実際に調べるためのツールが、golangのbenchmarkがあるみたいなので、こちらを使って チューニングをすることができます。簡単なコードを書いて、試してみたいなと思いました。

A4 (S): Design considerations for container-based Go applications

概要

Go言語でのアプリケーション開発で、特にコンテナを前提とする場合の設計考慮点について話します。 例えば、Go言語でAPIを開発する場合、コンテナとして動かすことを前提とするケースが多いと感じます。コンテナベースで動かすことを前提とした場合、コンテナイメージ作成・アプリケーション監視において、考慮すべき点が出てくるでしょう。このトークでは、Go言語での実装にまで踏み込んだ上で、コンテナベースアプリケーションにおける設計の考慮点について話します。

資料

speakerdeck.com www.redhat.com

感想

Golangの話というより、コンテナで開発する上でのTipsの話でした。 Tipsは3つ紹介されていて、「Configuration」「Logging」「Monitering」です。 どれも、資料にあるベストプラクティスに沿った方法で、良い手法だなと勉強になりました。

・Configuration
設定情報をソースコードで管理するのではなく、環境変数を使うこと
→ 本番/検証等でもソースが変わらない
・Logging
ファイルに出力するのではなく、ストリーミングし外部サービスに流す
→ コンテナを使い捨てしやすくなる
・Monitering
ヘルスチェックのエンドポイントを提供する
→ 外部サービスと連携しやすくなる

他にもベストプラクティが資料に載ってあるので、時間があるときに読んでみたいなと思います。

B8 (L): CPU, Memory and Go

概要

基本的なCPUやメモリを簡単に触れ、Goの最適化、コンパイラの最適化、Goで実装したときのCPUやメモリの振る舞いを紹介します。 またこれら最適化の様子やパフォーマンスを実際にGoの標準ツールを使いながら確認していきます。

資料

speakerdeck.com

感想

Golangにおけるパフォーマンス・チューニングについて勉強になりました。 Golangだけの話なのかわかりませんが、コーディングする際に気にしたほうが良いと思います。

・動的配列を使うのではなくて、静的配列を使う
→ 動的配列だとメモリ確保のコストが高くなるので、遅くなってしまう

環境変数を使うのではなくて、定数を使うこと
→ 実行時にならないと処理が決まらず、コンパイラの最適化がされない

・メモリに割り当てる際は8byteずつで割り切れるようにすること(64bitの場合)
→ 隙間があった場合、パディングが発生して遅くなる(メモリアライメント)

そもそも低レイヤーについて全くわからない人なので、 CPUとMemoryについて知れてよかったです。

全体的な感想

Golangセミナーに初めて参加しました。 スポンサーの話を聞いていると、Golangを採用した理由は、 どの企業も「パフォーマンスの良さと、学習コストの低さ」 という理由が多かった印象があります。 また、DockerやKubernetesGolangで作られていたりと、 Golangはドンドンと人気になっていく言語なのかなと期待しています。

また、スポンサーの中で「既存システムをGolangに再構築した」や 「Golangの知識を得るために勉強会を開催した」など、各社Golangへ 積極的に活動を試みていることをお聞きしました。

反省

Google TeamであるKatie Hockmanのspeakingが英語だったために、ほとんど聞き取ることができませんでした。 実にもったいないと感じました。

※ 資料まとめ engineer-fumi.hatenablog.com

Algolia Community Party in 京都 - 2019年5月10日 参加レポート

algolia.connpass.com こちらに参加しましたので、ご報告までに記事を書こうと思います。

Algolia Community Party in 京都 - 2019年5月10日
Algolia Community Party in 京都 - 2019年5月10日

Algoliaって?

百聞は一見にしかず

まずは下記サイトで、色々検索してみて下さい!

どれも爆速に結果が返ってきませんか !? これ、 実はSaaSで動いているんですよ ?

概要

www.algolia.com

Products to accelerate search and discovery experiences across any device and platform.

Algoliaは、全文検索を提供してくれるSaaSです。 全文検索を使う場合、一般的にはElastic SearchやSolrといったものをサーバに乗せて管理することが多いかと思います。 使い始めると、「カテゴリ選択、ファセット絞り込み、ハイライト」等の機能がほしくなり、独自開発することもあると思います。 Alogliaでは、そういった全文検索に関わる機能をSaaSとして提供してくれます。

使われているところでは、ブログサービスであるmediumや、オンライン決算処理であるStripeのドキュメントがメジャーでしょうか。 エンジニア向けとしては、Docker Hubにも使われています。また、Firebaseの公式でも使用事例として紹介されています。これは驚きですね。

firebase.google.com

Algoliaの会社としては、フランスから2012年よりスタートしました。 ベンチャー企業であり、日本人のエンジニア募集もあるそうです。

SaaSコミュニティ用のイベントがあるそうで、こちらにAlgoliaさんも登壇されています。 www.saastr.com www.saastr.com

どんな機能があるの?

お話をAlgoliaのSolution Architectである@shinodoggから説明があったものとして、下記のような機能があるそうです。

  • 検索時の表記ゆれ
  • タイプミス補助
  • カテゴリ、ファセットによる絞り込み
  • 検索キーワードのハイライト
  • パーソナライゼーション
  • A/B テスト
  • GEO検索
  • 画像検索
  • 音声検索

他にも「安い」と検索すると設定次第で「500円以下の商品」を表示させるような こともできるそうです。あとは、チャットボットにも使えるとのことです。

※ ただ、まだ日本語には対応していないみたいで、現在開発中とのこと。

どうやって使うの?

github.com OSSとしてライブラリを提供されています。 手っ取り早く使いたいときは、instantsearch.jsでしょうか。

community.algolia.com こちらも参考になるかと思います。

Algoliaは知っていたの?

知っていました。 Algoliaを知ったきっかけは、大学時代の友人(id:castaneai)からでした。 Algoliaは、全文検索システムを構築せずとも、お手軽に使えて、しかも高機能なSaaSということで、 個人開発をする私にとって興味を持ち始めました。

その後、下記の記事で書いた通りOSS Gateの対象にもさせてもらいました。

tech-blog.monotaro.com

また、作りたいものリストに溜まっていたアプリを作る時間があったので、 最近では、下記のような書籍管理を作りました。検索はAlgoliaを使っています。

github.com

なぜ会場が、はてな株式会社なの?

はてなの社長であるid:chris4403さんが、@shinodoggと前職での知り合いだったからだそうです。

mackerel.io

はてなも、サーバー監視サービスであるmackerel(鯖)をSaaSとして提供しています。 このお二方が、前職を離れてからも、同様の事業に携わっているということに、不思議な縁だな〜と思いました。

会場では、ピザを提供して頂きました。美味しかったです!ごちそうさまでした!

最後に

SaaSは、その専門の技術を持ってサービス提供をされています。 独自に開発するよりも、そういった専門のSaaSを駆使することで、 開発コストや運用コストの削減につながります。 そもそも、そういった専門技術を持っていない環境は、独自開発することとなり、 学習コストもかかりますし、非機能要件を考えないといけないので大変です。

「かけるべき部分に時間を割いて、それ以外はSaaSに移す」というのは今の時代の効率良い開発スタイルだなと思います。