Hatena::ブログ(Diary)

d.hatena.zeg.la このページをアンテナに追加 RSSフィード

2010-03-11

Google devfest 2010にいってきました

3/11のdevfest2010に参加しました

A会場にずっといました。

以下メモです

基調講演

及川さん

デモ

html5

    • HTML5/CSS3でWebをパワフルに
    • Chrome4の機能
      • WebFonts

Fontはローカルに入っているものを使う

ローカルではゴシックと明朝のみ(多くのプラットフォームに対応しようとすると)

サーバからダウンロードできたら...

Chrome4で実装

      • WebSockets

いままではCommetという技術を使っていた

ひとつのポートを張っただけで任意のタイミングデータを送信可能

石原さん

Google,User,Developerが一体となってEcosystemを作る

Google Code Archive - Long-term storage for Google Code Project Hosting.

たのしい Androidカスタム UIAndroid アプリにワクワク感を加えよう

自己紹介
インタラクションのキモeasingとは何か?
  • "ため"のあるアニメーションを実現する方法
  • UIの動きに特徴をあたえることで、楽しく使っている

Tweener Documentation and Language Reference

  • どの程度のeasingが妥当か
    • 自分自身が気持ちいいと感じるまで、微調整を繰り返す
easingをDialogに採り入れよう

Interpolator:アニメーションの程度を調整する変換関数

android.view.animation

<?xml/ version="1.0" encoding="utf-8">
  <resouces>
    <style name="Theme.CustomDialog" parent="andoird:style/Theme.Dialog">
      <item name="android:windowAnimationStyle">@style/Mydialog</item>
    </style>
  </resouces>
<?xml/ version="1.0" encoding="utf-8">
<set xmlns:android=" android:interpolator="@anim/anticipate">
<!-- ここ同じ -->
</set>
mDialog = new Dialog(this,R.style.xxxx)だけ
カラーコーディネートの効果
  • レイアウトした素材の徒手津間をなくし、ユーザに操作の余計な違和感を感じさせない
  • 目立たせたい部分を計画的に目立たせる

themes.xml

<?xml/ version="1.0" encoding="utf-8">
  <resouces>
    <style name="Theme.CustomDialog" parent="andoird:style/Theme.Dialog">
      <item name="android:windowAnimationStyle">@style/Mydialog</item>
      <item name="android:windowBackgroun">@drowable/xx_bg</item>
    </style>
  </resouces>

btn_image.xml

<?xml/ version="1.0" encoding="utf-8">
<selector>
  <item nadroid:state_pressed="true"..
  <item nadroid:state_forcused="true"..
</set>
mDialog = new Dialog(this,R.style.xxxx)だけ
easing付き横スクロール楽しい操作感

移動幅に応じてテンションの値を変更する

float tension = 1.2f - (0.1f*x);//xは移動量
Interpolator ip = new OvershootInterpolator(tension);
mScroller = new Scroller(context,ip);

移動幅に応じてアニメーション時間を変更する

  • 移動量大=アニメーション時間:長
  • 移動量小=アニメーション時間:短
int duration = (1+Math.log(x))*350;//xは移動量
mScroller.startScroll(mScrollX,mScrollY,dx,dy,duration);

HorizontalScrollViewのsmoothScrollByの第3引数durationを設定できるように

MyHorizontalScrollViewを作る

OSSならでわ

質問

やさしい Android -- ユーザフレンドリかつデベロッパーフレンドリーな Android アプリケーション開発手法

自己紹介
ユーザにとって"やさしい"とは
developerにとって"やさしい"とは
互換性を保つ
Android Market
公開SDKで規定されたAPIを使う
  • SDKにないAPIのしようは非推奨
    • 公開SDKにない"public"メソッドは非公開->非推奨
    • そもそも、デバイス上に存座いしないかもしれない
APIバージョン管理しましょう
  • minSDKVersion -> 3(1.5)
  • targetSDKVersion ->4(1.6)

