SlideShare une entreprise Scribd logo
1  sur  22
GAE/GOで限界に
 挑戦してみた

オープンセミナー2012@香川
  ライトニングトーク
     2012/7/14
自己紹介
ハンドル:ちいといつ
所属?:GDG神戸のあたりでごにょごにょ
属性:制御系よりのプログラマー
       最近はAndroid ……        かりません orz

Twitter : titoi2
ブログ:http:/       /barsoom.seesaa.net/
本日のお題
「GAE/Goで限界に挑戦してみた」

GAEとは?
google app engine の略,googleの提供するクラ
ウドサービス
GAE/GOとは
GAE には,Python, Java, Go の三つの言語用
SDKが提供されている。
GAE/Go はもちろんGo言語のこと。

みなさんも大好きですよねGo言語。
GAE各言語比較
 言語       実行速度   ライブラリ   情報

Python     ×       ⃝     ⃝

 Java      ⃝       ◎     ◎

 Go        ◎       △     ×
一目瞭然

GAE は Go を選ぶ
しか無いですよね?
GAE/GOの事例
GAE/Goなんて実際に使われているのか?


僕が使ってます。
(ここでどや顔)
GAE/GOの事例
Android用の青空文庫ビューアを作成。
「A・文庫」https://play.google.com/store/apps/details?id=jp.aboutsoft.android.bunkoreader




青空文庫の書籍データベースをクラウドに構
築。
システム
    クラウド                         青空文庫サーバ
                     書籍データベース   データベースはほぼ毎日更新
書籍データベース             取得

    GAE/Go
                                作品ダウンロード

      作品検索



Android   Android   Android
端末        端末        端末
A・文庫      A・文庫      A・文庫
実際の検索画面
著者検索画面   書籍一覧画面
青空文庫とは
青空文庫とは著作権の切れた文学作品などを
電子化して公開しているインターネット図書
館。
現在,約1万2千作品ほど。

来年は吉川英治も公開される予定。
GAEの問題点
GAEは有料のクラウドサービス。ですが,あ
る程度まで無料で使える。

しかし,無料で使えるリソースが少なすぎ
る。
GAEの問題点

特に,データベースへの読み書き操作が一日
にそれぞれ5万回まで。
5万回も書けるやん?
書籍情報のレコード
type EntityBooks struct {
                                                      15カラムのレ
	    Id	   	    	     	     string // 作品ID
	
	
     Title	
          	
     Yomi	 	
                 	
                 	
                      	
                      	
                            string // 作品名
                            string // 作品名読み           コードが二千件
	    Subtitle	   	    	     string // 副題
	
	
     Subtitle_yomi	   	     string // 副題読み
     Type_characters_doing	string // 文字遣い種別           も書けませんで
	    Yomi_order		     	     string // ソート用読み
	
	
     Original_title	 	
     File_last_update	
                     	
                            string // 原題
                            string // テキストファイル最終更新日   した。orz
	    Text_encoding	   	     string // テキストファイル符号化方式
	    Text_character_set	    string // テキストファイル文字集合
	    File_url	   	    	     string // テキストファイルURL
	    Release_date	    	     string // 公開日
	    Author_id	 	     	     string // 著者ID
	    Author_name	     	     string // 著者名
}
あかんやん

一日に二千件しか書けなかった
ら,青空文庫の1万2千件登録
するだけで6日はかかる。
ちょっと調べてみた
・カラム数が多いせい?

・どうやらレコードのカラム数が多いと,操
作数の消費が増えるらしい。
そこで
無料の5万回で,どんなけ書ける
のか調べてみた。
調査方法
・カラム数が異なる数種類のレコードを用
意。

・GAE/Goの無料枠内で何レコード書けるか
調査。

・書けたレコード数とかかった時間を計測。
調査内容
・文字列カラム数が1,2,4,8個の4種類のレコード
を用意。

