SlideShare a Scribd company logo
1 of 21
Download to read offline
初めて で大規模
を作り得
た教訓
golang.tokyo #6
■ この発表では golang で大規模な Microservices 構成のシステム -- AndApp
-- を作った時に得た教訓をつらつらと語っていきます
⁃ 成功談というよりむしろ失敗談の話と、そこから得た教訓の話をしていき
ます
⁃ 初めて golang 開発にチャレンジする人たちの参考になれば
■ 初めて Golang を使い、手探りで作り上げていった部署の話を聞いて「あるあ
る」も「ないない」もお楽しみいただければと思います
の基本構成 アーキテクチャ
■
■
■ より
教訓 フレームワークに拘らない
■ 新規プラットフォームの立ち上げにあたりテクノロジースタックを刷新
⁃ を基本構成に
⁃ メンバーの開発経験は主に オンプレミス
■ のベストプラクティスを調査
⁃ まずフレームワークを調査し始める
⁃ 他の言語におけるフレームワークの成功体験
⁃ チーム開発でもコードに統一感がでるし
⁃ 言語に熟練していない人でも「それなり」に書けるし
⁃ ↑ 部署として に初挑戦するだけにこれが重要だった
で始めた 開発
■ 当時特に話題性のあったフレームワーク
■ 良かった点
⁃ シンプルで扱いやすかった
⁃ とのインテグレーションもサンプルにあった
⁃ 問題
• から を派生させ回避
• の一貫性をキープ
■ 困ったところ
⁃ ワイルドカードパスを共有したルーティング問題
• 例えば以下のようなエントリーでコンフリクトが発生する
• 例
⁃
⁃
• が内部で利用する の制限
gin.Context
(App Engine)
context.Context派生
一部で を導入し始める
■ に続いて話題性のあったフレームワーク
■ 良かった点
⁃ ワイルドカードパスを共有したルーティングが可能
⁃ 特に アプリ系のコンポーネント開発が捗る
■ 困った点
⁃ 設計がガリガリ書き換わる
⁃ のリリースノートにて
•
• コンテキストの派生が不可能に…
⁃ 一時、作者が別の フレームワークの開発に勤しむ
• の開発やめるの…?
■ その他困ったこと
⁃ と の両対応
結果 は 対応を諦め のまま使う。新規のコンポーネントではなるべく
を使わない流れに
そもそも でフレームワークに拘ることはない
■ 洗練された パッケージがある
⁃ で事足りるのであればそれでもよい
⁃ 実際いくつかのコンポーネントは で作っている
⁃ など足りない部分は都度ライブラリで補完していけばよい
■ は言語仕様がシンプルかつ がある
⁃ フレームワークに乗らなくてもコーディングスタイルは似てくる
■ ウェブアプリケーションフレームワークに乗っかるのであれば運命を共にする覚
悟で
■ で が パッケージに取り込まれたことで
またひと波ありそう
フレームワークに拘らない、振り回されない!
教訓 を尊重する
■ 独自エラー型の使い方でハマった話
■ 独自 型の使い方でハマった話
■ は として使おう
独自のエラー型を定義
■ 独自のエラー型を定義して利用することに
■ 一般的な 関数の戻り値は インタフェース
■ しかし我々は独自のエラー型に寄せることにした
⁃ なぜなら インタフェースからのキャストが面倒だから
⁃ すべての関数の戻り値を寄せてしまえばいいと思っていた
思わぬ盲点
■ 以下のコードはうまく動かない。なぜか
には型があるの罠
■ の型問題
■ インタフェースと独自エラー型を混在した時に発生
⁃ すべてを独自エラー型に寄せきれないケースが存在する
• 例 などのサードパーティ関数
■ 素直に他の関数にならって インタフェースに統一すれば良かった
■ キャストがめんどくさい問題は便利関数でどうにでもなる
⁃ 例
独自のエラー型を作っても良いが標準の インタフェースを尊重すべし
独自のコンテキスト型を定義
■ 独自のコンテキスト型においても似たような失敗
⁃ リクエストスコープの値を簡単に取れるよう を定義
⁃ アプリケーションで引き回すのを ではなく に寄せ
た
■ きちんとコンテキストを派生させていれば問題なさそうに思えるが…
■ 例えば以下の様なコードを書く時に困る
gin.Context
(App Engine)
context.Context
派生
MyContext
派生
context.Context 型になってしまうため、 *MyContext 型の関数に渡せなくなってしまう
は として扱おう
■ の定義されたものは積極的に で扱うべし
⁃ 標準ライブラリや他のライブラリとの連携がシンプルになる
⁃ の活用によってテストが楽になるという副次的な効果もある
教訓 は遅い
■ 皆さん バリデーションどうしていますか?
⁃ 弊社では を利用
■ での として以下が候補に上がった
⁃
• で行くと一番メジャーなバリデータ
• 動的に を読み込みながらバリデーションしていく
⁃
• 国産
• のバリデーションコードを生成
■ 以下の理由により を選択
⁃ スキーマを複数分割したかった
⁃ スキーマをローカルファイルから読み込みたかった
■ この要件を容易に満たしてくれたのが
複数のスキーマを読み込むため を選択
パフォーマンステストで問題発覚
■ 予想以上にアプリケーションの動作が遅いことが発覚
■ 調査の結果バリデーションの有無でパフォーマンスに顕著な差が出ることがわ
かった
⁃ バリデータあり
•
⁃ バリデータなし
•
■ を使って のテストスイートを実行した結果を解析
⁃ の 時間が 動的にスキーマを解析する部分にくわ
れていることが発覚
何が問題だったのか
■ 氏による へのチューニングの数々
■ チューニング マッチのキャッシュ
⁃ オリジナル版はパースのたびに コンパイルしていた…
⁃ コンパイル結果のキャッシュを導入
■ チューニング 多用部のロジックチューニング
⁃ 動的にスキーマを解析する部分が を多用していた
⁃ これはどうしようも無かったのでロジックのムダをとことん省いた
■ 最終的に約 倍の改善に成功
■ そもそも で頑張ればさらに段違いの結果に
オリジナル版 7280 msec
チューニング1 3340 msec
チューニング1 + チューニング 2 2700 msec
に関わらず 気をつけないといけないもの
■ などコスト高の操作を意識する
⁃ 特に動的言語になれていると の操作は甘く見がち
⁃ ライブラリを選定する際にもこの観点は持っておくべき
■ 正直 であれば をつかってバリデーションするぐらい楽勝だ
ろうという過信もあった
は重い!
教訓 非対称暗号は遅い
■ において肝となる認証・認可
⁃ を活用している
⁃ 内部通信用のトークンには対象鍵を
■ 非対称鍵の署名が重い事が発覚
⁃ と比べ の が貧弱
⁃ をみているとちらほら
⁃ 最近の では改善されているかも 追記 あんまりだった
■ を使った のバインディングも存在する
⁃ こちらの利用も検討したが のサンドボックス環境の都合で利用
はできなかった
■ 対処
⁃ 非対称鍵の署名処理を行う を外出しして回避
対象鍵によるトークンの署名時間 0.37 msec
非対称鍵によるトークンの署名時間 486.98 msec
参考 ベンチマーク
● RSA256
● 100 回 JWT Claim を署名
結論
■ 本発表では初めての大規模 開発によって得た教訓について話した
⁃ 教訓 フレームワークに拘らない
⁃ 教訓 を尊重する
⁃ 教訓 は重い
⁃ 教訓 非対称暗号は遅い
■ 困ったときには の哲学に帰りシンプルなプローチを取る
■ を過信せずパフォーマンスに気を配れ

