このエントリーをはてなブックマークに追加

まべ☆てっく vol.2に「負荷テストを行う際に知っておきたいこと 初心者編」で登壇しました

マーベラスの森と申します。
先日は悪天候の中、わざわざご足労いただきまして誠に御礼申し上げます。

さて、「まべ☆てっく vol.2」にて講演に使用した資料が、公開されています。
http://www.slideshare.net/marv_tech/ss-69519657



今回は「負荷テストを行う際に知っておきたいこと 初心者編」と銘打ちまして、以下の3点について講演させていただきました。
・ストレージのシンプロビジョニングについて
・ロードバランサの負荷について
・jmeterのチューニングについて

「知っておきたいこと」というのは、裏を返せば「知らないと損をすること」とも言えます。
技術的にさほど難しい内容ではありませんので、インフラエンジニア/プログラマ問わず、軽い気持ちでご笑覧いただけますと何よりです。

引き続き、まべ☆てっくをよろしくお願いいたします。


まべ☆てっくvol.2 レポート

寒さが本格的になってきました。
みなさん、如何お過ごしでしょうか?

まべ☆てっく運営 大野です。

11月24日、「ゲームと負荷検証のエトセトラ」をテーマに開催致しました

まべ☆てっく vol.2

笑いあり、ぶっちゃけありの楽しい会となりました。
登壇者の皆様、参加者の皆様、本当にありがとうございました!

僭越ながら、不詳大野、まべ☆てっくvol.2のレポートさせて頂きます。

「負荷テスト初心者編ケーススタディ」
森正一 (株式会社マーベラス)

負荷テストの際、懸念となる問題を
あらかじめ解決するための「おまじない」や、
JMeterをガベージコレクションさせないチューニング方法まで
広く深くお話しして頂きました。
具体的なコマンドがいくつか挙げて頂きましたので、
業務ですぐに使えそうですね。

「大規模負荷試験時にやった事」
土井聡史 (株式会社マーベラス)

JMeterシナリオを、より「らしく」するために考えることや
負荷検証時につまづきやすいことなどをお話しして頂きました。
森さん同様、すぐにでも業務に使えそうな内容でした。
出席者の皆様、くれぐれも質疑応答の内容は内密に願います・・・

「クラウドファーストにおけるWEBアプリケーション負荷試験実践入門」
仲川 樽八様 (株式会社ゆめみ)

負荷試験の重要性や、
意味のある負荷試験を行なうための段取りをお話しして頂きました。
「どんな形でもいいので、必ず実施する」という基本姿勢の基、
負荷試験における哲学を学ばせて頂きました。
内容については、大変に濃密ですので、ここでは語り切ることが出来ません!
是非、資料をご覧下さい。

重ね重ね、登壇者の皆様、ありがとうございました!

まべ☆てっくで用いられた資料は、connpassに掲載しております。
資料を見直したい方、参加し損ねてしまった方、是非ご覧下さいませ。
https://marv-tech.connpass.com/event/42023/

また、まべ☆てっくの最新情報は、
Twitterにてお知らせ致します。
ハッシュタグ 「#marv_tech」と共にご活用下さい。
https://twitter.com/marv_tech

まべ☆てっく運営は、次の開催に向けて走り出しております。
vol.3の開催日は・・・2月ぐらいを目標にしております。
今回同様、濃密かつ楽しい会を目指しております。
皆様のご参加、楽しみにしています!


まべ☆てっくvol.2開催のお知らせ

大分風が冷たくなり、空気も乾燥してきました。

みなさま、如何お過ごしでしょうか?

まべ☆てっく運営、大野です。

まべ☆てっくvol.1から早1ヶ月・・・
いや、2ヶ月が過ぎようとしています。
もうそろそろ次を・・・ということで

まべ☆てっくvol.2

を開催致します!

テーマは「ゲームと負荷検証にまつわるエトセトラ」。

ゲーム界隈のエンジニアであれば、
絶対に考えなくてはいけないキーワード「負荷」。
その負荷について、アプリ視点からサーバ視点まで色々な話が聴けるかも!?
ビールを飲みながらの交流会もございます!

【開催日時】
11/24(木)
18:30 受付開始
19:00 – 21:00 まべ☆てっく
21:00 – 22:00 ビアバッシュ、LT

【開催場所】
株式会社マーベラス
東京都品川区東品川四丁目12番8号
品川シーサイドイーストタワー 10階