データサイズにも影響されるかも?
・ケース1:各文字列カラムに”あ” 1文字をセット
・ケース2:各文字列カラムに”あ” 500文字をセット

・実行はbackends のB2で行う。
調査結果
カラム数 文字列長 レコード 時間
  1    1   12742 (秒)
            数     547
  1   500  13124 555
  2    1    8638 393
  2   500   8515 398
  4    1    5199 232
  4   500   5082 237
  8    1    3218 131
  8   500   3107 132
結論
・カラム数が増えると,5万操作で書けるレ
コード数は減っていく。

・文字列の長さ1と500では差は無いよう
だ。
カラム数は減らそう
書籍情報のレコード
type EntityBooks struct {                             type EntityBooks struct {
	    Id	   	    	     	     string // 作品ID            	    Yomi_order		     	     string // ソート用読み
	    Title	
          	      	    	     string // 作品名             	    Info	 	    	    	      string // 書籍情報
	    Yomi	 	     	    	     string // 作品名読み           }
	    Subtitle	   	    	     string // 副題
	    Subtitle_yomi	   	     string // 副題読み
	
	
     Type_characters_doing	string // 文字遣い種別
     Yomi_order		     	     string // ソート用読み              二日で書き込めた
	    Original_title	 	      string // 原題


                                                          いえいι(`ロ´)ノ
	    File_last_update	
                     	      string // テキストファイル最終更新日
	    Text_encoding	   	     string // テキストファイル符号化方式
	    Text_character_set	    string // テキストファイル文字集合
	    File_url	   	    	     string // テキストファイルURL
	    Release_date	    	     string // 公開日
	    Author_id	 	     	     string // 著者ID
	    Author_name	     	     string // 著者名
}

Contenu connexe

En vedette

cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...Hidenori Takeshita
 
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12matsuo kenji
 
Chrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるChrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるMasakazu Muraoka
 
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)deris0126
 
Golang, make and robotics #gocon
Golang, make and robotics #goconGolang, make and robotics #gocon
Golang, make and robotics #goconHideyuki TAKEI
 
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会Satoshi Noda
 
マイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてマイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてsz yudppp
 
勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すためにAkihiko Horiuchi
 
ISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみたISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみたKen Gotoh
 
エンジニアと椅子
エンジニアと椅子エンジニアと椅子
エンジニアと椅子m1sogi
 
ちょっとだけさわってみる Go言語
ちょっとだけさわってみる Go言語ちょっとだけさわってみる Go言語
ちょっとだけさわってみる Go言語Satoshi Noda
 
Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Ato ARAKI
 
Gunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlGunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlInnami Satoshi
 

En vedette (20)

cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
 
Goを知る
Goを知るGoを知る
Goを知る
 
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12
 
らくちん Go言語
らくちん Go言語らくちん Go言語
らくちん Go言語
 
Chrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるChrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみる
 
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
 
Golang, make and robotics #gocon
Golang, make and robotics #goconGolang, make and robotics #gocon
Golang, make and robotics #gocon
 
Go+revel
Go+revelGo+revel
Go+revel
 
HighBatch
HighBatchHighBatch
HighBatch
 
Github第8章
Github第8章Github第8章
Github第8章
 
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
 
Dockerぐらし!
Dockerぐらし!Dockerぐらし!
Dockerぐらし!
 
マイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてマイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語について
 
勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために
 
ISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみたISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみた
 
エンジニアと椅子
エンジニアと椅子エンジニアと椅子
エンジニアと椅子
 
ちょっとだけさわってみる Go言語
ちょっとだけさわってみる Go言語ちょっとだけさわってみる Go言語
ちょっとだけさわってみる Go言語
 
Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28
 
Gunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlGunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http url
 
Go言語の紹介
Go言語の紹介Go言語の紹介
Go言語の紹介
 

オープンセミナー2012@香川 GAE/Goで限界に挑戦してみた

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n