GameWithのエンジニアの @syque と tiwu です!
少し時間が経ってしまいましたが、今回はbuilderscon tokyo 2018に二人で参加してきたので簡単ですがレポートを書いていきたいと思います!
https://builderscon.io/tokyo/2018builderscon.io
GameWith は今回、builderscon tokyo 2018にスポンサーとして協賛させていただきました。
GameWithはバッテリーをノベルティとして提供させていただきました。
9/7 金
@syque タイムテーブル
Electronによるアプリケーション開発事情2018 Building and operating a service mesh at mid-size company The state of the art of architecting Kubernetes-based infrastructure -Towards Maximum Security and Usability- Istio: Weaving a Secure Service Mesh Understanding Microservices with Distributed Tracing lld − 開発ツールの主要コンポーネントの1つをスクラッチから作成した話
9/7のセッションで特に面白かったのが、「 lld − 開発ツールの主要コンポーネントの1つをスクラッチから作成した話」だったのでピックアップしたいと思います。
lld − 開発ツールの主要コンポーネントの1つをスクラッチから作成した話
https://www.youtube.com/watch?v=vWmqBp3uRsw
発表内容は以下の通りでした。
- lldの紹介
- 開発を始めた経緯
- 速くてシンプルなコードを書くためのポイント
- 良いデータ構造にする。データが先、コードが後
- 2回書く 1度目の経験を2回目に活かす
- 最適化する箇所を最小にとどめる。大半のコードは読みやすさを重視する
- プロジェクトのオーナーが責任を持ってコードをキレイに保つ
- 具体的な高速化のテクニック
発表内容については、自分はリンカを一度も作ったことのない畑違いなエンジニアであるにも関わらず非常に感銘を受けました。基本的にはリンカについての説明やlldのプロダクトについて成り立ちや具体的なテクニックについてを発表されていたのですが、それぞれのフェーズでのアプローチがとても適切で、正にエンジニアらしい問題を適切に捉えた仕事の仕方であるなと感じたためです。 例として以下のようなことを話されていました。
- リンカのプロジェクトに携わったのはいいけれど、資料もコードもなくて手かがりがほとんどなかった
- オブジェクトファイルを結合して空の実行プログラムを作成するところまでを手探りでやった(これだけで3ヶ月)
- Hello World がリンクできるまでに数ヶ月、大きなプログラムがリンクできるまでは1年かかった
- クロスプラットフォームなリンカ(Windows, Unix, ...)を作ろうとすると抽象化のためのコードが非常に多くなる
- でも別々のリンカの機能が使われることはあり得ないので、これは無意味だと思ったので作り直しを決めた
- メーリングリストでは喧々囂々になったが、結果としてコードがすっきりし、動作も10倍速くなった
内容について1つ1つは当たり前のことだけれど、規模の大きいプロジェクトにも関わらず自分の姿勢を崩さずに問題に対して適切な手法、アプローチで解決を図ろうとしていた植山さん自身の人となりが発表によく現れていて、同じエンジニアとして強く共感しました。 この発表でファンになってしまったので懇親会でも思わず話しかけに行ってしまいました(お邪魔してしまいすみませんでした...!)
tiwu タイムテーブル
Envoy internals deep dive ランチセッション E 開発現場で役立たせるための設計原則とパターン Webサービスにて200週連続で新機能をリリースする舞台裏 実録!ある担当者がみた「謎ガジェット」開発1年史 ブロックチェーン(DApp)で作る世界を変える分散型ゲームの世界
9/7のセッションで特に面白かったのが、「開発現場で役立たせるための設計原則とパターン」だったのでピックアップしたいと思います。
開発現場で役立たせるための設計原則とパターン
セッションの内容は、最高の設計というものは無く結局ケースバイケースという話をよく聞くけど、じゃあどうしたら問題に対して最適な設計を選べるのか?という話で、詳細を書くと
- 設計とはごちゃごちゃとひとかたまりになった問題を分割し構造化するアクティビティ
- だが、どうやって分割するか?テーブルごと?CRUDごと?
- そこで、設計原則とデザインパターンが武器になる
- デザインパターンは、手法のカタログ(選択肢が増える)
- 設計原則は、良いかどうか判断する指針(選択肢を選べる)
- こういった設計のほうが良いというのを、言語化できないと暗黙知になる
- 単一責任原則,開放閉鎖原則,凝集度と結合度はとても重要な設計原則
- 設計をしたらこの設計原則をもとにレビューしてよりよい設計にブラッシュアップしていく
- (余談)FizzBuzzEnterPriseEditionという最強のFizzBuzzのリポジトリがある
といった内容でした。
エンジニアは全員それぞれ頭の中で良い設計を考えていて、それをコード化したりしていると思いますが 頭の中で考えているものなのでどうしても、レビューの際で上手く伝わらなかったりすることがあると思います。
しかし、こういった設計原則とデザインパターンという共通の言語で会話ができれば互いに良いコミュニケーションができ より、自信を持ってコード化もできるなと感じました。
9/8 土
@syque タイムテーブル
ファミコンエミュレータの創り方 高集積コンテナホスティングにおけるボトルネックとその解法 Lunch Session (VOYAGE GROUP) 遠いようで身近なサウンドエンジニアリング Using Chrome Developer Tools to hack your way into concerts Extending Kubernetes with Custom Resources and Operator Frameworks LT
tiwu タイムテーブル
「Web とは何か?」 - あるいは「Web を Web たらしめるものは何か?」 証券トレーディング業務におけるExcel依存を脱却するプロジェクトで直面した技術的選択とプロジェクト運営の失敗 なぜエンジニアはパフォーマンス計測しないのか Webアプリケーションエンジニアが知るべきDNSの基本 LT
9/8のセッションで特に面白かったのが、「「Web とは何か?」 - あるいは「Web を Web たらしめるものは何か?」」だったのでピックアップしたいと思います。
「Web とは何か?」 - あるいは「Web を Web たらしめるものは何か?」
セッションの内容は、webの歴史とこれから未来についての話でした。
まとめると
Webが生まれた当初はドキュメントを共有するプラットフォームだったが、最近はアプリのプラットフォームになっている。 Gmailとかがまさにそうで、Windows上で動くアプリからWebで動くアプリに変革していった(スプレッドシートも同じ流れ) では、次はどこに向かうのか? それは、「OS」である。 PCのローカルファイルを操作したり、USBにアクセスしたりできるAPIが現在開発中である。 ただ、一番の問題はPermissionで、実はセキュリティとか無視して開発を進めているらしい。 今丁度ターニングポイントで、このまま進めばWebはOSとなる未来がやってくる・・・?
といった内容でした。
PWA、AMPでワクワクしていた自分ですが、それを超える何かを感じました(個人的に)。
今後のWebの動向は要チェックです!
最後に
GameWithではエンジニアを積極的に募集しています。ゲームが好きな方大歓迎です!
(現在、関東圏にお住まいでない方もお気軽に!)
ご興味のある方は、Wantedly でもよいので是非お気軽にお声がけください。