SlideShare a Scribd company logo
1 of 17
2016-05-25
株式会社ウエディングパーク 武田翔平
言語の検証と導入
自己紹介
名前:武田翔平 (@takedajs)
社歴 : 新卒3年目
やってること :
・サイトパフォーマンス・チューニング
・フォトレイト開発
趣味:
・休日のファミレス(ジョナサン)でGo開発
APIに最適な言語の検証
APIに最適な言語の選定を進める
・言語検証〜本番反映〜規約作成
・人数 : 2人
・情報共通ツール :
lodge (無料、イントラネット限定で利用可能)
lodge
検証言語
以下、3言語を検証比較
Go Scala Elixir
フレームワーク選定
・Githubのスター数
・Apiサーバ利用で過不足のない機能を保持している
フレームワーク選定
Name Memo Star
Revel Full Stack やや重い 5841
Gin シンプル 開発が活発 4298
Go
Scala
Elixir
Name Memo Star
Play2 Full Stack 有名 5841
Finagle Twitter製のフレームワーク シンプル 3855
Name Memo Star
Phoenix CommitやStarが多く活発 4086
Plug メンテはされている Issueは少なめ 489
比較内容
• 検証言語: Go, Scala, Elixir
• 比較用としてPHPも検証
• どの言語にもFrameworkを仕様
• APIのGET,POSTを実装し、GETリクエストを調査
• NginxとPort連携して起動
• チューニングはしない
• HTTP負荷テストツールはgo製のvegeta(ベジータ)を利
用
1, 負荷をかけるページのurlをファイルに記述
2, 各オプションを設定して、attackする
3, 実行結果確認
・rate : 同時Request数 ・duration : 継続秒数
・targets : リクエスト対象URL一覧
vegeta
比較結果
言語 5R/s※1 50R/s 100R/s 1000R/s
Go(gin) 14ms 14ms 20ms 67ms(99%)
Scala(Play2) 20ms 14ms 20ms 221ms(58%)
Elixir(Phoenix) 30ms 12ms 25ms 55ms(97%)
PHP(Zend) 188ms 5000ms(参考) 2000ms(参考) 測定不能
※1 5R/s = 5Request / Sec で 60秒間GET
言語の習得難易度
言語 難易度 Memo
Go ★ ・公式サイトが充実しているので、理解しやすい
・感覚としてPHPと記述が似ている
・他社で導入されてきており、時流がある
Scala ★★★ ・Javaの概念が分かっていると導入しやすい
・Java の資産が使える
・言語の特色に慣れるまでに時間がかかる
Elixir ★★ ・同じ関数型のScalaより理解が容易
・新しい言語なため、日本語の記事が少ない
・利用できるライブラリが少ない
開発のしやすさ
言語 難易度 Memo
Go(gin) ★★★ ・frameworkではなくライブラリに近いので、
開発前に、規約を考える必要がある
Scala(Play2) ★★★ ・MVCモデルなので理解しやすいが、
dbの接続などの設定に詰まる可能性がある
Elixir(Phoenix) ★★ ・Railsの思想を参考にしているので、開発し易い
言語選定
情報量、ライブラリ量、他社での運用実績を考慮して、
Go にを選定 (最先端を狙うならElixir)
Goの導入 – 困難
・バリデート処理
・ディレクトリ構成
・構造体の扱い
・PHPとの違い
Goの導入 – 結果
・GoとPHPで比較
・PHPと比べ約1/4の速度になっている
api Go(ms) PHP(ms)
A 12 47
B 19 55
C 190 734
D 284 870
Goの導入
メリット
・API速度の劇的改善
・DBロック処理の減少が見込める
・並行処理に強いシステム
・新技術導入による社外へのアピール
・社内エンジニアのモチベーション向上
デメリット
・導入・運用に伴う教育/学習コストの発生
・コンパイル言語への理解(品質は上がるが、スピードが落ちるかも)
ご清聴ありがとうございました。

More Related Content

Viewers also liked

au女子会♪infobar a02体験会20130221
au女子会♪infobar a02体験会20130221au女子会♪infobar a02体験会20130221
au女子会♪infobar a02体験会20130221Hiromi Itou
 
AWSを使って沖縄から世界へ (JAWS DAYS 2015 A-1 GP LT大会)
AWSを使って沖縄から世界へ (JAWS DAYS 2015 A-1 GP LT大会)AWSを使って沖縄から世界へ (JAWS DAYS 2015 A-1 GP LT大会)
AWSを使って沖縄から世界へ (JAWS DAYS 2015 A-1 GP LT大会)Sanehiko Yogi
 
Scala戦士を増やせ
Scala戦士を増やせScala戦士を増やせ
Scala戦士を増やせYuto Suzuki
 
スタートアップにjoinして1年間の変化を振り返る
スタートアップにjoinして1年間の変化を振り返るスタートアップにjoinして1年間の変化を振り返る
スタートアップにjoinして1年間の変化を振り返るMasashi Ogawa
 
