サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
shin1o.blogspot.com
Google Pickerっていう、Google Docs(Google Drive)を前提としたPickerがめちゃ便利な事に気づいていませんでした。ずっと GWT 専用のコンポーネントなんだと勘違いしていたという。Pickerですが、基本的にはリソースのURLが返されます。Docsネイティブなリソースの場合にはそのアイコンやらも取得できます。 こんなカンジでDocs内の文書を選択させたり。
今年になって Google App Engineに Full-text Search(以下FTS)という機能が追加されています。全文検索機能の事で、日本語にも対応しています。リリース前に私も appengine ja night 20 で紹介をしました。その時にも「日本語検索はおまけ、それ以外の機能が強力」という話をしたのですが、それについて少し具体例を交えて説明をしようと思います。 ログインユーザごとのアクセス権限を参照する処理 RDBでは簡単でも、データストアで苦戦することまちがいなしの要件として、次のような要件がよく出てきます。 企業向けアプリケーション等で、リソースへのアクセス制御をしたい リソースに対するアクセス許可リスト(ACL)として、ユーザIDだったり、ユーザを束ねたグループIDだったりを定義する ログインユーザに対して、リソースの一覧を提供する。もちろん、アクセスできるも
最近ようやくcoffeescriptにもLESSにも慣れてきました。で、そろそろgruntを活用しようかなと先月くらいから使ってみてますが便利です。 *.less →(コンパイル)→ style.css →(圧縮)→ style.min.css *.coffee →(コンパイル)→ *.js →(連結)→ app.js →(圧縮)→ app.min.js *-test.coffee →(コンパイル)→ *-test.js →(連結)→ tests.js app.min.js, tests.jsを読み込んでqunitでテスト index.htmlではapp.min.jsとstyle.min.cssを読み込む こんなかんじの事を簡単にできます。テストもcoffeescriptで書けて良いです。 現在リリースされている grunt v0.3.9 では coffee, less, sqwishに対
Google API Expertが解説する Google App Engine for Java実践ガイド が発売されます 書きました。3/16(金)に発売されます。Javaの経験が無いと厳しいです。。Javaの経験があり、Google App Engine/Javaに興味がある人、実際に現場で使っている・使う予定がある人の役に立つと思いますので、興味があればポチってみてください。 目次は次のようになっています。 第1章 イントロダクション第2章 JUnitによるテスト第3章 各機能の使い方第4章 アプリケーションの設計の注意点第5章 課金額の節約第6章 提供されるツールの使い方 1章ではHello worldレベルのサンプルを実施し、2章では1章で使ったサンプルを作り直しながらGoogle App Engine/Javaの環境での自動テストの能力と、IDEの能力を引き出す方法を説明し、
年末に @aqubi と CoCAFE というアプリケーションをリリースしました。喫茶店のWiFi状況やらなんやらを共有するiPhone用のアプリケーションです(Android版も作ってます)。 このアプリケーションでは Google Places APIとGoogle App Engineを使っていて、Google App Engine側では以下のような工夫をしてます。 Datastore(HRD) 地図のZoomに合わせた範囲検索をEqualityフィルタで実現するため、店の位置情報はGeoHashの先頭4文字,先頭5文字,先頭6文字,先頭7文字...とリストプロパティに保持→前方一致検索を使わずに済むので、別の条件で同時にInequeality Filterを使うこともできる。 利用ユーザ等の統計をとるためのアクセスログ的なデータは、必要な情報を全てKeyに詰め込んでいる→ Data
昨年末から何度か「Slim3でCross Group Transaction(所謂XG)をUnit Testで使う時どうするの」的な話を見かけつつ、反応できていなかったので書いておきます。 まず「UnitTest環境でHRDを有効にする」「(Slim3で)XGを使う」のふたつに分けて考える必要があります。 UnitTest環境でHRDを有効にする Slim3は1.0.15くらいからGoogle App Engine SDKが提供するUnitTestの仕組みを併用できるようになっています。mavenを使っている方は、最新のslim3-archetype-pluginを使ってプロジェクトを生成した場合にappengine-testing等のモジュールが依存に追加されている事に気づいた人もおられるんじゃないでしょうか。 Slim3のAppEngineTestCaseを継承したテストクラスの場合は
Google+ Hangouts API - Google+ Platform — Google Developers Writing Hangout Apps - Google+ Platform — Google Developers Running Hangout Apps - Google+ Platform — Google Developers Hangouts API Reference - Google+ Platform — Google Developers Gadgetとして作成するようで、Hangouts画面にアプリケーションが埋め込まれる、といった形で実行されます。 手っ取り早い試し方 Google API ConsoleでGoogle+ Hangouts APIをONにする API Consoleの左側のメニューにあるHangoutsをクリックすると、Gadge
Getting Started on the Google+ API - Google+ Platform Blog この記事のタイトルを見て喜んだ人もたくさんいるんじゃないでしょか?承認はOAuth2だし! しかし残念。まだDiscovery APIにも対応しておらず、そのためかAPI Explorer上でも使えません。Buzz APIでいうscope:publicしか対応しておらず、consumption/comments/likedが使えません。がっかり。Buzz APIでのscopeはcollectionというパラメタに変わるようです。さらに、likedはplusedとなるのかもしれませんね。まぁ細かいことはどうでもいいです。 プロフィール情報の取得 アクティビティ(投稿)のリストの取得 アクティビティ(投稿)の取得 たったこれだけしかできません。アクティビティのリストも「公開」の
新料金体系について公開されている情報 2011-05-12: Google App Engine - ついに Preview 卒業です - Google Japan Developer Relations Blog 2011-07-06: App Engine の料金体系変更に関する FAQ - Google Japan Developer Relations Blog 2011-09-02: App Engine アプリケーションのリソースを管理する方法 - Kay's daddy 2011-09-07: App Engine のリソース管理 - TaskQueue の設定 - Kay's daddy 2011-09-09: Google App Engine Blog: A few adjustments to App Engine’s upcoming pricing changes
昨日一日感想をメモしながら使っていたのでそれらのまとめ。 まず最初に大雑把な感想を書くと、Buzzをわかりやすく使いやすくして、Google Alert, Latitude(Places API ?)のチェックイン、+1, Picasa, Profiles, Google Talk+ビデオチャット等の各種Google Serviceを(かなりわかりやすく)統合したダッシュボードといった印象を受けました。 メモ 投稿に関しては基本的にBuzzと同じ ただしBuzzにある外部サイトからのFeed取り込み機能はまだない APIもない 公開範囲を制限するサークルに関してもBuzzと同じだけど、Buzzの頃のわかりにくさが消え去った サークルはあくまでも自分から見た共有範囲であって、他人と公開範囲を共有できるFacebookのグループとはちょっと違う Sparksは今のところGoogle Alert
5/10, 5/11に開催されたGoogle I/Oに初参加してきました。Google App Engineについては1.5.0のプレスリリースが事前にあったり、それを含んだappengine ja night 15が開催されたりしていたためインパクトは小さかったですが、golang他いくつかビックリの話も出ていました。個人的にはGoogle Appsの方がアツかったなー、という印象です。現地では、I/Oに生で参加できたという点よりも、超絶優秀なGoogle API Expert達と一緒に参加・行動できた、というオプションが一番すごい事だったかもw API Expertのみなさんお世話になりました。部屋をシェアしてた @IanMLewis と @atusi さんは特にありがとうございました。 帰ってきてからは情報を整理したり、手を動かして試したいものは試したり、色々と作業がてんこもりで大変
5/6(金)にappengine ja night #15が開催されました。人数は数えてませんが今回も女性参加者率が悲しい結果になり、むさい空気の中開催されました。 今回も@drillbitsさんがtogetterにまとめてくれています、ありがとうございます。 AppEngine テスト駆動開発 AppEngine/Pythonでの自動テスト事情の説明でした。まだ全然触っていないけど個人的には1.4.3からPython SDKに導入されたTestbedについておおよそ仕組みがわかってよかったです。Testbedはsetup等で細かく制御できそうなのはメリットでもありデメリットであるかもしれませんね。 でも、結局はアプリ用のF/Wと一緒になっている方が良いので、@tagomorisさんが作ったF/Wをベースにしたテスト支援機能を持つKay-frameworkがヨサゲなんだろな、と。 Gig
2011-03-11にあったMacOS Xのアップデート実施すると、ローカルで開発サーバが起動できなくなる問題が出るようです。現象としては、開発サーバ(eclipseから起動しても、結局はSDK内のdev_appserverが起動されます)を起動した後、数秒で開発サーバが終了してしまう、という現象です。私が試したときはたまーに少しだけ動作してから落ちる、という場合もありました。下記でも報告されていますし、対策も説明されています。 Issue 4712 - googleappengine - Java for Mac OS X Update Breaks dev_appserver - Project Hosting on Google Code対策を簡潔に説明しておきますhttp://openjdk-osx-build.googlecode.com/files/OpenJDK-1.7-x8
@atusi さん主催のGoogle Apps Script勉強会#2 に参加しました。 第一回の時とは違い、半分くらいの人が「Google Apps Scriptを触ったことがある!」という状態でビックリです。日本でそんなにGASを触っている人がいるなんて…。 発表資料など @webos_goodiesさんがAWSのROUTE53とSpreadsheetの連携アプリの紹介を、@atusiさんがGASの概要の説明をされました。 @webos_goodiesさん - GASでアプリ作ってみた@atusiさん - Google Apps Script #2 ハカソン 今回はハッカソン主体だったので、自分も何か作ろうと作業しました。お題は「会社の勤怠シートの入力を補助するツール」です。私は勤怠シートを月末にまとめて記入するずぼらなタイプで、毎月入力が面倒です。そこで、下記の機能を持ったスクリプト
先日、slim3-1.0.6がリリースされました。たくさん機能追加がありますが、最近の自分的に嬉しい機能のひとつにController内でInputStreamが使えるissue62への対応があります。 Support for Controller#createRequestHandler(): http://code.google.com/p/slim3/issues/detail?id=62 この機能を使用する際のテストケースの書き方の例を書いておこうと思います。あと、ついでにMetaクラスにJson->Model、Model->Jsonを行うユーティリティメソッドが追加されているのでそれも使っています。@takawitterさんの仕事です、ありがとうございます、便利です。 まずはController Httpメソッドとリクエストパラメータによって追加・修正・削除と1件返却、リスト返却
最近closure-libraryの勉強をしているんだけど、WebStormでキレイに補完をしたりする設定方法のメモ。 closure-libraryというよりはWebStormの話だけど、WebStormって全プロジェクトで参照できる共通ライブラリって登録できないのかな?方法を知っている人がいれば教えてください。 以下のようなフォルダ構成を想定。 プロジェクトのルートフォルダ closure-library(ここがclosure-libraryのroot) closure googbincss src(ここに自分のjsとかcssを配置) WebStormで上記のプロジェクトのルートフォルダをOpen DirectoryPreferncesをひらいてProject SettingsセクションのDirectoriesを選択一番右側の領域でproject/closure-library/clo
最近Titaniumを使い始めたんだけど、コード補完するための*.jsがどこにあるのかよくわからなかった。いろいろ調べていると、 http://developer.appcelerator.com/apidoc/mobile/1.4/api.jsonで公式のTitanium.*の定義情報が配布されている 上記のapi.jsonを読んでJavaScriptの定義ファイルを出力してくれるモジュール(JavaScript)がhttps://github.com/netpro2k/TiAutocompleteで配布されている という事がわかった。自分の場合は以下のようにしました。 $ git clone git://github.com/appcelerator/titanium_mobile.git $ wget http://developer.appcelerator.com/apidoc/
AppEngine/Javaで、開発サーバで実行するときのテストデータの初期状態を作っておきたい時、私はよくAppEngine SDKのLocalServiceTestHelperを使ってテスト環境を作成してデータ投入し、そこで作成したファイル(local_db.bin)をwar/WEB-INF/appengine-generatedフォルダにコピーしていました。これと同じことをSlim3のAppEngineTesterを使ってできないかなー?と思って試してみました。 Slim3のAppEngineTester#tearDown()はテスト中に投入されたデータは全部消してしまう(それが便利なわけですが)仕様です。これはtearDown()をオーバーライドして削除処理をしないようにすれば回避できます。 それだけだと良いんですが、環境終了時にApiProxyLocalImpl#stop()を呼
appengineのfederatedLoginの機能を使ったアプリケーションの場合、開発環境のログイン機能ではcom.google.appengine.api.users.UserからfederatedIdentityの値などが取得できずに不便です。実行時のUserService#isLoggedIn(), UserService#isAdmin(), UserService#getAuthDomain()等はApiProxy.Environmentを自身の実装に置き換えるだけだったので簡単でしたが、federatedLoginの場合はこれらの値を触るだけでは不十分です。 ではいつものようにApiProxy#setDelegate(ApiProxy.Delegte)でいじってやるか!というワケにもいきません。UserService#getCurrentUser()等はRPCされないためで
Google App Engineのデータストアに特化した内容の書籍(Slim3本)を執筆し、本日刊行されました。 Seasarで有名なひがやすをさんが作っている Slim3 の書籍で、ひがさん本人から執筆の機会を頂くことができたのがきっかけです。色々とあって執筆する時間が取れないから書いてみない?というおはなしで、しかも方針は「データストアだけに特化した書籍にしたい」というお話だったので驚きました。私はSlim3のテストサポート機能がとても気に入っているので、Controller周りとそのテストとか、どさくさに紛れてLowerな話も含めたりとか考えたのですが、書き上げてみて納得しました。データストア以外はそんなに深いハマリも無いし、他にも書籍がありますし、データストアだけに特化するというのも集中した内容になってよかったと思っています。 右にAmazonへのリンクを貼ってみましたが、表紙画
ちょっと前に BuzzでFirehoseが使えるようになりました。 Activity firehose - Developer's Guide (v1): Using REST - Google Buzz API - Google Code Working with real-time updates - Developer's Guide (v1): Using REST - Google Buzz API - Google Code 今の空うさぎでは、FriendFeedはリアルタイム(FriendsがPostした瞬間にクライアントに通知される)になっていますし、TwitterもUserStreamを使うことでFirendFeed同様にリアルタイムになっています(Twitter側の制限のために、リリース版ではTwitterのリアルタイムはオフになってますが)。さらに開発版ではGoogl
6/4(金)に appengine ja night #8が開催されました。今回の目玉は以下でした。 @najeiraさんトコで構築されたスポーツSNS Labolaの事例紹介ajn7の時のランキング問題をやっつけるために京都より@koherさんがskip list片手に参加北海道より@shuji_w6eさんが参加名古屋より@zetta1985さんが参加skip listと聞いて(ガタッ、ってかんじで大阪より@kibayos先生が参戦本当は@kazunori_279さんのIO2010報告もあるはずだったのですが、上記の通り盛りだくさんでしたし、発表は必ず時間通りに終わらないajnの伝統が継承されてIO2010報告は次回持越しとなりました。 また、今回は以前と比べて女子率が3倍ほどにアップしました!…新規参加者と言うより、リピーターの方のお情け(同僚の方を連行してきてくださった模様w)という
4/23(金)にappengine ja night #7が開催されました。ATNDを見るとshin1ogawa ja nightとか書かれていてこっぱずかしいような嬉しいような…。今回の目玉は以下でした。 ライブコーディングを使って、appengine/javaがいかにテストしやすいか?をお伝えする事前にGoogle Moderatorで議題・質問を募集し、それをネタに会場で議論するイベント開催中は京都のサテライト会場とつなぎ、双方向のやりとりもする@kazunori_279さんがUstしつつ録画してくださっています。 shin1ogawaのライブコーディングQA大会BeerTalk appengineアプリケーションの自動テスト -最新java sdk版-一番伝えたかったことは、通常のWebアプリケーションと比較して、AppEngineアプリケーションはとてもテストがやりやすいという事
最近Apps MarketplaceというプラットフォームがGoogleから公開されました。B|CtoB なアプリケーションを登録できるプラットフォームです。アプリケーションの登録・公開方法については@ITさんに記事がありますので、そちらを参考にして下さい。今はまだ開発ベンダ向けのGoogleによる課金のサービスが提供されていませんが、これが開始される時までにそれなりにMarketplace向けのアプリの構築に慣れておきたいものです。私の場合は、モチロン AppEngine を使うことにします。 Google Apps Marketplace企業向けアプリ出店入門(1/2) ─ @IT 注意が必要な点として、登録できるアプリケーションには2種類あるって事です。アプリケーションの登録時に「directly installed into Google Apps domains」という選択肢をオ
capabilityサービスを使用すること自体は、今回作ったモジュール(ProtocolBufferの定義、それを使用するサンプル)をそのままコピーするなどして使えば簡単にできます。このエントリは、普段JavaでAppEngineを使う人も、Pythonコードを読むと色々役に立つよ、というような内容になってますので、そのあたりに興味が無い人は読んでもあんまり面白くないと思います。Java, Pythonの関係だとその逆も言えるんですけどね。AppEngineは今のところJavaとPythonがありますが、どちらかだけじゃなくて両方触っておくのが一番です。AppEngineJavaを深く触っている人にはSDKのpythonコードもよく参照している人が多いです。 本題App Engineのサービスがメンテナンスモードの時に、例えばデータストアが読み込み専用になったりします。この時、データストア
ひがさんの発言で「slim3:1100cpu_ms servlet:720cpu_ms 」ってのがあって、自分のアプリではslim3は大体700-1100cpu_msだったから気になって調べた。 同じApplicationIDで、それぞれ違うバージョンにデプロイし、クライアントから3分おきにcurlしてみた。結果、どちらもspinupは11回、しかも同じタイミングで発生。バージョンが異なれば違うアプリケーションとして動作するけど、同じタイミングでspinupしてるのは偶然…?それは置いといて、肝心のspinup平均はslim3が960cpu_ms, 素Javaが694cpu_msとなった。なんか遅いよな?とか思ったけど、700ms程度で起動しているアプリも今は900ms程度に落ち着いていた。というわけで、slim3と素Javaのspinup時間差はおよそ250-300cpu_ms程度と見れ
2/20(土)に クラウドで変わるJava開発 – Java Cloud Meeting Fukuoka 2010 というイベントがSeasarFoundationより開催されました。 今回はGoogle App Engine Javaがメイン、という事でスピーカーとして声をかけていただけたのでスピーカーとして参加してきました。 私は「Google App Engine Java プラットーフォームの勘所」と言うことで、「プラットフォームの説明」「各サービス(機能)の説明」、サービスに付いてはDatastoreサービスを重点的に説明するという事を目的にしました。さらに、Datastoreサービスでは「そろそろJDOを公にDISっても言い時期かな」という判断で、思いっ切りDISる事にしました。今まで勉強会などで発表をするときは、できるだけ「LLAPI, JDO, Slim3」どれを選ぶかは好
2/12(金)にappengine ja night #5が開催されました。今回の目玉は以下のみっつ。 Google App Engine Expretの@tmatsuoさんの「AppEngineのアンチパターン」 @higayasuoさんの「Slim3のGlobal Transaction」 slim3のドキュメントを日本語訳した@bufferingsさんが京都から参加 途中でスピーカーの方から参加者の皆さんにいくつか質問があって判明した参加者の傾向として、pythonユーザ→2割、appengien ja nightリピーター(ajn4にも参加した方)→8割、という事だった。pythonユーザの方の割合がもっと増えるといいな、という事と、リピーターが思ったより多くて嬉しいなぁ、という感想。あまりappengine慣れしていない方にはサッパリ面白くないんじゃないかな、という内容もかなり多
SDK1.2.8-prereleaseの頃にmakeAsyncCall()の導入に気づいて思いついた、クエリを複数に分けて非同期実行して結果をマージすることで、条件をOR結合するのと同じ事ができる!非同期ならそこそこ速いんじゃね?というアイデアの検証がようやく完了しました。 テストデータと仕様1-1000までのIDを持つキーを作成し、そのキーのIDの数値が2で割り切れるならmod2という属性の値がtrue、割り切れないならfalseというカンジでmod3,mod5とか用意した。で、クエリは「2または3または5で割り切れる」というものを抽出するという簡単なもの。条件的にはmod2 EQUAL true OR mod3 EQUAL true OR mod5 EQUAL trueとなり、分けるとmod2 EQUAL true、mod3 EQUAL true、mod5 EQUAL trueの3本を
次のページ
このページを最初にブックマークしてみませんか?
『404 shin1のつぶやき ないわー Not Found』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く