【発表者】
仲川 樽八様 (株式会社ゆめみ)
クラウドファーストにおけるWEBアプリケーション負荷試験実践入門

森正一(株式会社マーベラス)
負荷テスト初心者編ケーススタディ(仮)

土井聡史 (株式会社マーベラス)
大規模負荷試験時にやった事(仮)

※LT希望者募集中です。

【定員】
40名

【参加方法】
こちらにご登録下さい。
http://marv-tech.connpass.com/event/42023/

ぜひぜひ、お誘い合わせの上、ご参加下さいませ!
皆様にお会い出来ることを楽しみにしています。


まべ☆てっく vol.1に登壇しました。

はじめまして!司令官!
職業提督 マーベラスの大西と申します。

今回は、2016年9月8日(木)に弊社内で行われました「まべ☆てっく vol.1」にてスピーカーとして登壇しましたので、レポートをまとめたいと思います。

社内勉強会のスピーカーとしては何度か登壇はありましたが、社外の方をお呼びしての初めての勉強会な上、豪華な面々にもご登壇いただき、少々緊張しておりました。ですが、先日行われた結婚式での親族紹介の方が緊張したのは内緒です。負荷試験ができない環境だからかな?どんな状況においても負荷試験って大事ですね。

http://www.slideshare.net/KazuOnishi2/db-66455537
※何故かそのまま表示できないので、リンクでご容赦を・・・
※FireFoxで開く場合、壊れる場合がありますが、キャッシュ消せば表示されるっぽい↑

今回は、過去に実際に起きた負荷関連の問題の内、DBと負荷試験に関連した事例を2つほど紹介し、負荷試験は重要であるということと、負荷のほとんどはDB起因よりもソース起因の事の方が多いということを発表させていただきました。「生々しい話」と好評をいただいたようで、本当にありがとうございます。

次の登壇の機会があれば、『どうして練習艦 鹿島が最高でプリティなのか?』を1時間ほど話したいのですが、いろんな方面からお叱りを受けると思いますので、ちゃんとRDBの話か、MySQLクラスタの話か、ORM周りの怖い話ができればと思っております。


まべ☆てっくvol.1レポート

少しずつ風が心地良く、日差しが柔らかくなってきました。
みなさん、如何お過ごしでしょうか?

まべ☆てっく運営 大野です。

9月8日、「RDBの四方山話」をテーマに開催致しました

まべ☆てっく vol.1

お影様で好評を頂くことが出来ました。
登壇者の皆様、参加者の皆様、本当にありがとうございました!

僭越ながら、不詳大野、まべ☆てっくvol.1のレポートさせて頂きます。

 

菅野明洋(株式会社 Aiming)
DB設計を静的解析するツールを作ってみた

菅野さん自作のER図から、
DB設計の問題指摘を行うツールを紹介して頂きました。
現在、Githubにて公開中です。
https://github.com/asugeno/safer
https://github.com/asugeno/safer_binary
スペルミスからインデックスの不足まで、
包括的な問題を指摘して頂けるのは、
とてもありがたいです。

 

大西一嘉(株式会社マーベラス)
失敗事例にみるDBの負荷試験の重要性

弊社、大西による実際に現場であったこわーい話。
多くの方から「生々しい話」、と好評を頂きました。
後日、弊社大西からのレポートが公開される予定でございます。

 

瀬島 貴則(グリー株式会社)
binlog と Two-Phase Commit と Group Commit の話(仮)

MySQLのレプリケーション時の詳細な挙動を、
ソースコードレベルまで付き詰めたお話をして頂きました。
LTには、gdbを用いたデモまで・・・!
ちょこっとだけMySQLをわかったつもりでいた私ですが、
まだまだだということを痛感させて頂きました。

 

奥野 幹也(日本オラクル株式会社 MySQL Global Business Unit)
リレーショナルデータベースとの上手な付き合い方

「今日はゆるふわな話をします。」から始まったご講演。
なぜリレーショナルデータベースを使うのか、
どういう使い方をすれば良いのか。
基本的なことなのに、どこにも書いていないような心得をご教授頂きました。
DBを使い始めようとする方から、熟練者まで、
是非とも一読して頂きたい内容でした!

また、奥野さんからご本をいただきました。
https://www.amazon.co.jp/dp/4798147400/?tag=wotokobooks-22
こちらは、ビアバッシュにてじゃんけん大会を開催し、
勝ち抜いた方へ進呈させて頂きました。
奥野さん、ありがとうございました。

