---
# Microsoft Serverless Hackfestにモブで参加してきた！
URL: https://agile-monster.com/blog/serverless_hackfest/
Published: 2017-11-02
---
## Microsoft Serverless Hackfestとは

簡単にまとめると、

- Microsoftさんのオフィスに3日間缶詰で
- 実際のお仕事のチームと
- 国内外のMicrosoftエヴァンジェリスト・技術イケメンの皆様と共に
- 実際のお仕事で抱えている技術的問題を

本気で解決しにかかるというエンジニアにとっては垂涎なお祭りです。 今回は **Serveless** がお題です。 Azureのサービスでいうと、

- [Azure Functions](https://azure.microsoft.com/ja-jp/services/functions/)
- [Logic Apps](https://azure.microsoft.com/ja-jp/services/logic-apps/)
- [Data Factory](https://azure.microsoft.com/ja-jp/services/data-factory/)
- [Event Grid](https://azure.microsoft.com/ja-jp/services/event-grid/)

あたりですね。 ただし、Serverlessは手段（How）の1つに過ぎなく、その場にいる全員で実業務の問題解決に挑むことができるのがMicrosoft Hackfest最大の魅力だと感じました。

## 今回取り組んだ課題

![WebAppとCosmosDBの構成とパフォーマンス課題を示した図](./20171102175838.png) 私達のシステムは、 WebApp⇒CosmosDB という非常にシンプルな構成です。

スタートアップフェーズでは、変化に対応しやすくコストも安い現在のアーキテクチャはとても都合がよかったのですが、フェーズが変わりデータの集計などが必要になってきたためパフォーマンスを改善しようと思って今回のHackfestに参加しました。

CosmosDBはMongo DB APIなど複数のインタフェースを持っているものの、全ての機能が使えるわけではないのと、機能によっては想定するパフォーマンスが出なかったりします。

基本はKey-Value Storeとして使い、集計などは非同期で予めデータを作っておくか、RDBなど集計が得意なデータストアを使ったほうがよさそうです。

## Hackfestの流れ

![次々とエバンジェリストが現れると評したFacebook投稿](./20171102181505.png)

![スクリーンとホワイトボードを囲んで課題を共有する参加者たち](./20171101185227.jpg)

まず最初に、業務・アーキテクチャ・現状の課題などのコンテキストを共有し、技術的アプローチについてアツい議論をしました。

チームにはりついてくれるエヴァンジェリストの方だけでなく海外から来てくれているスーパーエンジニア達も参加して、我々のシステムについて真剣に考えてくれるというとても貴重な場でした。 ヘタなりに英語でディスカッションしていますが、通訳さんが入ってくれるので英語が苦手な方も安心です。

![会議室で全員が一つの画面を見るモブプログラミングの様子](./20171101182208.jpg)

Hackfest期間中チームごとにMTGルームを貸し切りで使わせてもらえるので、エンジニアリングに集中できました。

私達の普段の仕事のスタイル同様にモブプログラミングを行い、全員で一つの画面を見ながら全員で問題解決に取り組みました。 その時に必要な技術要素に詳しい人を呼んでくださったり、とにかく全員で寄ってたかって問題をフルボッコにしました。

ホントにこんな感じｗ

![大画面を全員で見つめて問題解決に取り組む様子](./20171102181554.jpg)

3日間の最後に成果発表＆ふりかえりをしました。

![改善前後のアーキテクチャを比較したBefore/Afterの図](./20171101183430.png)

ちなみに3日間の成果はこんな感じです。

Azure Functionsを使ってデータ分析を非同期に逃してみたんですが、色々ハマりながらも2日間でおおよそできてしまいました。

そこで3日目は別のパターンとして、Data Factoryを使って、CosmosDBからSQL Databaseにデータを同期し、PowerBIでレポートを可視化しました。

同じ問題を解決するアプローチでも前者はコードで解決した一方で、後者はほとんとコードを書かずに実現することができました。

## 参加してみて

![KeepとImprovementの付箋が並ぶふりかえりボード](./20171101155745.jpg)

### ★エンジニアにとって至福の時

3日間缶詰になって、スペシャリストに囲まれてエンジニアリングに集中できる環境は控えめに言って最高でした。 なにより自分がいちばん下手くそでいられる環境というのは、最高にわくわくするし、改めて「エンジニアってたーのしー！」って思いました。

 ![Anyway Enjoyed!!と書かれたふりかえりの付箋](./20171101155628.jpg)

### ★仕事だから本気

Microsoft Hackfestでは実際の仕事の問題を解決することをターゲットにしてくれます。ワークショップの仮のお題ではなく、普段働いているチームで実際の仕事をターゲットにするからこそ本気になれます。

### ★クラウド時代の問題解決

今回取り組んだ問題について、自分たちのチームだけで取り組んだとしてもそんなに時間はかからずに解決することはできたと思います。

ただし、今回のHackfestでいろんなスペシャリストの知見をもらいながら、たくさんの選択肢の中からBetterなものを選んで解決することができました。 結果だけ見ると同じように見えますが、そこに至る過程で得られた経験値が格段に違い、チームとして成長することができました。

とくにクラウド時代はたくさんの選択肢があり、知っているか知っていないかでかかる手間も結果も大きく変わります。自分たちの手で地道に解決していくことももちろん大切ですが、時間は有限なのでいかに情報を得ていかに効率的に問題を解決するかという視点もこれからのエンジニアリングには必要な要素だと改めて強く感じました。

コードを書いているだけがエンジニアリングではないですね。

#### ★モブプログラミングの真価

Hackfest✕モブプログラミングは最強の組み合わせだと思いました。 前述した通り問題解決は結果だけでなくその過程で何を得るかが非常に重要で、全員で問題を一つずつフルボッコにしていくモブプログラミングで貯まる経験値はメタルキングレベルです。

モブプログラミングについては以下の資料をどうぞ。

- [OUR MOB PROGRAMMING AT RAKUTEN](https://speakerdeck.com/takaking22/our-mob-programming-at-rakuten)

## 最後に

![Hackfest参加メンバー全員の集合写真](./20171101172456.jpg)

最後になりますが、張り付いてサポートしてくださったKanio・寺田さん・本間さん・畠山さん。声をかけてくださった牛尾さん。様子を見に来てくださった佐藤（神）さん。レポートしてくれたちょまどさん。そしてそれ以外の皆さんも本当にありがとうございました。