arveltのソフトウェア技術メモ

Arvelt's software technology memo

ダンジョン生成プログラムを作ってPyPiに登録した話

 

https://pypi.python.org/pypi/dungeon-generator

しました。

 

https://github.com/arvelt/dungeon-generator

リポジトリはここで。Demoみたら雰囲気はわかると思います。

 

目次

 

背景

Unityでローグライクのゲームを作ろうとしているのですが、ダンジョン生成というのがよくわからないのでとりあえず手元で試そうと思ってPythonで作りました。

せっかく作ったのでpipyに登録しました。

SphinxPythonのdocstringを生成させたり、それをgithub-pageに登録させたり、テスト書いてみたりといった、エンジニアリング的に試してみたかったこともついでに試しました。

その辺のことを書きます。

 

 

エンジニアリング

1.Sphinxでdocstringを生成する

Sphinxを使ってみたかったので使ってみました。まず試したところはここに書きました。http://qiita.com/Arvelt/items/45428c5f9661cec3f513

その後実際にこのリポジトリに適用しドキュメントの生成をするようにしました。

 

2.Sphinxで生成したドキュメントをGithub-pageにする

それもできれば自動で。これうまくいってるかちょっと怪しいんですが、なんとかできたように思います。

masterのあるディレクトリにgithub-pageブランチのsubmoduleを作るということをしています。

このへんが参考になりました。ありがとうございます。

github のプロジェクトにSphinxドキュメントを良さげな感じにおきたい 其の一 - Study08.net 対シンバシ殲滅用人型機動兵器

github のプロジェクトにSphinxドキュメントを良さげな感じにおきたい 其の二 - Study08.net 対シンバシ殲滅用人型機動兵器

 

3.PyPiに登録

こういうのは決まりきった手順だと思いますが、知らないとなにからやったらいいのかわからないという系の話です。しかもPythonはパッケージ管理周りが非常にややこしいです。

このへんが参考になりました。ありがとうございます。

今どきのPythonのライブラリ自作からPyPIへの登録 - Qiita

 

 

アルゴリズム

せっかくなのでどのように作っているかを書きます。

ダンジョン生成のアルゴリズムは調べると色々とでてきます。

 

http://wise9.jp/archives/6964

いちばんわかりやすかったのはここです。最初はこれのクローンみたいなものを作ろうとしていました。しかし、二次配列を作ってそこにいろいろやっていく、というアプローチがどうしてもうまく実装できずに失敗してしまいました。

なので全部自分で考えることにしました。アプローチも変えて、ダンジョンのマス目を区切って色々やっていくのではなく、先に部屋クラスや道クラスがマス目をそれぞれ保持して、最後にマスの順に束ねていく、というやり方にしました。

もしかしたら遅いかもと思っていたのですが、実際動かしてみたところそれほど遅さを感じることはなかったので、Unity上でのこの実装を使おうと考えています。 せっかく独自の実装をしたので紹介しようと思います。

  

おおまかには以下の流れです。

1.部屋を作る。

2.部屋の場所を探す。

3.道を通す。

4.調整する。

 

例を挙げながら詳しく見ていきます。

 

1.部屋を作る

gyazo.com

 

2.部屋にドアを決める

gyazo.com

 

3.部屋の場所を探す

ある部屋を基準にした場合、他の部屋が東西南北のどの方向にあるかを調べます。

この例だと、基準にしている部屋の西に部屋が2つあるということがわかります。

 

gyazo.com

 

4.最短距離の部屋を探す

同じ方向に複数の部屋がある場合は1つに絞ります。最短距離の部屋を選ぶという仕様にしました。

この例だと実線で示した部屋の方が近いのでそちらが選ばれます。

gyazo.com 

 

5.ドアのペアを作る

gyazo.com

 

6.3と4と5をすべての部屋に対して行う

これで全ての部屋がどの方向に対して道を作っていくかがわかります。

またこの際に同じドアを逆から見た組み合わせができてしまうのでそれは省いておきます。 

 

7.道を伸ばす

5の時点で道が縦に伸びるか横に伸びるかは決められるので、部屋の方向に向かってお互いに道を伸ばします。

gyazo.com

 

8.道をつなぐ

縦に伸ばしている場合は横、横に伸ばしている場合は縦、がそろったらそちらの方向にも道を伸ばします。これで道がつながります。

gyazo.com

 

9.8を全てのドアの組み合わせに対して行う