重ね重ね、登壇者の皆様、ありがとうございました!

まべ☆てっくで用いられた資料は、connpassにもまとめております。
資料を見直したい方、参加し損ねてしまった方、こちらをご参照下さい。
http://marv-tech.connpass.com/event/36743/

また、まべ☆てっくの最新情報は、
Twitterにてお知らせ致します。
ハッシュタグ 「#marv_tech」と共にご活用下さい。
https://twitter.com/marv_tech

まべ☆てっく運営は、次の開催に向けて走り出しております。
vol.2の開催日は・・・さすがにまだ決まっておりませんが、
今回同様、濃密かつ楽しい会を目指しております。
皆様のご参加、楽しみにしています!


第三話:マーベラスコネクトLite

ここは喫茶「まべこねこ」
閑古鳥が鳴くこの店ですることもない、まべコネたん
暇を持て余してるところに店長が急に話題を降ってきました

【祝】マーベラスコネクトLite【公開】
ここまで読んでおいてなんだけど…この二人何者?
まべコネたんよ、マーベラスコネクトLiteというものを知ってるかの? スマホじいじい_1
まべコネたん
まべコネたん_1
…Lite?
なにそれ?
(マーベラスコネクトは何だか聞き覚えある気がするけど)

やはり知らんかったか。

まぁ、そうじゃと思ったわい。

ふぉっふぉっふぉ。