第21回 AWS User Group - Japan 東京勉強会 - 来場者10万⼈人超えイベントを⽀支えるイベントレジストとAWS
第21回 AWS User Group - Japan 東京勉強会 - 来場者10万⼈人超えイベントを⽀支えるイベントレジストとAWS第21回 AWS User Group - Japan 東京勉強会 - 来場者10万⼈人超えイベントを⽀支えるイベントレジストとAWS
第21回 AWS User Group - Japan 東京勉強会 - 来場者10万⼈人超えイベントを⽀支えるイベントレジストとAWSDaisuke Ikeda
 
アカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsugアカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsugaktsk
 
1000万DL突破!BrainWarsのアーキテクチャ
1000万DL突破!BrainWarsのアーキテクチャ1000万DL突破!BrainWarsのアーキテクチャ
1000万DL突破!BrainWarsのアーキテクチャMasakazu Matsushita
 
オフライン行動を支えるメール配送管理 at サイタ
オフライン行動を支えるメール配送管理 at サイタオフライン行動を支えるメール配送管理 at サイタ
オフライン行動を支えるメール配送管理 at サイタYosuke TOMITA
 
AWSのおはなし at ChatWork
AWSのおはなし at ChatWorkAWSのおはなし at ChatWork
AWSのおはなし at ChatWorkMasaki Yamamoto
 
サイトパフォーマンスからUXを追求する
サイトパフォーマンスからUXを追求するサイトパフォーマンスからUXを追求する
サイトパフォーマンスからUXを追求するweddingpark
 
Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析Yosuke Mizutani
 
AWS Startup Tech - 宇宙と雲の間に CTO安川
AWS Startup Tech - 宇宙と雲の間に CTO安川AWS Startup Tech - 宇宙と雲の間に CTO安川
AWS Startup Tech - 宇宙と雲の間に CTO安川SORACOM,INC
 
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門Tadahiro Ishisaka
 
20161004 DMM/エウレカ/インテリジェンス合同勉強会
20161004 DMM/エウレカ/インテリジェンス合同勉強会20161004 DMM/エウレカ/インテリジェンス合同勉強会
20161004 DMM/エウレカ/インテリジェンス合同勉強会Yusuke Komatsu
 
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~Kenji Hiranabe
 

Viewers also liked (18)

au女子会♪infobar a02体験会20130221
au女子会♪infobar a02体験会20130221au女子会♪infobar a02体験会20130221
au女子会♪infobar a02体験会20130221
 
AWSを使って沖縄から世界へ (JAWS DAYS 2015 A-1 GP LT大会)
AWSを使って沖縄から世界へ (JAWS DAYS 2015 A-1 GP LT大会)AWSを使って沖縄から世界へ (JAWS DAYS 2015 A-1 GP LT大会)
AWSを使って沖縄から世界へ (JAWS DAYS 2015 A-1 GP LT大会)
 
Scala戦士を増やせ
Scala戦士を増やせScala戦士を増やせ
Scala戦士を増やせ
 
スタートアップにjoinして1年間の変化を振り返る
スタートアップにjoinして1年間の変化を振り返るスタートアップにjoinして1年間の変化を振り返る
スタートアップにjoinして1年間の変化を振り返る
 
第21回 AWS User Group - Japan 東京勉強会 - 来場者10万⼈人超えイベントを⽀支えるイベントレジストとAWS
第21回 AWS User Group - Japan 東京勉強会 - 来場者10万⼈人超えイベントを⽀支えるイベントレジストとAWS第21回 AWS User Group - Japan 東京勉強会 - 来場者10万⼈人超えイベントを⽀支えるイベントレジストとAWS
第21回 AWS User Group - Japan 東京勉強会 - 来場者10万⼈人超えイベントを⽀支えるイベントレジストとAWS
 
アカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsugアカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsug
 
1000万DL突破!BrainWarsのアーキテクチャ
1000万DL突破!BrainWarsのアーキテクチャ1000万DL突破!BrainWarsのアーキテクチャ
1000万DL突破!BrainWarsのアーキテクチャ
 
オフライン行動を支えるメール配送管理 at サイタ
オフライン行動を支えるメール配送管理 at サイタオフライン行動を支えるメール配送管理 at サイタ
オフライン行動を支えるメール配送管理 at サイタ
 
CTOが語るUI/UX
CTOが語るUI/UXCTOが語るUI/UX
CTOが語るUI/UX
 
AWSのおはなし at ChatWork
AWSのおはなし at ChatWorkAWSのおはなし at ChatWork
AWSのおはなし at ChatWork
 
サイトパフォーマンスからUXを追求する
サイトパフォーマンスからUXを追求するサイトパフォーマンスからUXを追求する
サイトパフォーマンスからUXを追求する
 
AWS Lambda Update
AWS Lambda UpdateAWS Lambda Update
AWS Lambda Update
 
Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析
 
Spark Security
Spark SecuritySpark Security
Spark Security
 
AWS Startup Tech - 宇宙と雲の間に CTO安川
AWS Startup Tech - 宇宙と雲の間に CTO安川AWS Startup Tech - 宇宙と雲の間に CTO安川
AWS Startup Tech - 宇宙と雲の間に CTO安川
 
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
 