More Related Content

What's hot

Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Masahito Zembutsu
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案樽八 仲川
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 TipsTakaaki Suzuki
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選Takuya Ueda
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについてmoai kids
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAkihiro Kuwano
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうRyuji Tsutsui
 
MediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live StreamingMediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live Streamingmganeko
 
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?naoki koyama
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについてkumake
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐkwatch
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門増田 亨
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
ruby-ffiについてざっくり解説
ruby-ffiについてざっくり解説ruby-ffiについてざっくり解説
ruby-ffiについてざっくり解説ota42y
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう増田 亨
 

What's hot (20)

WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
 
Docker Tokyo
Docker TokyoDocker Tokyo
Docker Tokyo
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
MediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live StreamingMediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live Streaming
 
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
ruby-ffiについてざっくり解説
ruby-ffiについてざっくり解説ruby-ffiについてざっくり解説
ruby-ffiについてざっくり解説
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 

Viewers also liked

An introduction and future of Ruby coverage library
An introduction and future of Ruby coverage libraryAn introduction and future of Ruby coverage library
An introduction and future of Ruby coverage librarymametter
 
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介Kentoku
 
AWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグAWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグAmazon Web Services Japan
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechconDeNA
 
ScalaからGoへ
ScalaからGoへScalaからGoへ
ScalaからGoへJames Neve
 
Apache Spark Streaming + Kafka 0.10 with Joan Viladrosariera
Apache Spark Streaming + Kafka 0.10 with Joan ViladrosarieraApache Spark Streaming + Kafka 0.10 with Joan Viladrosariera
Apache Spark Streaming + Kafka 0.10 with Joan ViladrosarieraSpark Summit
 