<uses-sdk android:minSdkVersion="3" android:targetSDKVersion="4"/>

複数解像度

<support-screens>

XMLでレイアウトを記述する
  • Android側が自動的にサイズ決定してくれる
  • RelativeLayout
    • View間の位置関係をレイアウトを指定できる
  • AbsoluteLayoutは危険
    • pxで指定してしまうとAndroidが検知できない場合がある
国際化対応
String tulip = "u1F340";
//文字の上に何かをかぶせる
SpannableStringBuilder ssBuilder = new SpannableSringBuilder();
ssBuilder.append(tulip);
Drawable drawlabe = getResources().etDrawable(R.drawalbe.tulip)
drawable.setBound(0,0,100,100);
ssBuilder.setSpan( new ImageSpan(drawable),0,ssBuilder.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(ssBuilder);
バグを未然に防ぐ:ユニットテスト
  • Classを作るときにJUnitTestCase
バグを未然に防ぐ:ロギング
  • logcat
バグに見える挙動を減らす
  • 次にして欲しいことを表示
    • 例:メニューを押してください
  • フィードバックをもらう
    • アプリを説明せずに使ってもらう
  • 操作方法に気づくまで、何十秒もかかる
    • UIが不親切

Mobile Mapping

レイテンシとは
  • ページロードにかかる時間
  • 画面の変化に気づく時間
ブラウザベースのMapsの利点
NativeAPIを使う利点
使いどころ
Static Maps API
Native API(iPhone)
Native API(Android)
ブラウザベース
Hybrid Native +ブラウザ(ベストな選択)
Google Map API V3
改良点

V2:bootstrap->main.js ->set_center -> tiles

9s 18s

V3:bootstrap->main.js ->set_center -> tiles

2s 7s

デモ

native APIでGeoLocationを得て

WebViewでGoogle MAP V3つかうAndroidコード

404 Not Found

プログラミング言語Go

Go言語とは
hello world

gofmtでGOの標準フォーマット

Code Example

i := 0

var i int = 0

と等しい

func enc(s string) string {

r := kk

}

  • 多値の return ができる
  • if の条件式に複数指定できる
goルーチン

File websocket - The Go Programming Language

作ってみた

まとめ
質問
  • コンパイル速度が速い理由
  • 実行速度が速い理由
    • いらない機能を省いている
      • Exceptionがない

GoogleWave

概要
新しい
操作変換
  • 自分の操作と他人の操作をそのまま反映すると衝突がおこってしまう場合にその操作を変換することで

衝突を避ける

GoogleWaveの拡張
Wave Gadget
同期処理
Wave Robot
ビデオチャット

Pamela Fox(@pamelafox)さん | Twitter

と言う人に質問タイム

Google Moderator has gone away - Search Help

に一覧がある

Advanced Google Chrome Extensions with HTML5

資料

Advanced Google Chrome Extensions with HTML5 - Google スライド

Do Task Queues Dream of MapRedule?

自己紹介

#devfest_jp 「Task QueueはMapReduceの夢を見るか?」の資料です - スティルハウスの書庫

TaskQueueとは

Error 404 (Not Found)!!1

Queue queue = QueueFactory.getDefaultQueue();
queue.add(url(xxx)...)

GAE管理コンソール上でQueueが確認できる

使い道
気を付ける点
デモ

参考

Google App Engine for Javaを使ってみよう! (9)XMPP Java API (1/4):CodeZine(コードジン)

Appサーバを増やすには
  • 初期は2instance
  • 負荷がかかってくるとinstanceが自動的に増える
    • 数分かかる
    • spin upという処理がかかってしまい 立ち上げが間に合わなかったら(10秒) Aboted
  • 30req/sが上限
    • googleに個別相談すればリミットを外してくれる

参考

Error 404 (Not Found)!!1

まとめ
memcachedとMemcache

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証