これで全ての部屋がつながります。

またこの時に、部屋を横切ってしまうような道、部屋に隣接してしまう道、は作らないようにしています。

 

10.調整する

9で道を作らないパターンもあるので、孤立する部屋が発生します。

そのような部屋は削除してしまいます。

 

11.完成形

この例だとこのような完成形になります。

gyazo.com

 

以上です。

これをUnityに移してからが私のゲーム作りのスタートなのでがんばりたいと思います。

 

sphinxでpythonのdocstringを生成する話

を書いた。


Python - Sphinx入門。Sphinxでdocstringの生成 - Qiita

 

pythonで書いてるコードがあって、そのドキュメント用意しょうと思ったけどなかなかうまくできなくて困ってました。モジュールをインポートするとこがわからなくてつまっていたのですが、やっとこ解決したので書きました。

 

How Google Worksを読んでのメモ

所感

非常におもしろい。今まで漏れ聞こえていたGoogleの仕事のやり方だとかを、1つのものとして読み取ることができる。優秀な人材を揃え、彼らに自由と権限を与える。言葉にするとただそれだけのことが、実際にやるとどれほど難しいことか。それを実現するためににいかにして取り組んできたかを読むことができる。

これと「小さなチーム大きな仕事」も合わせて読むとかなり意識が高まってやってやるぜっていう気持ちになるのでそちらもおすすめである。

 

内容のメモ 

文化について

・スマートクリエイティブ。彼らはコンセプトを考えるだけではなく実行力がある。プロダクトを作ることができる。専門性とビジネススキルと想像力を持ち合わせた人材。
・責任と自由を与える
・チームは小さく

戦略について

・楽しさとはイノベーティブと同じであり、許されることの境界が広いのが重要
・イノベーティブな技術的アイデアを見つける方法の1つは、組み合わせることだ。もう1つは小さな問題の解決策を、スケールさせることだ。
・問題を新しい方法で解決し急速に成長して拡大できるプロダクト。それを有する企業は成功できる。

 

人材について

・情熱のある人間はそれを表にださない。本人が興味あることを話させてみると人となりがつかみやすくなる。
・知力だけではなく変化に対応できる人物を採用するべきである。過去の失敗、直近の重大な現象を振り返ってもらいそれについて話してもらおう。
・面接スキルは誰しもに必要なスキルだ。経験はそこから何を学んだかとセットで聞き出すのもよいだろう。
・キャリアを考えるのなら、一番はじめにどの業界かを選ぶかが大事だ。企業の選択はその次にくる。

 

意思決定について

・正しい意思決定には、正しい選択をすることだけでなく、そのプロセス、タイミング、実行手段についても重要だ。
・幹部が身に付けるべきスキルは、自ら決定する問題と、部下に任せるべき問題を見分ける能力だ。意思決定の回数は少ない方がよい。

 

コミュニケーションについて

・情報は、法律あるいは規制で禁じられているごくわずかな事柄をのぞきすべて共有する

 

イノベーションについて

・グーグルとアップルは「コントロール」に対する考え方が違う。しかし消費者にとって最高のユーザー・エクスペリエンスを生み出したいということは共通している
・急速に成長しており競合がひしめく市場ではイノベーションが起きやすい。巨大な市場と、新しい技術がそれを生み出す。
・ユーザーに焦点を絞れば、利益は後からついてくる。
・発想は大きくする。スケールの大きい問題として捉え直すことで新しい考え方へたどり着く。
・20%ルールとは、時間のことではなく自由な裁量のことを意味する。重要なのはそこから学びが生まれることだ。
・世に出してから手直しする。そのプロセスを最も早く繰り返す企業が勝つ。しかし、それはあとで改善することを前提に質の低いプロダクトをだしてもいいという考え方ではない。
・これまでの投資額に関わらずに、失敗は失敗と判断することは何よりも重要。

 

未来について

・自分たちの事業で聞かれたら最も嫌な質問を問い掛け合う。何が起こりえるのかという想像力を働かせる。

 

 

How Google Works (ハウ・グーグル・ワークス)  ―私たちの働き方とマネジメント

How Google Works (ハウ・グーグル・ワークス) ―私たちの働き方とマネジメント

 

 

2014年を振り返って

・前年度にたてた目標