Operations: Production Readiness Review – How to stop bad things from Happening
Operations: Production Readiness Review – How to stop bad things from HappeningOperations: Production Readiness Review – How to stop bad things from Happening
Operations: Production Readiness Review – How to stop bad things from HappeningAmazon Web Services
 
Streaming Data Analytics with Amazon Redshift and Kinesis Firehose
Streaming Data Analytics with Amazon Redshift and Kinesis FirehoseStreaming Data Analytics with Amazon Redshift and Kinesis Firehose
Streaming Data Analytics with Amazon Redshift and Kinesis FirehoseAmazon Web Services
 
神に近づくx/net/context (Finding God with x/net/context)
神に近づくx/net/context (Finding God with x/net/context)神に近づくx/net/context (Finding God with x/net/context)
神に近づくx/net/context (Finding God with x/net/context)guregu
 
MongoDBの可能性の話
MongoDBの可能性の話MongoDBの可能性の話
MongoDBの可能性の話Akihiro Kuwano
 
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話KEISUKE KONISHI
 
Fast and Reliable Swift APIs with gRPC
Fast and Reliable Swift APIs with gRPCFast and Reliable Swift APIs with gRPC
Fast and Reliable Swift APIs with gRPCTim Burks
 
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法Takuya Ueda
 
So You Wanna Go Fast?
So You Wanna Go Fast?So You Wanna Go Fast?
So You Wanna Go Fast?Tyler Treat
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCLFastly
 

Viewers also liked (20)

SLOのすすめ
SLOのすすめSLOのすすめ
SLOのすすめ
 
An introduction and future of Ruby coverage library
An introduction and future of Ruby coverage libraryAn introduction and future of Ruby coverage library
An introduction and future of Ruby coverage library
 
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
 
AWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグAWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグ
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
 
ScalaからGoへ
ScalaからGoへScalaからGoへ
ScalaからGoへ
 
Apache Spark Streaming + Kafka 0.10 with Joan Viladrosariera
Apache Spark Streaming + Kafka 0.10 with Joan ViladrosarieraApache Spark Streaming + Kafka 0.10 with Joan Viladrosariera
Apache Spark Streaming + Kafka 0.10 with Joan Viladrosariera
 
What’s New in Amazon Aurora
What’s New in Amazon AuroraWhat’s New in Amazon Aurora
What’s New in Amazon Aurora
 
Operations: Production Readiness Review – How to stop bad things from Happening
Operations: Production Readiness Review – How to stop bad things from HappeningOperations: Production Readiness Review – How to stop bad things from Happening
Operations: Production Readiness Review – How to stop bad things from Happening
 
Streaming Data Analytics with Amazon Redshift and Kinesis Firehose
Streaming Data Analytics with Amazon Redshift and Kinesis FirehoseStreaming Data Analytics with Amazon Redshift and Kinesis Firehose
Streaming Data Analytics with Amazon Redshift and Kinesis Firehose
 
神に近づくx/net/context (Finding God with x/net/context)
神に近づくx/net/context (Finding God with x/net/context)神に近づくx/net/context (Finding God with x/net/context)
神に近づくx/net/context (Finding God with x/net/context)
 
MongoDBの可能性の話
MongoDBの可能性の話MongoDBの可能性の話
MongoDBの可能性の話
 
Blockchain on Go
Blockchain on GoBlockchain on Go
Blockchain on Go
 
Microservices at Mercari
Microservices at MercariMicroservices at Mercari
Microservices at Mercari
 
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
 
Fast and Reliable Swift APIs with gRPC
Fast and Reliable Swift APIs with gRPCFast and Reliable Swift APIs with gRPC
Fast and Reliable Swift APIs with gRPC
 
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
 
So You Wanna Go Fast?
So You Wanna Go Fast?So You Wanna Go Fast?
So You Wanna Go Fast?
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
 
Google Home and Google Assistant Workshop: Build your own serverless Action o...
Google Home and Google Assistant Workshop: Build your own serverless Action o...Google Home and Google Assistant Workshop: Build your own serverless Action o...
Google Home and Google Assistant Workshop: Build your own serverless Action o...
 

Similar to golang.tokyo #6 (in Japanese)

MTプラグイン入門以前
MTプラグイン入門以前MTプラグイン入門以前
MTプラグイン入門以前Hiroshi Yamato
 
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1Atsushi Tadokoro
 
