2011年 02月 21日

Android でウェブ側からアプリケーションを起動したいときのベストプラクティス

ウェブ側からリンクを貼って特定のアプリを起動させる場合、独自スキームを使うというのは自然な流れでまぁ普通そうしたい感じですが、対象アプリが入っているか否かをウェブ側から取得することができないため (できるの?)、アプリが入ってないユーザさんに対してブラウザのそっけないエラー画面になってしまうのであまり好ましくありません (アプリが入っていることがほぼ確実ならこれでいいけど)

現状でこの方法は簡単には解決できなくて、おそらく現状のベストプラクティス的には http を併用するのかと思っています。

  • fooscheme:openapp をアプリケーションでハンドリング
    • 確実にアプリが入ってることが判定できる場合に使う?
      • 普通にインテント使えばいいので、たぶんあんまり使うケースない……
    • スキーム無闇に増やすと怒られる
  • http://mydomain/openapp をアプリケーションでハンドリング
    • ウェブからアプリを起動したいときに使う
    • URLには「アプリケーションをインストールする」ページを作っておく
    • このURLにアクセスすると Browser とアプリ2つ表示されてしまうので、デフォルトでアプリを開くようにユーザを促す
        <activity android:name=".PostEntryActivity"
                  android:label="@string/app_name"
                  android:screenOrientation="portrait" android:configChanges="orientation">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.ALTERNATIVE" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="fooapp" android:host="open"/>
                <data android:scheme="http" android:host="fooapp.example.com" android:pathPattern="/openapp"/>
            </intent-filter>
        </activity>

とはいえ、この方法モノリスでやるときにとろうとしたんですけど、何かがうまくいかなかった気がするので本当にこれでいけるか不安です。(今試した感じ想像通りに動いたので、うまくいかなかったのは当時の勘違いだったかもしれない。あるいは Android1.6 だとブラウザ内の http:// に関しては確実に Browser が制御を奪ってしまっていたような気がする)

2011年 02月 20日

gerry++

2011年 02月 19日

やる気のリハビリというの頑張ってやろうとしてもすぐ無駄にされるので、やる気なくなる悪いループにハマってる。

やる気のリハビリというの、どういうことかというと、大きなものを作ろうとすると大きなやる気が必要になるけど、それだけのやる気がないとき、小さなものを小さなやる気で作ってフィードバックを得て、小さいやる気をちょっとずつ増幅させていくということです。

これ、継続的に減衰させるような要素があると (例えば不安・不信とか) 全然次の段階に進まないし、永遠に小さいものを小さなやる気でつくるしかなくなる。あるいはやる気ってのは外敵に著しく弱いので、何かしらの刺激でゼロに戻ると、また最初から、つまり小さなものを作ることからやりなおしになる。

一旦育ててそれなりに大きいものを作れて、フィードバックを適切にうけられれば、さらに大きいものを作っていける一方、ゼロになると長い時間が必要になってしまう。

こういうこと、体内にやる気の永久機関を持っていて自己完結している人には理解されないのだろうなあと最近思った。

強烈なやる気を持って何か作ってるときは非常に幸せなのだから、やる気は徹底的に保護したいと思っているけど、うまくいかないもんですね。

モチベーションを保つのってめちゃくちゃ難しいことだと思うし、特に人から「やれよ」といわれてやることに対してのモチベーションなんて、二日持てばいいほうなんじゃないのかなぁと個人的に思う。

http://lowreal.net/blog/2006/09/27/2

なんかすんごい何度も書いてる気がするけど、モチベーションの維持が一番難しいのだ。だから自分はモチベーションがあるときは失わないように必死だし、モチベーションがないときはどうすればモチベーションがでるか考えている。

http://lowreal.net/blog/2007/01/02/1

成長してなくて笑えないです。体内にやる気を生成する機関がうまく作られなかったのでもうどうしようもない感あります。

悔しいって気持ちあんまり感じないんだよなあ…… ないし、感じるけど、人に対してはあんまり感じなくて普通にすごいなぁとしか思わない。あるいは悔しいと思っても、別にそれが行動に繋ったりしない。「残念だったねぇ」としか思わないし、「悔しさ」自体はモチベーションには繋がらない。

一番悔しいって感じるときは、アイデアがあって、実装もしてあったのに、先に誰かに同じアイデアの何かを出されたときですよ。例え同時多発的なアイデアであっても、後発は永遠にパクりの嫌疑をかけられるんですから。

この場合、そのとき「悔しい思いをする想像」っていうのは、早く実装して早く出したいという気持ちになるけど、もちろんそれは「これはおもしろいし先をこされたくない」っていう強い感情に基いてる。

2011年 02月 18日


Firefox、Mac OS X で2つ以上インスタンス化すると、-no-remote の有無に限らず最初に起動したほうが open http://.../ で使われるのはどうにかならないのか

バイナリもう1つ作って Contents/Info.plist のそれっぽいエントリを消したり、s/Firefox/XXXXX/g したりするとうまくいくようだ……