Weddinghttp://www.officialroyalwedding2011.org/去年4週間で作ったイベントのサイトなので、終わったらピークは過ぎたけど、今でもほそぼそとやっている。Home震災のあと、1ヶ月で立ち上げた世界中から日本に対してのメッセージを投稿する。世界中の言語で書き込みされて、日本語で見ることが出来る。Automation既存のシステムとの連携をやった事例GoogleAppsをベースにして、ワークフローのアプリケーションを作った。GoogleAppsをベースにして、拡張をした。既存システムとも連携する。SharePointとか、SqlServerとか。4半期に一度しかアップデート出来なかった。バッチ処理だったから?Webサービスとして連携する。スケーラビリティと信頼性、スケジュール実行。結果、日次で出来る、インフラコスト、運用管理費の削減が出来るようになった。(UNIQLO)売上金の一部を子供の為に使おうのプロジェクト。ソーシャルなアプリで世界中の人が書き込みします。APIでなんとなくわかるようになっています。総選挙ピーク時に24000qpsくらい。サイトはダウンしていない。GoogleAppEngineの特性を生かしているApplibot後ほどStreakAppsを拡張したものです。Platform盛りだくさんでやっている。Platformこちらを参考にしていただいてよろしくお願いします。株式会社アプリボットソーシャルゲームとか1日1億リクエストをAppEngineでさばいているクラウドストレージにバックアップを突っ込んだりとかしている。Hosting大きいアプリの話です190MBのでかいアプリケーション。DeadlineExceededException1リクエストが60秒かかると発生する。スピンアップで発生することがある。発生する、サーバが死ぬので、再起動とかなる。スピンアップで発生すると無限ループ状態になってしまう。インスタンスでも発生する。Springは重厚なので、良くない。Slim3にすれば、あまり起きなくなった。Googleさんに色々対応してもらった。DataStoreの件数処理ゲームのランキング処理。KeyFetchが件数に比例して時間がかかる。想定数を考えないとダメです。ShardCounterとかする。裏で順番にナンバリングする。MemCacheをカウンターにすればいいかなぁ〜とか言うところがあります。ランキングはゲームでのキモなので、いいかも。Skiplists20100604Index遅延プット直後は、Queryに引っかからないことがある。デプロイ問題10000ファイル制限カードゲームのデータ。1枚のカードでも表示場所などによって数種類の画像ファイルがある。今では、CloudFrontに置いている。EdgeCachingも考慮してみましょう。JSPJSPもコンパイルすると、Javaとクラスファイルになるので、増えてしまう。Slim3リクエスト毎にControllerを作っていたある程度をまとめるようにする。デプロイJSPのコンパイルは1ファイル1秒かかってしまう。デプロイするのに2500ファイルだと40分かかってしまう。ビルド失敗アップロードのシェルのメモリを増やした。AppEngineのアクセスログすぐに流れてしまうmacheを試しました。溢れることがあるらしい。違うバージョンのログを取ってくる。CloudStorage経由でBigQueryで解析する。クラッシュログを解析する。ユーザをキーにすれば、どういう経路で発生したのかがわかる。解析用のインフラとか人員を配置しなくても良くなる。今は、エンジニアしか使っていないけど、マイニングチームにも使ってもらいたい。Googleでも、エンジニアだけではなく、アナリストとかも使っている。解決までの道のりエンタープライズサポートに入ろう英語だけど、日本語もOKです。タイトルとサマリーは英語、細かいニュアンスは日本語で。今時ははスマホだったり、HTML5バリバリであるのが主流になっている。前はフロントエンドにFlexを使って作ってたりする。なると、クライアントでロジックを書く。サーバサイドの処理は単純になる。データ出し入れとか、認証とか。Backbone.jsとか、Anguler.jsとかはクライアントMVCを使う。サーバ側はRESTなAPIを提供する。するの?RESTにする。RPCでどうにかする。これを0から自分で書くの?Slim3などでも出来るけどね。サーバサイドで実装しなければいけない、認証とか、ルーティングとか。JSONの設計とかを自分でやる、毎回。結局同じような仕組みになる結局は、RPCが出来れば良い。foo.save(blogpost)って出来れば、登録されていてくれればいいだけなのにね。今時はこれさえあればいいよね。Endpointsアプリ専用のAPIの提供とRPCの実装です。すごく簡単に作ることが出来る。POJOにアノテーションを書けば良い。呼び出すためのクライアントライブラリを自動的に作ってくれる。Android、iOS、JavaScriptで作ってくれる。今時は、この3つをサポートしなければならない。プラットフォームごとに作る必要はないね。ユーザ認証の決定打はなかった。Androidアプリの認証。WebViewでのURL。Intentで投げてブラウザで認証してもらって、アプリに戻る。OAuthを推奨しているよEndpointsであれば、Googleアカウントで認証する場合、認証のコードを描く必要はない出来ること各端末プラットフォームごとのライブラリを生成出来る。オレオレAPIを呼び出すためのライブラリサーバ側では、POJOのクラスを書いて、アノテーションを設定するOAuth2もサポートされている。OAuthの知識は要らない。IOのスライドなど参照。Eclipseで出来ます。SDKだけで、コマンドラインからも出来るはずです。ConsoleAndroidプロジェクトを作る。作らないといけないわけではないよ。Androidを先に作っておくと便利。ビジネスロジックを書いていく。アノテーションをつけて、APIのパラメータとする戻り値はJavaBeans。Stringとかは今のところダメ。Objectを作らないといけない。右クリックプロパティからクライアントライブラリを作成するこれで、各プラットフォームのAPIが作成されます。先に、Androidプロジェクトを作っておくと、自動的に、Androidプロジェクトの方に吐き出され、すぐ使える。あとは、Android側でクライアント側のコードを書く。サーバ側をデプロイする。Exploerでテストする。Explorer自分で定義したAPIをテストすることが出来る。IOのものが上がってるので、それを見てね。IOでは、3つくらいセッションが上がりました。Endpointsなどでググると情報がありますよ。ajn22のBTで発表してきましたPDF検索サービスVPS上で動いている。キャッシュとして使っている表側にAppEngine特許関連の全ての情報のPDFが乗っているCloudStorage。それを検索するために、AppEngineにインデックス情報を持つ。検索するための本文の情報とキーになる情報や、PDFのリンク。検索した結果を次の人に渡すようなワークフローがある。情報を追加して、次の人に仕事を渡します。リアルタイムに通知するために、WebSocketを利用いしてる。キャッシュは通信を安くするためにやっている速度を求めているわけではないサーバ通信費コストの削減とハイパフォーマンス、安全性。全部VPSに出来ない理由クラウドストレージのような安全性。なんだかんだ、AppEngineは安全である。VPSに暗号化して置いても、インターネット上にさらしておくのは・・・。個人情報を暗号化している。Storage早くて信頼性高い、そして無限。GoogleDriveと比較すると、ものすごく早い。登録に数ヶ月かかってしまっていた。CloudStorageでは1ヶ月ですんだ。Drive側で、速度制限があると思われる2つの技術要素についてReflexWorksAppEngineはCPU使うのは苦手AppEngineはデータを格納して、クライアントで見せる。仮想フォルダ管理をしていて、URLが階層構造である。これに対して、RESTのAPIを付けている。仮想フォルダに対して、アクセス制限をつけることが出来る。更新された場合には、リアルタイムに通信して通知している。接続情報をセッションで管理している。フォルダ共通でかつ、ログイン中の人のみに通知する。Open、Message、CloseWebSocketのOpen時に認証もするようにしている。ウィルス対策ソフトに切断されるケースがある時々ポーリングするようにしている。HTTPSだと大丈夫かも知れない。本当はPollingしない方が良い。WebSocketだと負荷が少ないけど、Pollingは。基本的には、ステートレスに近い感じに実装するサーバが動いていなくても、動くように実装するOAuth2アクセストークンには、有効期限があって、リフレッシュトークンで再度取得する。1つのアクセストークンで、全てのAPIが利用出来る。approval_prompt設定で認可画面をスキップさせないようにする。Architectureサーバサイドのテンプレ技術は使わない。70%の負荷を低減できる・・・らしい。種類ブラウザメーラーWEBアプリネイティブアプリなどなど。RSSリーダーのイメージは?ほったらかすと、未読がすごい。配信元の人がカテゴリ分けしているけど、読者としてはちょっと違うのではないかと。よくないので、作ってみた。配信元がカテゴリ分けしているけど、ミスマッチだったりするよね。携帯電話には、スマートフォンとフィーチャーフォンがあるAさんにとっては、どちらも携帯電話Bさんにとっては、スマートフォンにだけ関心があるCさんにとっては、スマートフォンでも特にAndroidだけ関心があるDさんにとっては、友達が居ないので電話に興味がない記事の分類iPhoneとAndroidとかをタグ付けする。これを手作業でするのは馬鹿らしいので、機械学習させる。最初は、勉強させるために振り分ける。機械学習についてベイジアンフィルタニューラルネットワーク決定木学習ベイジアンフィルタ学習データが多いほど良い、誤りはユーザが教育(手動で)する必要がある。教育コストは反比例的になる。スパムフィルタなどで利用されている。分類型の場合の学習は、成功しない場合を想定しないといけない。人工ニューラルネットワーク人間の脳や神経の仕組みをシミュレートする学習データ量が小さくして保存しやすい反面、出力から入力をたどることが出来ないので、デバッグしにくい。何が何だか分からない。Statsスタンフォード大学のオンライン授業わからなくなったら人や生物をよく観察する観察して、そこから盗んでいきましょう。植物の育成を観察して、遺伝的アルゴリズム。いう事をすると、生き残るのか、どうすると生き残れないのか。はてなブログProフリーでプロのグラマーしています。パターン別構築・運用ガイドを読みました。夫婦で人間ドックに行ってきたLifeLogをシェアしてみた。フットボールライフ・ログサービススターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。