勉強ってことなので、上から下まで全部自分で1つ、Paas使ったのが1つ、ライブラリが1つ。みたいに形態の違うものにそれぞれ挑戦したいですね。
それと、退職しました記事書いたらホッテントリ入りしてしまいましたので、SIerからWebに転職したよアフターもぜひ書きたいです。8月頃に。

 

 ・今年やったこと

1月。ステートフルJavascriptを読んで色々やっていた。Unityを触った。母艦のPCをWindows8にした。pythonアップローダみたいなの書いた。

2月。デブサミに行った。

3月。three.jsを触った。ドラクエモンスターズ2やった。

4月。パーフェクトpython読んで、pythonさわってた。ダクソ2やってた。

5月。js、node、でtodoアプリを作ってみた。

6月。Dojo tool kitの勉強してた。

7月。DirectXの勉強を始めた。最新のDirectXでは機能が多すぎて死ぬので9の環境を作ってやった。マインクラフトやった。

8月。転職一年後の記事を書いた。

9月。YAPCにいった。Pyconにいった。ダクソ2のDLCやってた。

10月。Ansible触った。モンハンやってた。

11月。TESOやってた。サバゲやった。

12月。ドラクエ10やってた。

 

・目標を達成したか?

上から下までを1つ→×、Paasを使ったのが1つ→◯、ライブラリが1つ→×、転職一年後の記事を書く→◯。

nodeで書いたみたものと、転職後の記事を書くのは達成しましたが、それ以外はやっていませんね。今になって思うと私のスキルセットと時流を考えると上から下までを用意することはあまりためになるとは思えないですね。でもライブラリ組むのはやっておくべきでした。

 

・所感

私のスキルセットはフロントに寄り初めています。その方向を伸ばすことで考えます。そのためには下から上まで一気に把握することよりも、Paasの使い方を理解する方が私のためになるとも思います。またデザインやユースケース設計のことも視野にいれなければいけないなと思いました。その作ったものを正しくするための品質とは? 転職アフターで書いたようにいかにして良い物を作るのか、の部分に注力していきたいように思います。そろそろ何をやらないかということを決めないと行けない時期に来たように思いました。

あとゲーム作ることと東方漫画を書くことを始めたいです。それはなんというか人生の目標というか生きる目的というかそれをやりきったのなら死んでもいいとかそういうレベルでの夢なのですが、あまりにもなにもやってなさすすぎて、したことのない恋にこがれつづけるために本気で愛さないみたいな本末転倒になりつつあるので。ちゃんと始めようかと。

いろいろ諦めてUnityとかのレベルデザインツールを使うことでとにかく完成させる方向と、DirectXや3D数学の勉強をして裏のことをちゃんと知るという方向があります。あとイラストの真似事はしても漫画となるとさっぱりわからないのでそういうのを勉強をするということがあります。 

 

・来年の目標

Paasで何か1つ作る。ライブラリのようなものを1つ作る。フロントエンドに関する潮流を追いかける。品質管理に関する学習をする。扱う対象について。Javascriptcss、それらを扱うフレームワークGoogle製品全般、pythonとそれらを扱うフレームワーク。このへんを深めていきたいと思います。

趣味の目標としては、Unityを触って1品ゲームを作ること。DirectXを触って3Dへの造形を深めること。漫画の練習をすること。

 

 

Ansibleを使ってみた話

Python製のプロビジョニングツールAnsibleを使ってみました。

 

サーバーで遊ぶようにさくらのVPS借りてるんですが、VPSだから作って壊してを繰り返すじゃないですか。なのでセットアップ用のシェルを作ってたんですが、だんだんメンテしんどい感じになっていまして。

ここらでひとつはやりのプロビジョニングツールでも使ってみようかと思ったのです。これ系といえばChefですけれど、Chefはオレオレルールが多すぎてどうにも肌に合わなかったのです。入門記事読もうとしても意味がわからない。そこでansibleを知って、sshで色々やるんだよ。っていうのを見て、なるほどわかりやすいそれだ!ってなったので使うことにしました。

 

arvelt/myserver-setting-ansible · GitHub

というわけで書いたんですけれども。

 

基本のき、ベストプラクティス、Galaxy、パスワードどうすん? ていうことについてはReadmeにメモってあります。