スマホじいじい_1
まべコネたんまべコネたん_1 (…イラッ)
ふふ、仕方ないのぅ。
紹介してやってもよいんじゃが…。(チラッ
スマホじいじい_1
まべコネたんまべコネたん_1 いや、別にいいや。
…… スマホじいじい_1

………

スマホじいじい_1
まべコネたんまべコネたん_1 (暇を持て余す作業に戻る)

いやいやいや、紹介させてください!

お願いします~~~~~!!!

スマホじいじい_1
まべコネたんまべコネたん_1 最初からそういえば良いのに。 

まぁ…バイト代上げてくれるなら考えなくないけど。

本当じゃな!?

 

じゃあ、時給2000円から3000円にアップするから紹介させてもらっても…よいかのう?(チラッ

スマホじいじい_1
まべコネたんまべコネたん_1 …仕方ないなぁ~聞いてしんぜよう。
(万事オッケーだわ)
はは~~~~… 

それでは、紹介させてもらうぞい。

この度、マーベラスコネクトの一部機能がオープンソースとして公開!

それが…

マーベラスコネクトLite !!

GitHubで絶賛公開中じゃ!!

スマホじいじい_1
まべコネたんまべコネたん_1 おぉ~!!それは(きっと)すごいね!!!
(時給3000円の笑顔も公開) 

で、何ができるの?

『ユーザの登録・認証』や『引き継ぎ機能』などが構築できるぞい!

そのための『ユーザの登録・認証・取得』のAPIも実装されとるのじゃ。

他にもNGワードAPIもあるんじゃぞ。

スマホじいじい_1
まべコネたんまべコネたん_1 構築って難しそう!!
ふふ…構築手順や詳細な内容についてまとめられておる 

マーベラスコネクトLiteのWikiがあるのじゃ!

こちらには『ユーザの登録・認証』や『引き継ぎ機能』のシーケンス図などもあるので、参考しにしてもらえると嬉しいぞい。

スマホじいじい_1
まべコネたんまべコネたん_1 どんどん参考にしちゃって!!!
(何するかはわからないけど)
また、使ってみて気になるところや改善点などがあれば
どんどんIssuesを上げてもらって構わんぞい!!
スマホじいじい_1
まべコネたんまべコネたん_1 構いません!!
(Issuesって何?)
というわけで、生まれたばかりの 

マーベラスコネクトLite を…

スマホじいじい_1
まべコネたんまべコネたん_1

よろしくお願いします!!


まべ☆てっくvol.1開催のお知らせ

秋風が心地よい時節・・・
いや、ちょっと風が激し過ぎる気がしますが、
如何お過ごしでしょうか?

まべ☆てっく運営、大野です。

名乗りで名前が出てしまっていますが、

まべ☆てっく

を開催することになりました!

☆なんて付いてしまっていますが、
れっきとした、エンジニア向けの勉強会でございます。

テーマは「RDBの四方山話」。

RDBのあーんな噺やこーんな話が聞けちゃうかも!?
ビールを飲みながらの交流会もございます!

【開催日時】
9/8(木) 19:00-(受付開始18:30)

【開催場所】
株式会社マーベラス
東京都品川区東品川四丁目12番8号
品川シーサイドイーストタワー 10階

【発表者】
奥野 幹也様(日本オラクル株式会社 MySQL Global Business Unit)
リレーショナルデータベースとの上手な付き合い方

菅野明洋様(株式会社 Aiming)
DB設計を静的解析するツールを作ってみた

大西一嘉(株式会社マーベラス)
失敗事例にみるDBの負荷試験の重要性、他

※LT希望者募集中です。

【定員】
40名

【参加方法】
こちらにご登録下さい。
http://marv-tech.connpass.com/event/36743/

ぜひぜひ、お誘い合わせの上、ご参加下さいませ!
皆様にお会い出来ることを楽しみにしています。


PHP7を同時接続25,000/秒、webを36台ならべて負荷計測してみた

●PHP7を、商用環境で使いたい!

さて、PHP7が2015年12月に正式リリースされてから、早4か月が経ちました。
そろそろ安定してきたかな…、と思いつつも、まだまだ商用環境に導入するのは不安だと思います。

「本当にPHP7って高速なの?」
「PHP7って安定して動くの?」

いろいろな不安があるかと思います。
何しろ、PHP5からのメジャーバージョンアップですから。
普通に考えたら、まだ時期尚早かもしれません。

でも、やはり使いたい。
なにしろ、PHP5と比較して2倍の速度で動作するというのは、大きな魅力です。

そこで、「本当に商用環境で使えるか」という観点で、「リアルな」検証をしてみたいと思います。

●本当に使える、リアルな計測をしよう!

PHP7はPHP5に比べて、高速に動作するという触れ込みです。
実際に「だいぶ速くなったよ」といった検証結果が多く見受けられます。

しかし「これだ!」という検証内容がなかなか見つからないわけです…。

例えば、プログラミングで言うところのハローワールドレベルのものや、単純なコマンドをひたすらループさせたもの等々。
何でもそうですが、ベンチマークで計測した速度と実際に使ってみたときの速度って、結構違いますよね。

とにかくリアルなプログラムで計測したい。
そこで実際に弊社で開発中のアプリケーションを使って負荷試験をしてみました。
しかも、結構な高負荷をかけて。

「安定して動く」プログラムが「安定して動かなくなる」のは、負荷が上がってリソースがひっ迫したときや、並列性が上がったときではないでしょうか。
PHP7自体も勿論プログラムの集合体ですから、問題が発生するとすれば、そういったタイミングと推測できます。

さて、実際に負荷をかけてみました。

●高負荷で計測しよう!

※サーバ構成/ミドルウェアについては、開発中のアプリケーションということでぼかしてあります。お察しください…。

サーバ 台数 CPUコア数 メモリ(GB) 備考
web(APIサーバ) 36 8 16 内訳:34台がPHP5、2台がPHP7。
分散はLVSにより実現(分散方式は単純なラウンドロビン)
DB(master/slave) 3 40 120 -
KVS(memcached/redis) 3 4 16 -

 

ミドルウェア バージョン
php 7.0.4
apache 2.2系
MySQL 5.5系
memcached 1.4.16
redis 2系

 

その他
負荷ツールはjmeterを使用
jmeterからのアクセスは外部ネットワーク経由
jmeterを稼働させるクライアントマシンは25台
jmterシナリオは、実際のアプリケーション操作をシミュレートしている
jmeterはrampupやwaitを入れることで実行タイミングをずらしている(実際のユーザーのプレイ状態に近づけるため)
cactiを使用して各種サーバ負荷を計測
newrelicも使ってみました

 

●計測結果

レスポンスタイム

・newrelicによる計測結果です。
・jmeterからのリクエストを、平均して75msec程度で処理しています。内訳は、以下の通りです。

  • MySQLが10msec程度
  • Memcachedが数msec
  • Redisは一瞬
  • PHPは60msec強(但し、 DB処理等のウエイトも含まれる)

・この辺はアプリケーションの作りによるため、PHP5/PHP7の比較とは直接無関係ですが、アプリケーションの性質を理解するための参考値としてご参照ください。
・ちなみに当該グラフはPHP5のwebサーバにて取得しています。

スループット

・スループットです。webサーバ一台に対して、ページビューで約120/sec程度の負荷がかかっているとご理解ください。
・web台数が36台ですので、ページビューの総計は約4,320/secとなります。
・こちらのグラフも負荷の規模を理解するための参考値とお考えください。

※以下は、web02がPHP5のグラフ、web36がPHP7のグラフとなります。

CPU

・CPU負荷です。コアごとにグラフが分割されていますので100%が最大値となります。
・負荷は全CPUに綺麗に分散されている状態です(つまりどのコアも同程度の負荷)
・PHP5は80%程度のCPU使用率ですが、PHP7は40%程度となります。大きな差ですね。

Load Average

 

・ロードアベレージです。グラフの単位が異なっていることにご注意ください。
・PHP5は15~20程度ですが、PHP7は1以下です。
・jmeterからのリクエストはラウンドロビンにより分散していますので単純に比較はできませんが、同じ処理をするのであれば圧倒的にPHP7の方が軽いということは解ると思います。

コンテキストスイッチ

・コンテキストスイッチ(タスク切り替え)の回数です。
・実運用上あまり問題にならない数値ではありますが、PHP5に比べてPHP7の方が多いことが確認できます。
・並列性を高めることで高速化に寄与する仕組みなのかもしれませんが、掘り下げた調査はしていません(すいません)。

メモリ

・メモリ使用量です。
・一番下の茶色い部分が実メモリ使用量です。その上の肌色の層がキャッシュ、緑の層が空き領域です。
・PHP5が12Gbytes使用しているのに比べ、PHP7は8Gbytes程度です。CPU同様、大きな差ですね。
・PHP7の方がキャッシュ使用量が多いのも、良い意味で期待ができるところです。

参考までにDBのクエリ処理状況

・マスターDBが処理したクエリの状況です。内訳は以下となります。

  • 赤色…select
  • 黄色…insert
  • 緑…update
  • ピンク…その他も加えた総数

(他にdeleteなどもあるが見えない程度)
・秒間で20,000クエリ以上捌いているようなアプリケーションを動かしている、というところから色々と想像を膨らませていただければ幸いです。

その他

以下は、PHP5/PHP7で差が無いグラフです(PHP5のものだけ張ってあります)
トラフィック等は変わらなくて当たり前の数値ではありますが、あくまでも参考ということで…

●使っても大丈夫そう、でも…

負荷計測は約6時間続けましたが、特に大きな問題は発生していません。
安定して動作していたと言える結果でした。

性能面では、特にCPU、メモリについて大きな差が見受けられました。
明らかにPHP7の方が性能が良いと言って間違いないと思います。

今回のテストの場合、それぞれのwebサーバが処理しているページビューの数はほぼ同一ですので、全てのwebサーバをPHP5からPHP7に置き換えた場合、webサーバの台数がかなり削減できると推測されます。

ちなみにコードレベルでのPHP5->PHP7への移行コストは一般的に低いと言われているようですし、実際、今回の負荷計測に使用したアプリについては、かなり移行コストが低かったという事実もあります。

しかし問題は、言語仕様の違いよりもインタプリタ(ライブラリ)の違いにあるのではないでしょうか。

例えばインタプリタ(ライブラリ)内部のバグで、apacheがsegmentation faultで落ちたりすると…
いや、素直に落ちてくれればまだ良いのですが、中途半端に生き残ってクライアントからの接続をacceptできたりする状態だと、障害に繋がる可能性が高くなるわけです。
昔であればライブラリ内部をアセンブラレベルでトレースして、「メモリコピーのときにアライメントがずれて落ちてますよ今すぐ何とかしてくださいよこっちは寝てないんですよ」などとライブラリベンダに文句を付けたりしていたわけですが、
現在はそんな時代でもなく、さらに言えば、そんなことをするくらいならPHPなんか最初から使わないわけです。

つまりは、低コストで安全に使えないと意味がないのです。

PHP7が枯れるまでは大き目のバグfixや、セキュリティ問題の修正等によるアップデートが続くと予測されますので、運用コストの一部として十分に考慮する必要があります。
アップデートによるエンバグも怖いですから、いきなり本番環境のPHPをアップデートするわけにもいかないですしね…。

せっかくサーバ費用を削減しても、運用コストが増えてしまったのでは本末転倒です。
なかなか難しいですね…。


第二話:消えたパスワードの謎

ここは喫茶「まべこねこ」
閑古鳥が鳴くこの店ですることもない、まべコネたん
仕方がないので店長にこの前の疑問を投げかけます

マーベラスコネクトにパスワードは保存されないのか?
ここまで読んでおいてなんだけど…この二人何者?
まべコネたん
まべコネたん_1
店長、第一話で言ってた「パスワードを保存してない」ってどういうことなの?
第一話って…ずいぶんメタ的じゃの。
まぁ、そのままの意味じゃマーベラスコネクトでは
どのサイトの
どのIDが
どのゲームの
どのゲームユーザーか…の情報を保存しておる。
つまり、
どのパスワードを使用したか…は保存しておらぬのじゃよ。
スマホじいじい_1
まべコネたん
まべコネたん_1
なんだか「どの」が多すぎで、世界の法則が乱れそうだよ
店長殿~! 

 

あれ?
でも、マーベラスコネクトでFacebookを選択した際にIDとパスワードどっちも入力したんだけど…
その後に、あの許可画面が出てきたような…。

ふふ、あのログイン画面と許可画面じゃが…あれは 

「マーベラスコネクト」の
サイトではない!!

スマホじいじい_1
まべコネたんまべコネたん_1

な、なんだって~~~ッ!?

あれはな、選択したOpenIDを管理しておるサイトに飛ばしておるのじゃ。
よく見てみい! 

まべコネ_連携_2

今回は「Facebook」のサイトじゃ。つまりお主は…

Facebookのサイト内でログインをし、
Facebookのサイト内でマーベラスコネクトへのアクセス許可を与えたんじゃ!

スマホじいじい_1
まべコネたんまべコネたん_1 ということは…マーベラスコネクトさんのおかげだと思っていたのは… 

全部Facebookさんのおかげだったってこと?

なんかそう言われるとあれじゃが、まぁ…そんなところじゃ。 スマホじいじい_1
まべコネたんまべコネたん_1 じゃあ、許可した後ってどうなるの?
許可したあとは、マーベラスコネクトに
「自分(まべコネたん)の情報にアクセス可能な鍵」とFacebookのユーザIDが送られてくるのじゃ。 

鍵はアクセストークンと呼ばれるたくさんの文字の羅列じゃ。
あと、アクセス可能とは言ってもあらかじめまべコネたんが許可を与えた範囲の情報になるぞい。

スマホじいじい_1
まべコネたんまべコネたん_1 ん? 

FacebookのユーザIDだけが送られてくるわけじゃないの?

うむ、ユーザIDだけ送られてきても、それが正しくFacebookから送られたものか判別できないからのぅ。 

それにIDだけじゃそのユーザの情報にアクセスできんのじゃ。

スマホじいじい_1
まべコネたんまべコネたん_1 じゃあ、アクセストークンがあれば判別できて、アクセスもできるってこと?
うむ、まずは判別じゃが… 

アクセストークンとあらかじめマーベラスコネクトがFacebookからもらっている鍵を検証することで
そのIDと鍵が本当にFacebookから送られてきたものかどうかを判別できるのじゃ!

スマホじいじい_1
まべコネたんまべコネたん_1 おぉ~検証ってところで色々丸められてる気がするけど、
すごい(んだろうなぁ、たぶん)!!
次に、アクセス… 

アクセストークンは最初に言ったように「自分の情報にアクセス可能な鍵」じゃから、
それを使えば許可された情報…今回の場合は公開情報とメールアドレスじゃな…
Facebookにある情報にアクセスできるのじゃ。

 

アクセストークンがあれば必要な情報にアクセスすることができる、
つまり…パスワードは必要ないということになるのじゃ。

スマホじいじい_1
まべコネたんまべコネたん_1 なるほど~。 

あ…ここに来てようやくパスワードの件を回収したっぽい?

 

どうしてTwitterがないの?

参考リンク

まべコネたん
まべコネたん_1
なんとなく、パスワードが保存されないってのは分かったけど… 

よくTwitterもこういう認証に使われている気がするんだけど、マーベラスコネクトにはなんでないの?

話せば長くなるがええかのぅ? スマホじいじい_1
まべコネたん
まべコネたん_1

え”っ!!

それなら別に…

うむ、では話すとしよう。
Twitterが何故選択肢にないのかを…それはじゃな、 

Twitterの仕組みではその人、本人かどうかが確認できないからじゃ!!

スマホじいじい_1
まべコネたんまべコネたん_1 えー…そうなの?
(あ、結局話すんだ…
うむ、TwitterでもFacebookと同じように「自分の情報にアクセス可能な鍵」、すなわちアクセストークンを発行する仕組みを使っておる。
この仕組みはOAuthといわれておるものじゃ。 

OAuthの仕組みで、まべコネたんがマーベラスコネクトで本人確認をさせようとする場合は…

Flow_OAuth

このような流れになるじゃろうな。

(あくまでも、もしもの話です、実際はマーベラスコネクトではTwitterによる認証はできません)

 

スマホじいじい_1
まべコネたんまべコネたん_1 あれ?
うまくいってるし!? 

本人確認できてるし!!

そう見えるじゃろ? 

じゃがそうはいかんのじゃ。
まず、この後にわしが別のサービスを提供して、それにまべコネたんが入るとしよう。

スマホじいじい_1
まべコネたんまべコネたん_1 え~~~? 

私、店長が提供するサービスなんかに入るかなぁ?

いや、例えじゃから。入ってお願い。 

…で、入るとして話を続けるぞ。

スマホじいじい_1
まべコネたんまべコネたん_1 結局、入っちゃうんだ… 

仕方ないなぁ。

入るとどうなるか… 

Flow_スマホじい1

…ふふふ

スマホじいじい_1
まべコネたんまべコネたん_1 なに、その不穏な笑い。 

というか、この店のクーポンとかいらないんだけど…

さて、その後にわしはちょっとしたイタズラを決行する。 

Flow_スマホじい2

引き継ぎをしたまべコネたんのゲーム画面には…

最弱アカウントが!!

スマホじいじい_1
まべコネたん 

まべコネたん_1




湿


!!

た、例えじゃ、例え。
うぷぷぷぷ。 

まぁ、OAuthはあくまで「サービスへのアクセス権限の許可を行う」仕組みじゃからな、
先ほどの例えは無理やりその仕組みで本人確認をさせようとした場合どうなるかというものじゃ。

さて、「暗黒面に落ちたわし」がまべコネたんのアカウントを悪用できないようにするためには、どうすればよいか分かるかの?

スマホじい 

じい_1

まべコネたんまべコネたん_1 いや、全然。
うむ、知ってた。
先ほどFacebookも同じ仕組みと言ったことも覚えておらんのも想定済みじゃ。
スマホじいじい_1
まべコネたんまべコネたん_1 そういえば… 

あれ?
Facebookも同じ仕組みだとすると…同じような結果になるんじゃ…。

まぁ、OAuthの仕組みだけではそうなるの。 

じゃが、Facebookでは先ほどのように悪用することができぬようdebug_tokenというAPIを用意しておる。
これを使うと「自分の情報にアクセス可能な鍵」が「マーベラスコネクト専用の自分の情報にアクセス可能な鍵」に進化するのじゃ!!

スマホじいじい_1
まべコネたんまべコネたん_1 進化とか、なんか急にゲームっぽくなってきた!?
少し前に「アクセストークンとあらかじめマーベラスコネクトがFacebookからもらっている鍵を検証する」と言ったじゃろ?
実は、その検証にはdebug_token APIを使っておるのじゃよ。 

そして、そのAPIで「IDと鍵が本当にFacebookから送られてきたものということを判別」だけではなく
「マーベラスコネクト専用の鍵かどうか」もチェックできるようになっておったのじゃ!!

スマホじいじい_1
まべコネたんまべコネたん_1 一石二鳥!! 

じゃあ、例えばその鍵がマーベラスコネクト専用じゃなかった場合はどうなるの?

送ってきた相手は死ぬ

スマホじいじい_1
まべコネたんまべコネたん_1

嘘!?

うむ、嘘じゃ。 

そもそも、マーベラスコネクトはマーベラスコネクト専用の鍵以外は使いこなすことができんようになっておるんじゃ。
専用でない鍵はエラーを返して、ぽいぽいぽーいじゃ!

選ばれたモノのみ扱え、それ以外には資格さえも与えぬ鍵をFacebookは生み出しておるのじゃ…。

スマホじいじい_1
まべコネたんまべコネたん_1 急に中二臭くなってきた…。 

そんな右腕が疼きそうな鍵を、
ほかのサイト…GoogleやYahoo! JAPANやmixiも生み出してるの?

実は、同じではないのじゃ。debug_token APIはFacebook独自のAPIじゃからの。 

GoogleやYahoo! JAPANそれにmixiは、
標準規格の
OpenID Connectというものを使っておるぞい!!

スマホじいじい_1
まべコネたんまべコネたん_1 わ、またなんか出てきた!!
OpenID ConnectはIDとパスワードを入力した際、従来のアクセストークンと一緒にIDトークンというものも一緒に返してくれるのじゃ。 

そのIDトークンにはどのサービスに対しての鍵かという情報が含まれておるのじゃ。
アクセストークンとIDトークン、2つをセットにしてマーベラスコネクトに渡せば、渡された鍵がマーベラスコネクト専用のものかどうかが分かるのじゃ。

スマホじいじい_1
まべコネたんまべコネたん_1 なるほど。 

Facebookのdebug_token APIとOpenID Connectって仕組みは違うけど
やろうとしてることは同じってわけかぁ。

うむ、そういうことじゃ。
どちらもその鍵を扱うのがどのサービスかということを示しておる。 

そして、それができないためTwitterが選択肢にないという理由じゃ。

スマホじいじい_1
まべコネたんまべコネたん_1 うんうん。 

でも、正直…Twitterアカウントで認証したいけど。

…TwitterもOpenID Connectなどに対応してくれるのを気長に待つしかないのぅ。 スマホじいじい_1
今回のまとめ
ユーザの本人確認と情報へのアクセス許可を確認する画面は、
マーベラスコネクトではなく各IDを管理しているサイトなのじゃ。
スマホじいじい_1
まべコネたんまべコネたん_1 全部、各サイトさんのおかげ♪
各サイトのアクセストークンがあれば、各サイトからそのユーザの情報を取得できる。 スマホじいじい_1
まべコネたんまべコネたん_1 だからパスワードがマーベラスコネクトに保存されないんだね! 

あんしんあんしん♬

Twitterがマーベラスコネクトで使えないのは、
そのアクセストークンがマーベラスコネクト専用のものか判別できないからじゃ。 

 

標準規格のOpenID ConnectやFacebookのdebug_token APIを使えば
アクセストークンがマーベラスコネクト専用のものかが分かるぞい!

スマホじいじい_1
まべコネたんまべコネたん_1 便利な仕組みだね♫
以上じゃが、他になにか聞きたいことはあるかのう? スマホじいじい_1
まべコネたんまべコネたん_1 バイトの時間もう終わりだしあがります!
…お客さん一人も来なかったけど。   

 

てなわけで、次回!
~マーベラスコネクトのちょっと詳しい話2~

またよろしくね♪

そのタイトルからして次に何を話すか決まってない感が満載じゃな…。 スマホじいじい_1

マーベラスコネクたんと愉快な仲間たち

マーベラスコネクトのイメージキャラクターとその仲間を紹介するよ!
温かい目で見守ってあげてください٩(๑❛ᴗ❛๑)۶

マーベラスコネクたん
はじめまして!
マーベラスコネクたんです。
まべコネたんって呼んでね♪
mc_tan
喫茶「まべこねこ」の店員。 

マーベラスのゲームをこよなく愛する少女。
愛称はまべコネたん

閑古鳥が鳴いている喫茶店でいつも元気にゲームを遊んでいる姿がよく見かけられる。
働かなくても給料をくれる喫茶店「まべこねこ」を心から愛している。

休日は街を散策しながらネコの写真を撮りSNSに投稿するという、リア充とオタクの境界のようなことをして過ごすことが多い。

ちなみに、こんな名前なのに
マーベラスコネクトのことはよく知らないぞ!

スマートフォンじい
スマホじいはこちらの素材から生まれました!! 

スマートフォンじいじゃ。
マスターと呼んでくれると
…嬉しいのう。
sg
喫茶「まべこねこ」の店長。 

みんなからはマスターと呼んでほしいのに、店長とかスマホじいとしか呼ばれない。

こんな歳まで親の有り余る資産で生活してきたため、閑古鳥が鳴いている喫茶店にまったく危機感をいだかない。

最近は老害と呼ばれないよう若者の文化や考え方を取り入れようと日々努力している。
そのため、twitterはアニメアイコン。

マーベラスコネクトやそれ周りの技術になぜか詳しい。