【再読】1日30分を続けなさい

本棚を整理していて、いる本といらない本を分ける時に久々にパラパラと読んだのですが、そのときに妙に気になったので再度読んでみました。このブログで検索かけたら、3年前に読んでいた本でした。そんなにもう経ってるんだな〜と。この本を読んで参考にした習慣はたくさんあるのですが、それ以外のところに今回は目がいったかなと思います。

IT業界はスピードが早いので、焦ってしまって、効率のよい方法というよりも手っ取り早い方法に目が向きがちで、効果を即体感できるようなものじゃないといけない気持ちになってしまっていました。本を読みながら自分を見つめ直すと、焦り過ぎてて身に付いてないんじゃないかなーと思うようになりました。

学習効果で一番重要なのは勉強時間なので、時間をかけなければ効果は得られないし、学習効果は指数関数的に伸びるので、最初は効果を体感できずに挫けやすい。そこを認めた上で、自分のやりやすいペースで長期間取り組むということを忘れないようにします。

今回読み直して、参考になった点をリストにすると、

  • 仕事の処理時間を先に決めて取り組む。
  • 日本ではちょっと頑張れば大概のことができる。(環境として恵まれてる)
  • 勉強の成果はすぐ出ないことを認めつつ、毎日やり続ける。
  • 空腹や睡眠不足など、集中力が低いときは勉強しない。(やっても効果がない)
  • 30分勉強して15分休憩。(登山の、疲れる前に休む方式)
  • 無理なスケジュールで自己嫌悪にならないように、易しいスケジュールに変更する。
  • 先に最終目標を描いてから、目標を細分化する。
  • 1週間単位で中間目標を設定する。
  • 1日目標はさらに細分化し、指標として定める。紙に書き出す。
  • 朝食は果物のみにしてみる。(自分向け)

というところですかねー。
やっぱり良い本は、読む度に学びがありますね。


GAE:独自ドメインを使う(Value Domainで)

そろそろちゃんと個人としてドメイン取ってやっていこうと思ったので、この前のABCの帰りに思いついたドメインを取っておきました。okolabo.comです。まぁ〜なんて個人的なドメインなんでしょう!?

で、このドメインをどのように運用するか?
ドメイン自体はValue Domainで取ったので、xrea+かCoreServerで運用をしてもいいのですけれど、CoreServerは前の会社にいたときに長期障害が発生しているのを目の当たりにしてうーん…と思わざるをえない…。xrea+はCoreServerの廉価版の割に、自分が借りているところは最近はほとんど障害起きてないから、ここでもいいかなーと思ったりもしたんですが、せっかくなので、Google App Engineで使ってみたいなぁと思いました。メールもGmailで運用できるらしいし。調べたら、Google Appsというのを使うとか(実はこの辺り疎かった…)。

ビジネス版で契約したら1ユーザ当たり年間60ドルかかるらしいですが、高信頼性のサービスが利用できるとか。メールボックスも25GBもあるとか。ただ、50人以下であれば、無料版が使える(ただし信頼性は落ちるし、メールボックスは普通のGmailと同じ。といっても7GB超!)とのことなので、迷わず無料版を使ってみる事に(どうせ後でアップグレード可能だし)。

参考にしたサイトは以下の通り。