それ以外だと。その渡すパスワードをコマンド叩いたときにいちいちタイプするのめんどいから、ローカルにおいてあるファイルにかいておいて、シェルで渡せばいいか、とか。Railsアプリ(ここではRedmine)のデプロイめんどくさすぎて、これに何の意味があるのか(哲学、みたいな感じになったりしていました。

 

そもそもReadmeにTipsとか書いてて、Readmeってそういうんじゃねえから!Wiki使え!っていう感じなんですがこれはこれで自分で見返すのが凄い楽なのでおすすめ感あります。

Wikiまでいくのめんどいです。みたいな。

 

しかし、プロビジョニングツールにすると言っておきながら、最初のトリガーがシェルになってるあたり微妙感があります。VPSのコンソールからOS入れたところから始まる、っていう想定なのでまずssh設定しないとansble通らないじゃん?ていうせちがらい事情があります。

そこらまで含めてがっちりできるのはChefをサバクラ構成したときなんでしょうかね・・・。

 

ですがベターシェルとして使うという観点でいくとかなり良いのではと思いました。OSごとの細かい話とか気にしたくないのでmoduleが吸収してくれているのがよいところだと思います。Galaxy bookもあるので共有できますし。と思ったらYUMとAPTとかあって、だからそういうの考えたくないんだよ!なめてんのか!とかなりますね。

 

というわけでansible。小・中規模のサーバー郡をプロビジョニングしたいとき、もしくは個人用サーバーのセットアップ等に使えばよいと思います。

 

pycon2014jpに行ってきた話

所感

django-debug-toolbarよさげ

pyramigばかりでflaskみなくなったけどflaskオワコンなの?

ラズパイ面白そうだから買う

非同期ライブラリはtornadoがいいらしい

pythonパッケージツールのことがさっぱりよくわからない。結局どうしたらいいんだ。virtualenvいいっていうけど結局それの操作覚えないといけないので面倒くささは何も変わらないなぁ。

python3はGAE SDKが対応したら粛々と移行を行うと思います。それ以上も以下もない。

 

 

面白かった話

CH03 Djangoアプリケーション、パフォーマンスチューニング (ja) - YouTube

【発表資料】PyConJp 2014 「OpenCVのpythonインターフェース入門」と、その補足説明 | DERiVE コンピュータビジョン ブログ & メルマガ

Python を支える技術 ディスクリプタ編 #pyconjp - Qiita

CH15 Pythonではじめる野球プログラミング (ja) - YouTube

CH01 Opening~Keynote: Kenneth Reitz - YouTube

Pythonによる非同期プログラミング入門

パッケージングの今

 

 

メモの供養。内容保証なし

pycon2014jp 1day

@hirokiky
SQLを吐きまくるコードは誰だ
インデックス
キャッシュ
アプリケーション外

django-debug-toolbar
dbログ出力
Funcload


python, Raspberry Pi, arduinoで作る商品電力モニター
@kironono

らずぱいとあるどいのの通信
シリアル通信
RS0232C
TX,RX,GNDがあればいい

Firmata
python-firmata

pySearial

電力の見える化
電流センサー
あるどいの
 センサー制御
らずぱい
 あるどいのと通信
 Webアプリ
 データ保持

電流センサ
CTL-10-CLS

 

リファクタリングツール
flake8
docformatter
eradicate
unify
pyformat
jedi
Rope
Code Climate
Radon
Sentry

 

 

pycon2014jp 2day
pythonの非同期プログラミング
@checkpoint
非同期処理の選択肢
twisted
 イベント駆動型ネットワーキングフレームワーク
 TCPUDPSSL、HTTP、SSHFTP
 Deferred使う
tornado
 Facebookが開発のOSS
 WebFW+非同期通信ライブラリ
 高速
gevent
thread, multi process, etc
asyncio
 python3.4から標準ライブラリ入り
 アーキテクチャ
 Event loop
 Corutines
 Future, Task
aiohttp
 非同期の使い方としてよいサンプル

 

 

パッケージングの今
パッケージを使う・作る・活用
pypi
pip
virtualenv
pip
-pre
-allow-external
-allow-univerified
python3.4以降からpipを利用可能になる
ローカルサーバーからインストール
 pip install pyramid -f url
requirements.txt
--no-indexとかある
wheel
 pip install wheel
 pip wheel pyramid
setuptools
 パッケージングするための必須ツール
setup.py
 パッケージのメタデータを書いておく
 内部ではsetuptoolsやdistutilsなどを呼ぶようにする
ローカルPyPIサーバー
 pip install devpi
devpi
 travisとかでpip wheelしておいてwheelhouseまるごとVCSに入れてしまうようにする
 devpiをLANに立てておくとか、Wheelしておくとか
requirements.txtを分けると使い勝手がよくなる(依存ライブラリとオプションとか)

使う
 pipが細かく進化してる
作る
 setuptools
公開
 wheelを使うとよい

 

 

sqlacodegen

 DB schemeからSQLAlchemyのModelコードを自動生成
Start Bootstrap
morris.js
 棒グラフ・折れ線グラフ
HIGHCHARS
 散布図
セイバーメトリクス
 BABIP
 ピタゴラス勝率

YAPC2014に行ってきた話

行ってきたので感想とメモを書く。

 

所感

Perl mongerが型を求めてGoやらJavaやらScalaに手を出している感じ面白い

・言語・ツール・環境の選択は適材適所大事。その判断をできることがプロだよね

・バイナリで一本で配布できるGoつよい

Githubがlibgit2のラッパーであるSmokeからGit RPCに変えようとしているけど、やっぱり想像するより計測するべきなんだ!という強い気持ちを感じた。

・らずぱいに触りたい気持ち高まる

Yapcは技術の話が半分くらいだけ。残り半分のうち、半分は自分語り、もう半分は内輪ネタ。そういうのは決まった人しか見ないブログとかでやるべきで、大勢の前に出てわざわざやるものではないと思う。

・ベストトークにPerlがないなんてことよりも内輪ネタゴリ押ししてしかもそれがウケる空気になってることは問題なのでは。初めて来た人が半分以上!とか言ってたのにそれでいいのかな。

・会場が狭く立ち見ばかりでしんどい。

・ 1000人クラスのイベントを大きな問題なく終らせたことすごいと思う。スタッフのみなさんありがとうございました。

 

 

自分が聞いたやつ資料へのリンク置く

Perl meets Real World // Speaker Deck

Go For Perl Mongers

Scala In Perl Company // Speaker Deck 

On Technological Selection // Speaker Deck

自然言語処理を支える技術 〜要素技術とPerlの活用〜 // Speaker Deck

Perl for Perl Mongers (YAPCに来た人は皆Perl Mongerでは?)

OAuth/OpenID Connectを用いてID連携を実装するときに気を付けること #yapcasia // Speaker Deck

趣味開発のためのVPS/クラウド活用術 // Speaker Deck

Git and GitHub at YAPC:Asia // Speaker Deck

JSON SchemaとAPIテスト / Naoki Shimizu - YouTube

 

以下メモ供養、内容保証なし

一日目

Perl meets real world」

らずぱい

あるどぃの

あんしぼ

Webの人にはらずぱいおすすめ
 kano (子供向けのオールインワンのPCキット)
 GPIO コマンドからピンのon/offができる

Arduino
 単体ではそれほど。エコシステムがすごい

らずぱいとあるどぅのつかいわけ
らずぱい
 画像処理エンコード重たい処理
 複雑なアルゴリズム
 PC向けのライブラリを使いたい
 簡単なオンオフのハードウェア制御
あるどぃの
 自作の電子部品と連携
 あるづぃの向けライブラリを使う
 PWM制御とかしたいとき

ハードウェアのオープンソース
arduino自作のメリット
 機能の追加
 フットプリントを減少
 Arduinoのエコシステムの恩恵を受けたい

らずぱいとあるどいので連携
 Firmata
 ArduinoにFirmataを書き込む

ハードウェアを自分で作れる時代がきてる
IR kit


「Go for perl monger」

goはLLっぽいc

goに例外はない
panic recoverはほんとにダメな時
オブジェクト指向忘れろ
gormrutineはposixスレッドではない
例外とエラー
 panicとか使っちゃダメ
 複数の戻り値でerrorを返す
 戻り値のエラーは毎回確認
 panicはassretみたいに
 fmt.Errorがいい

構造体
 基本はcみたいな構造体
 継承がない
 合成は継承っぽく見えるけど委譲
継承せずに小さな部品を作る
それを無名埋め込みする
genericないのでinterface勉強しよう

オブジェクトっぽい階層を作るのではなく、フラットなAPIを作ることを考える

並行処理
 gorouten,channel
 deferの使い方とか

 

Json Schema」
API結合テスト
JsonSchema
 jsonデータをjsonのschemaとして定義したもの
 データの検証に使える
json-fuzz-generator
 json schemaで記述された仕様から正常異常リクエストデータを生成する

 

Scala in Perl Company」
Perlのエラー検知の限界
 思ってもない原因でエラーが起きる
 想定できるならエラーにならない
エンジニアが頑張ってコードを把握するしかないのか
継続的なソフトウェア進化の難しさ
安全性の確保が非常に大変
静的型システム使って安全性を高める
Scalaを選んだ理由
 表現力の高い静的型システム
 代数的データ型を定義できる
 記述の柔軟さ簡潔さ
 社内に書ける人がいる
コンパイル時間が長い
言語機能が豊富なので学習コストは高め

 

 

「いろんな言語を適材適所で使おう」
問題意識
Webアプリは大変になっていく
肥大化、複雑化、多様化
環境、言語、FW様々増えていくが適切に選択するためには
選択の目的
ユーザーに提供する価値を最大化するため
言語選択の決定要因
言語自体の特性
コミュニティ
エコシステム

サービス開発は時間との戦い
持続的成長
評価は一時的なものでしかない
移り変わる状況の下でその都度最適な選択を
変化への技術的対応
将来得られるだろう価値を見積もる
撤退して得られる価値より継続する価値が高いならば撤退する
microservices
SOAと違う
技術的分散・変化への組織的対応


自然言語処理を支える技術」
ルールベース
 メンテがめんどい
 例外に弱い
統計的学習モデル
 パラメータの調整が難しい
 形態素解析
 自然言語文を形態素に分析すること
コスト最小法
 単語辞書を用意する
 辞書を利用して単語候補を列挙する
 単語を文頭から文末まで並べて組み合わせた構造を作る
 コストを設定する
 コストが最も小さな経路を探索する
動的計画法
Mecab
Trie

 

Java for perl Monger」
Java結構いいよ

 

二日目

「Changing the tires on a moving car: a case study in upgrading legacy architecture」
githubのバックエンドの人

gitについて
gitはだぐ?である
git cat-file -p で親を辿れる
一つのリポジトリホスティングするなら簡単
700万リポジトリ
500万push/day
一億pull/day
27ファイルサーバー
100TBストレージ
昔のGritはrubyのgitラッパー
2007/10/9 最初のgithub
GFFというファイルシステムを使ったがあまりスケールしない
Smoke というのを使っていた
linuxはBitkeeperからGitになった
使い方として共有ライブラリでいいのでは?
コマンドラインツールなのでWebで動かすには問題があった
そこでlibgit2が作られた
Jgit
Git-Raw
Git RPC
Git Smoke to Git RPCへの変更
Graphite グラフツール


「Oauth/OpenId Connectionに実装で気をつけること」
ソーシャルログイン目的
 利便性工場・経費削減
 Oauth Dance
 各サービスのSDK・言語の汎用ライブラリとか
 UI/UX
連携キャンセル次の挙動
 エラーなの?ユーザーの意図は?やっぱりやめたい?やりなおしたい?
 未登録ユーザーの扱い
 新規登録フローに誘導するとか
どこまで進めてよいか
 過去のログイン情報の取り扱い
 アイコン並んでると、どれ使ってたっけ?ってなる
 前回利用したサービスを保存して利用するとか
セキュリティ
 Webアプリ
 リダイレクト地のCSRF対策
 バックエンドサーバー都の連携
CSRF
 第三者のアカウントでログインさせられる
 第三者のソーシャルアカウントと連携され乗っ取られてしまう
対策
 通常のCSRF対策をクロスドメインでこなう必要がある
 外部サービスに引き回すStateパラメータを用いる
 ネイティブアプリとソーシャルログイン
 Token Replace Attackのリスク他のアプリ向けのAccessTokenによりアカウントのっとりが行われるかも
 バックエンドサーバーは必ずそのAccessTokenが自らのアプリに対して発行されたことを確認する
Googleの場合
 ネイティブアプリ向けSDKからWebアプリ向けのAuthorization Codeを取得できる
 ソーシャルログインによりどの機能を省略できるのか?
認証
 すべての認証
 強度の低い認証
 メールアドレス確認
 属性情報の入力
どの機能から入るか?
 既存アカウントとの連携
 新規登録
どのデバイスか?
 スマホ向けWebアプリ
 PC向けWebアプリ
 ネイティブアプリ
事例
 mixiGoogleアカウントでログインできるようになった


「趣味開発のためのクラウド/VPS入門」
PaaSは割高
比較
 AmazonAWS
 GoogleConputeEngine
 さくらVPS
 DegitalOcean
 VULTR