20161004 DMM/エウレカ/インテリジェンス合同勉強会
20161004 DMM/エウレカ/インテリジェンス合同勉強会20161004 DMM/エウレカ/インテリジェンス合同勉強会
20161004 DMM/エウレカ/インテリジェンス合同勉強会
 
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
 

Similar to 言語の検証と導入

翻訳VR作ってみた
翻訳VR作ってみた翻訳VR作ってみた
翻訳VR作ってみた尾上 兼透
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Tokoroten Nakayama
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Drecom Co., Ltd.
 
詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasstkyon mm
 
20190809 ルーキー会 × TERAKOYAFORCE
20190809 ルーキー会 × TERAKOYAFORCE20190809 ルーキー会 × TERAKOYAFORCE
20190809 ルーキー会 × TERAKOYAFORCESFDG ROOKIES
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアKouhei Sutou
 
Salesforce SOAP API + C#
Salesforce SOAP API + C#Salesforce SOAP API + C#
Salesforce SOAP API + C#Tomoyuki Okada
 
AI-Java-for-Financial.pdf
AI-Java-for-Financial.pdfAI-Java-for-Financial.pdf
AI-Java-for-Financial.pdfYoshio Terada
 
リーダブルコード勉強会 in 筑波大のグループふりかえり
リーダブルコード勉強会 in 筑波大のグループふりかえりリーダブルコード勉強会 in 筑波大のグループふりかえり
リーダブルコード勉強会 in 筑波大のグループふりかえりKouhei Sutou
 
Go で Unit Test をやってみた
Go で Unit Test をやってみたGo で Unit Test をやってみた
Go で Unit Test をやってみたMasahiro Yanou
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminarManabu Shimobe
 
テスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめテスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめkinunori
 
MAごころを、君に - #7 ChatGPT勉強会(2023-03-28)
MAごころを、君に - #7 ChatGPT勉強会(2023-03-28)MAごころを、君に - #7 ChatGPT勉強会(2023-03-28)
MAごころを、君に - #7 ChatGPT勉強会(2023-03-28)Webpla LLC.
 
超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)
超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)
超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)mametter
 
初心者向けGo言語勉強会
初心者向けGo言語勉強会初心者向けGo言語勉強会
初心者向けGo言語勉強会leverages_event
 
SEゼミ2015 - リーダブルコード勉強会のグループふりかえり
SEゼミ2015 - リーダブルコード勉強会のグループふりかえりSEゼミ2015 - リーダブルコード勉強会のグループふりかえり
SEゼミ2015 - リーダブルコード勉強会のグループふりかえりKouhei Sutou
 
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップSORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップSORACOM,INC
 
Robotium を使った UI テスト
Robotium を使った UI テストRobotium を使った UI テスト
Robotium を使った UI テスト健一 辰濱
 

Similar to 言語の検証と導入 (20)

翻訳VR作ってみた
翻訳VR作ってみた翻訳VR作ってみた
翻訳VR作ってみた
 
Goをえらんだ理由
Goをえらんだ理由Goをえらんだ理由
Goをえらんだ理由
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
 
詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst
 
20190809 ルーキー会 × TERAKOYAFORCE
20190809 ルーキー会 × TERAKOYAFORCE20190809 ルーキー会 × TERAKOYAFORCE
20190809 ルーキー会 × TERAKOYAFORCE
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
 
Salesforce SOAP API + C#
Salesforce SOAP API + C#Salesforce SOAP API + C#
Salesforce SOAP API + C#
 
AI-Java-for-Financial.pdf
AI-Java-for-Financial.pdfAI-Java-for-Financial.pdf
AI-Java-for-Financial.pdf
 
リーダブルコード勉強会 in 筑波大のグループふりかえり
リーダブルコード勉強会 in 筑波大のグループふりかえりリーダブルコード勉強会 in 筑波大のグループふりかえり
リーダブルコード勉強会 in 筑波大のグループふりかえり
 
Go で Unit Test をやってみた
Go で Unit Test をやってみたGo で Unit Test をやってみた
Go で Unit Test をやってみた
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
 
テスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめテスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめ
 
MAごころを、君に - #7 ChatGPT勉強会(2023-03-28)
MAごころを、君に - #7 ChatGPT勉強会(2023-03-28)MAごころを、君に - #7 ChatGPT勉強会(2023-03-28)
MAごころを、君に - #7 ChatGPT勉強会(2023-03-28)
 
超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)
超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)
超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)
 
初心者向けGo言語勉強会
初心者向けGo言語勉強会初心者向けGo言語勉強会
初心者向けGo言語勉強会
 
SEゼミ2015 - リーダブルコード勉強会のグループふりかえり
SEゼミ2015 - リーダブルコード勉強会のグループふりかえりSEゼミ2015 - リーダブルコード勉強会のグループふりかえり
SEゼミ2015 - リーダブルコード勉強会のグループふりかえり
 
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップSORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
 
Go isucon
Go isuconGo isucon
Go isucon
 
Robotium を使った UI テスト
Robotium を使った UI テストRobotium を使った UI テスト
Robotium を使った UI テスト
 

言語の検証と導入

Editor's Notes

  1. バインド変数 ウエパで使う