では、いきます!
ちなみに前提として、Value Domainでドメインを取っているとします。
取っていない人はValue Domainから取って下さい。
例ではexample.comとします。(実際にはokolabo.comでやってますが)
注)記事を書いてる途中でValue Domainが不安定になってスクリーンショット取れなかった部分があるので、後日修正予定です。文字多いですがご勘弁を!

  1. Google Appsに登録する。今回は無料版です。画面上の、『開始方法』をクリックしてください。
  2. ドメインを入力するところに、Value Domainから取得したドメインを入力してください。
  3. Google Appsの申し込み画面に必要な情報を入力してください。
  4. 諸々の手続きが終わると、管理画面が表示されます。
  5. メニューバー付近にあるドメイン所有権の確認を行います。
    ドメイン所有権の確認は、「CNAMEレコードを変更」を選択します。
    そうすると、CNAMEレコードを指定しろという指示がくるので、まずValue Domainにログインします。
  6. メニューより、ネームサーバの変更を選択し、方法選択で「VALUE-DOMAIN独自のネームサーバ(国内)」を選択して変更しておきます。
  7. 再びメニューより、DNSレコード/URL転送の変更を選択し、設定フィールドにCNAMEを登録します。
    恐らく、以下のような形。以下のxxxxxxxxは適当な文字列です。注意!
    あと、google.comの後ろに.「ドット」が必要なので注意!

    cname googlexxxxxxxx google.com.

  8. 設定されると、http://googlexxxxxxxx.example.comにアクセスしたら、google.comが表示されるはずです。所有権の確認を依頼すると、ダッシュボードに確認中を表すメッセージが表示されます。48時間程度とありますが、私の場合は10分程度で終わりました。ここまでで、ドメインの設定は完了です。
  9. 次は、メールアドレスの設定です。ダッシュボードより、メールを有効にします。
  10. すると、DNSのMX設定をしてくれというメッセージが表示されます。親切にも、このホスティングサービスの場合はというプルダウンがあるのですが、残念ながらValue Domainはありません!
  11. 再度、Value DomainのDNS設定画面を開き、設定フィールドに以下をペーストして保存します。既にMXレコードの記述がある場合は削除しておいてください。
    (追記)最後の行はSPFレコードといってメールアドレス偽装を防ぐ記述です。書いておいたほうがよいでしょう。

    mx aspmx.l.google.com. 10
    mx alt1.aspmx.l.google.com. 20
    mx alt2.aspmx.l.google.com. 20
    mx aspmx2.googlemail.com. 30
    mx aspmx3.googlemail.com. 30
    mx aspmx4.googlemail.com. 30
    mx aspmx5.googlemail.com. 30
    txt @ v=spf1 include:aspmx.googlemail.com ~all

  12. これで、メールの設定は完了です。DNSが伝播するまで通常1日〜2日程度はかかるので、設定後すぐ使えるかは微妙です。試しにケータイからメールを送ってみるなどしましょう。
  13. 最後に、Google App Engineに独自ドメインを設定します。
    実は、私の場合はすでにGmailアカウントでApp Engineを動かしていて、App Engineの利用者の認証として携帯のメールアドレスが使われるのですが、すでに携帯のメアドをGmailアカウント側で登録済みのため、Google AppsのアカウントでApp Engineの登録ができなかったので、App Engineの管理は今まで使ってたGoogleアカウント、App Engineの独自ドメイン設定はGoogle Appsアカウントと、ちょっと面倒な感じになってしまいました…。
  14. まずApp Engine側の管理画面にログインします。
  15. アプリを選択し、メニューのApplication Settingsを選択します。
  16. Domain SetUpを選択し、取得しているドメインを入力します。
  17. (私の場合、ドメイン所有者はGoogle Appsアカウントなので強制再ログインが行われました)
  18. またドメイン所有権確認をします。CNAMEを登録しろと書かれます。再び、Value DomainのDNS設定を表示し、以下を追加します。

    cname www ghs.google.com.

    しかし、これだけだとAレコードの解決ができないので、ドメイン解決ができなくてずっとエラーになってしまいました。App Engine の URLに、Aレコードを設定してくださいという記述があるので、さらに以下を追加します。

    a www 216.239.32.21
    a www 216.239.34.21
    a www 216.239.36.21
    a www 216.239.38.21

  19. ここまで設定して、www.example.comにアクセスしたところ、独自ドメインでGAEのコンテンツが表示されました!

GAEは独自ドメインのSSLが実装できないので(共用SSLはOK)、ドメインに信頼性を持たせたいサービスには向かないかもしれません。しかし、そうでない場合はドメインの料金だけで信頼性の高いサーバが無料で利用できますから(さらにサーバの管理の手間が省ける!)小規模な企業や個人事業主さんは導入してみてはいかがでしょうか?


Android:Android勉強会とAndroid温泉

昨日と今日と、Android勉強会とAndroid温泉がありました。

Android勉強会は、愛媛CATVにて。
KDDIの平野さんに来ていただいて、IS03, IS05, IS06のタッチアンドトライ!IS05は初お披露目らしかったです!すごい!!
そういえば写真撮ってもいいって言われていたのに撮るのを忘れていた…(ToT)

IS05はグリーンとホワイトとピンクがあり、普通のスマートフォン(Desireなどのサイズ)に比べると一回り小さくて、片手の親指だけで画面の全体に届く大きさ。今までのケータイのフォルムに最も近い国内発のスマートフォンではないかなと思います。

お!と思ったのは、よく使う機能をNotificationに集約されていることでした。電源管理機能(Wi-Fi, BT, GPSなど)や、バッテリー残量が確認できました。さらに、バッテリー残量表示がIS01, IS03で10%刻みで微妙な評価をうけていたのですが、1%刻みに改善されていました!これは正直嬉しい修正だなぁと思いました!

ただこれは完全に私が作っているアプリのBatteryCrystalと競合するので、ありゃりゃ(^-^;)という気持ちもありますが…。