スクラム初心者セッション.pdf
スクラム初心者セッション.pdfスクラム初心者セッション.pdf
スクラム初心者セッション.pdfHideo Kashioka
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門陽一 滝川
 
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCampschoowebcampus
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編Yusuke Ito
 
クロスプラットフォームはまだ早い!既存のアプリをクロスプラットフォームっぽくする方法
クロスプラットフォームはまだ早い!既存のアプリをクロスプラットフォームっぽくする方法 クロスプラットフォームはまだ早い!既存のアプリをクロスプラットフォームっぽくする方法
クロスプラットフォームはまだ早い!既存のアプリをクロスプラットフォームっぽくする方法 Hiroki Yata
 
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場Kotaro Ogino
 
20190524_WindowsユーザのためのSalesforce DX
20190524_WindowsユーザのためのSalesforce DX20190524_WindowsユーザのためのSalesforce DX
20190524_WindowsユーザのためのSalesforce DXTakahito Miyamoto
 
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCampschoowebcampus
 
アジャイルマニフェストから見るインセプションデッキ
アジャイルマニフェストから見るインセプションデッキアジャイルマニフェストから見るインセプションデッキ
アジャイルマニフェストから見るインセプションデッキYou&I
 
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向SFDG ROOKIES
 
ワークショップ 明日からはじめるアジャイル
ワークショップ 明日からはじめるアジャイルワークショップ 明日からはじめるアジャイル
ワークショップ 明日からはじめるアジャイルESM SEC
 
What Does “Open source” and “Community driven” Mean for Moodle Development?
What Does “Open source” and “Community driven” Mean for Moodle Development?What Does “Open source” and “Community driven” Mean for Moodle Development?
What Does “Open source” and “Community driven” Mean for Moodle Development?Moodle
 
Hour of-code-2016冬-シンポジウム
Hour of-code-2016冬-シンポジウムHour of-code-2016冬-シンポジウム
Hour of-code-2016冬-シンポジウムYuta Tonegawa
 
The Essential Guide To Entrepreneurship
The Essential Guide To EntrepreneurshipThe Essential Guide To Entrepreneurship
The Essential Guide To EntrepreneurshipTakayuki Yamazaki
 
ユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントMasaki NIWA
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshopDaisuke Sugai
 
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようDjango ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようTakayuki Shimizukawa
 

Similar to golang.tokyo #6 (in Japanese) (20)

MTプラグイン入門以前
MTプラグイン入門以前MTプラグイン入門以前
MTプラグイン入門以前
 
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
 
スクラム初心者セッション.pdf
スクラム初心者セッション.pdfスクラム初心者セッション.pdf
スクラム初心者セッション.pdf
 
Scrum"再"入門
Scrum"再"入門Scrum"再"入門
Scrum"再"入門
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
 
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編
 
クロスプラットフォームはまだ早い!既存のアプリをクロスプラットフォームっぽくする方法
クロスプラットフォームはまだ早い!既存のアプリをクロスプラットフォームっぽくする方法 クロスプラットフォームはまだ早い!既存のアプリをクロスプラットフォームっぽくする方法
クロスプラットフォームはまだ早い!既存のアプリをクロスプラットフォームっぽくする方法
 
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
 
20190524_WindowsユーザのためのSalesforce DX
20190524_WindowsユーザのためのSalesforce DX20190524_WindowsユーザのためのSalesforce DX
20190524_WindowsユーザのためのSalesforce DX
 
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
「非エンジニア向け 初めてのプログラミング体験講座」@CodeCamp
 
アジャイルマニフェストから見るインセプションデッキ
アジャイルマニフェストから見るインセプションデッキアジャイルマニフェストから見るインセプションデッキ
アジャイルマニフェストから見るインセプションデッキ
 
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
 
ワークショップ 明日からはじめるアジャイル
ワークショップ 明日からはじめるアジャイルワークショップ 明日からはじめるアジャイル
ワークショップ 明日からはじめるアジャイル
 
What Does “Open source” and “Community driven” Mean for Moodle Development?
What Does “Open source” and “Community driven” Mean for Moodle Development?What Does “Open source” and “Community driven” Mean for Moodle Development?
What Does “Open source” and “Community driven” Mean for Moodle Development?
 
Hour of-code-2016冬-シンポジウム
Hour of-code-2016冬-シンポジウムHour of-code-2016冬-シンポジウム
Hour of-code-2016冬-シンポジウム
 
The Essential Guide To Entrepreneurship
The Essential Guide To EntrepreneurshipThe Essential Guide To Entrepreneurship
The Essential Guide To Entrepreneurship
 
ユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイント
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
 
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようDjango ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
 

golang.tokyo #6 (in Japanese)