インカメラもあるので、自分撮りもできるというのもいい点かなと。Felicaや赤外線もあるし、まさに日本版Androidの集大成と言えると思いました。2.2だから動きも機敏でFlashも見れるらしいし。完全に女性をターゲットにしているなと。でもカラーでグリーンは男が持っていてもいい感じ。ピンクやホワイトは女性ウケするだろうなーと思えました。

タッチアンドトライ後は、懇親会。お好み焼きのスミレに行って、ワイワイと。
関西風と広島風のお好み焼きが食べられて、美味しかったです!

そしてAndroid温泉 in 四国。
ネット環境が思ったようにならなくて、Ustreamで地方リレーしているグダ生の準備に時間がかかりましたが、本当にグダグダした内容でイケメンデベロッパー時計のサーバサイドについて話をさせてもらいました。スライド作ってなくてすみません!

その後、開発用の部屋に集まって瀬戸デ部のみんなでモクモク開始。酒飲んだり、つまみ食べながらわいわいという感じ。眠い人は先に寝ていく方式。瀬戸デ部のみんなはNexus Sでのデバッグとか、僕はSlim3でイケメンデベロッパー時計用のWebAPIを作成していました。とりあえず完成させて、デプロイして私のAndroid温泉はフィニッシュ!

翌日はryosmsさんが持ってきていたAR.Drone(iPhoneヘリ)を駐車場で飛ばして遊ぶ!やっぱりすげぇぇえ!!面白そう!!

いい感じの写真が撮れたっす!!

次回はお花見の季節に瀬戸デ部MTGやるか!?というところで解散。
お疲れ様でしたー!!


Android:カレンダーにIntentを発行する

Androidのカレンダーの、新しい予定編集する画面を暗黙的Intentで呼び出す方法です。ちなみにこれをやったらジョルテも選択出来ました。

参考元は以下のstackoverflowです。
http://stackoverflow.com/questions/2911731/intent-that-opens-new-calendar-event-activity

上記は開始予定日と終了予定日に関しては、どうするのか?というような質問だったので、そこらへんは私は試してないのですが、カレンダーに予定を書くためのContentProviderの説明リンクが貼られていたので、それをIntentのパラメータに設定したらよいのかもしれません。何度も書きますが、予定時間は試していません!!

http://android.arnodenhond.com/tutorials/calendar

以下、ソース。

Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("title", "タイトル");
intent.putExtra("description", "説明");
// 以下の2つは試してないのでコメントアウト
// intent.putExtra("dtstart", eventStartInMillis);
// intent.putExtra("dtend", eventEndInMillis);
startActivity(intent);

Android:明示的IntentでYouTube動画を再生する方法

※注意 これはまだ調査段階で、確定ではないですが、暫定でわかったことをメモするための投稿です。

最近になって、WebViewを少しだけ触るようになってきたのですが、普通にブラウザとして動くし、ふむふむ良いなーという感じでいじっていたら、たまたまYouTubeを表示したときに、動画が再生されませんでした。なんだと…!

Desireにデフォルトで入ってるブラウザではどうだ?と思ってブラウザでYouTubeを表示して再生ボタンをタップしたら、普通にYouTube Appが起動して動画が再生されました。そりゃそうですね…。

ちなみにちょっとまとめると、以下のように。(自分調べ)
○がYouTubeを再生できた。×がYouTube再生できなかったというやつです。

  • × WebView
  • ○ デフォルトのブラウザ
  • × Dolphin Browser
  • ○ Dolphin Browser HD

動画のURLを押されたタイミングで、YouTube Appに明示的Intentで起動して再生すればいいのかなと思ったのですが、まずその仕方がわからんと。とりあえず、YouTube Appを明示的Intentで起動できたので、それをメモってことで。

String videoId = "tHJGdnG6CpQ"; // サンプルとして指定。スキマスイッチのPV。
Intent videoClient = new Intent(Intent.ACTION_VIEW);
videoClient.setData(Uri.parse("http://m.youtube.com/watch?v=" + videoId));
videoClient.setClassName("com.google.android.youtube", "com.google.android.youtube.WatchActivity");
startActivity(videoClient);

上記を実行したところ、YouTube Appが起動して動画が再生されました。
WebViewから云々という話ではなく、YouTubeアプリを作って、再生のみYouTube Appに任せるときとかには使える手なのかなーとか、勝手に思っています。

しかし、デフォルトのブラウザで動画再生したら、メニューキーを押してもなんの反応もないから、ひょっとしたら普通にHTML5でビデオタグ内にYouTube動画を読み込んでいるだけなんだろうか…。なんかそんな気がしてきた。

また引き続き調査してみようと思いますー。