2010/08/29

Kindleレビュー

Kindle(3G付き)が届いたのでレビューみたいなものを.初Kindleなので前作との比較はありません.

持ちやすさ,質感
手は小さめなので,このくらいの大きさが片手で安定して持てる最大の大きさです.
マットな感じで,ツルツルしないので安心.

ページ切り替え
切り替え自体はなかなか速いです.基本的にすぐに切り替わりますが,たまにボタンを押してから少し遅れて反応することがあります.

キーボード
かっちりとした,かなり硬めのキーボードです.慣れればそこそこの速度で打てます.記号や数字はSymキーを押すと選択画面が出てきます.数字はAlt + 一番上の段のキー.

メモ・ハイライト
タッチパネル系と比べるとお取りますが,ハードウェアキーで十分可能です.速度もまぁまぁ.ブックマークは右上に折り目を付けるだけなのになぜ画面全体を書き換えるのか.

Text-To-Speech
聞き取りやすいです.男性と女性,速さ3段階が選べます.速いものはついていくのがやっとですが,一度読んだことのある本の内容を確認したり,リスニングの練習にはいい速さだと思います.ハイライト部分だけ連続で読み上げみたいな機能が欲しいですね.

ブラウザ
無料で繋がるというのは素晴らしいですが,他のデバイスを持っているならそっちを使いましょう.スクロールやポインタの移動等が滑らかでないので違和感があります.期待してる人にとっては「こんなものか」,期待してなかった人にとっては「意外に使える」くらいの出来だと思います.

PDF
元のPDFのテキストの大きさによります.2段組の論文は少し厳しく,1段組は横向きにすれば結構見やすい,パワーポイントをPDF化したようなタイプは完璧です.(変換すれば大丈夫なようです.未確認)

ショートカット
レスポンスがあまりよくないので,メニューから選択するよりもショートカットを覚えた方が良いです.
My Life Times : Kindleのショートカットとか利用方法をまとめました

よく使うのは
ブックマークの追加/解除 : Alt + B
Text-To-Speechの開始 : ↑ + Sym
Text-To-Speechの一時停止 : Space


まとめ
ほとんどKindle本を読むことにしか使っていませんが,読書専用端末としてすばらしいです.片手で安定して保持して操作ができるので,ある程度混雑している電車内でも問題ありません.タッチパネルがないのも,ディスプレイに触れて汚れてしまうということがないためむしろ快適.いい買い物でした.

2010/08/28

AndroidでDropbox API (4) 公開申請

登録時にもらえるデベロッパーキーは開発用の物なので,そのキーを作ったアカウントにしかアクセスできず,アクセスできる回数にも制限があります.アプリケーションを一般公開するには,Dropbox側に申請して全てのアカウントにアクセスできるキーを貰う必要があります.

申請の仕方

  1. Dropbox for developersのMy Appsから,公開したいアプリの[Options]を押します.

  2. App statusがDevelopmentになっているので,その右の[Apply for production status]を押します.

  3. Dropboxを何に使うか,アプリの対象プラットフォーム,会社名やWebサイトの入力が求められます.学生なので会社名は開発用のアカウント名cyandroidに,ウェブサイトはこのブログのアドレス,電話番号は自宅にしました.

  4. App StatusがIn reviewに変わるので連絡を待つ


アプリ自体の提出は求められませんでした.開発ガイドラインに沿っているかどうか,という評価基準がありましたが,これから連絡があるのですかね?どちらにせよ今日は土曜日なので週明けまで待つことになりそうです.とりあえず許可がでることを祈るばかり.

ちなみにDropboxの評価プロセスに関してという,ページにはこんな事も書いてあります.
Also, given the security concern associated with allowing you to access user files we need some proof that you’re going to behave well. This could be a history of mobile app development, an email address showing you’re part of a reputable company, or a phone call where you come across as an especially competent and trusting person.

なんか個人開発者には絶望的なような...

追記(8/29)
結局アプリの提出は求められず,一日で許可がでました.
アプリ公開後にリンク先を送ってね,とのこと.

アクセスキーからログが取れますし,問題があれば停止する,という事なんでしょうかね.とりあえず申請すれば誰でも使えると考えて良さそうです.その後の流れは

  1. アプリを公開

  2. 公開したということと,アプリへのリンクをDropboxに通達

  3. 使用許可が剥奪されないことを祈る


です.

2010/08/25

AndroidでDropbox API (3) ファイルの取得,保存

デベロッパーフォーラムにファイル取得のサンプルと,ファイルリストの取得に使うmetadata関数の解説が落ちてました.
DROPBOX FORUMS » DEVELOPERS : IllegalStateException: Content has been consumed
Android: arguments to api.metafdata

その他,アップロードも含めてある程度使い方のわかった関数を載せときます.
全てDropboxAPIクラスの関数です.

ファイルの取得(ダウンロード)
getFileStream(String arg0, String arg1, String arg2)
arg0は"dropbox"で固定
arg1はDropboxのルートフォルダから見たファイルのパス.ルート直下の"test.txt"というファイルなら"/test.txt"という具合です.
arg2は不明ですが,nullで動きます.

この返り値であるFileDownloadクラスのメンバー変数isがInputStreamクラスなので,通常のファイル読み込みの形で内容を読み込めます.上のリンク先に詳しいコードが載っています.

ファイルの保存(アップロード)
putFile(String arg0, String arg1, File file)
arg0は"dropbox"で固定
arg1はDropboxのルートから見たフォルダのパス("/android"等).フォルダはなければ作ってくれます.ルート直下の場合からの文字列""です.
fileは保存したいファイル.このファイルのファイル名で保存されます.

アップロードするファイルはローカルに存在する必要があります.
また,フォルダ名とファイル名を含めた最終的なファイルが既に存在する場合,既存のファイルを上書きします.

ファイルの削除
delete(String arg0, String arg1)
arg0は"dropbox"で固定
arg1は消したいファイルのパスです.フォルダも消せます.フォルダ内にファイルがあっても,問答無用でフォルダごと消します.

フォルダの作成
createFolder(String arg0, String arg1)
arg0は"dropbox"で固定
arg1は作りたいフォルダの名前です.

ファイルリストの取得
metadata(String arg0, String arg1, int limit, String arg3, boolean list)
arg0は"dropbox"で固定
arg1はファイルリストを取得したいフォルダの名前です.ルートであれば""です.
limitは,リストに返す最大ファイル数です.適当に大きな数を入れておけば問題ありません.
arg3はhashらしいのですが,よくわかりません.とりあえずnullで動きます.
listはフォルダ内に含まれるファイルの内容を返すかです.ファイルリストを取得する場合はtrueです.

この関数はDropboxAPI.Entryクラスを返します.返されたEntryクラス内のcontentsというメンバー変数がDropboxAPI.EntryクラスのArrayListになっており,この中にarg1で指定したフォルダの下にあるフォルダとファイルの情報が入ります.
ルート直下のフォルダ・ファイル情報を得る場合は下のようなコードになります.

DropboxAPI.Entry entry = api.metadata("dropbox", "", 100, null, false);
int n = entry.contents.size();
for(int i = 0; i < n; i++){
Log.i("path",entry.contents.get(i).path);
}

これでだいたい基本的な事はできそうです.

AndroidでDropbox API (2) サンプルコードの読み解き

とりあえずドキュメントは基本的に無視して,サンプルコードの読み解きです.
サンプルにはDropboxSampleクラスとLoginAsyncTaskクラスがあるのでそれぞれの重要な関数について.

DropboxSample
Activityクラスを継承.UIの設定や,ログインのためのキー情報の保存と読み込み.

onCreate
UIの初期化.
一度ログイン済みで,Preferenceにログインのためのキーが保存されていたら,自動的にログイン処理を行ないます.キーがない場合,メールアドレスとパスワードが入力されてログインボタンがおされるのを待ちます.

setLoggedIn
ログイン状態に応じて,UIの状態を変更.ログイン済みの場合,テキストボックスへの入力を無効にし,ボタンをログアウトボタンにします.

getAccountInfo
LoginAsyncTaskクラスを作成し,ログインを行う関数です.キーを持っている場合はキーを使ってログインし,ない場合はメールアドレスとパスワードを使ってログインします.

displayAccountInfo
アカウントの情報を表示します.LoginAsyncTaskクラスがログイン処理を終えたときに呼ばれます.

authentificate
保存されているキーを使って,DropboxAPIクラスのauthenticateTokenで認証を行ないます.

getConfig
DropboxAPI.Configクラスを初期化します.

getKeys, sroeKeys, clearKeys
キーの取得,保存,削除をそれぞれ行ないます.

LoginAyncTask
AsyncTaskクラスを継承.は,それぞれdoInBackgroundの引数,publishProgress及びonProgressUpdateの引数,onPostExecuteの引数=doInBackgroundの返り値です.publishProgressとonProgressUpdateは進捗状態等を表示するのに使われますが,このクラスでは使われていません.

doInBackground
ログイン処理を行う関数です.認証済みでない場合,ユーザ名(メールアドレス)とパスワードを使ってDropboxAPIのauthenticate関数で認証を試みます.その後,アカウント情報を取得し,成功か失敗か等の情報を返します.

onPostExecute
doInBackground後に,その返り値を引数に呼ばれる関数です.成功していれば,DropboxSampleクラスのUIにアカウント情報を表示します.失敗すれば,失敗の原因を表示します.

キーについて
何回かキーという言葉を使用していますが,ユーザ名とパスワードを使って認証すると,そのユーザとしてログインするためのキーが得られます.このキーを保存して使うことで,ユーザ名とパスワードを保存する必要なく,再入力する必要もなくなるので,セキュリティ上好ましいらしいです.

ログインに必要な関数はLoginAsyncTaskにまとまっているので,自分のアプリに組み込むときもこれを使いまわせば良さそうです.呼び出す側のDropboxSampleで特に重要なのはauthenticate(),getConfig(),それにキーの保存関係くらいですかね.

さて,次はファイルの取得と保存です.

2010/08/24

AndroidでDropbox API (1) 登録からサンプル実行まで

以前から気になっていたDropbox APIに手を出してみました.
とりあえず登録からサンプルを動かすまでです.

  1. Dropbox for Developersにアクセスしてログイン.

  2. 左側のメニューから[My Apps]を選び,ライセンスに同意して[submit].

  3. [Create an App]を押す.アプリケーション名と内容を求められるので,適当に入力して[Create].アプリケーション名と内容は[Options]から変えられます.

  4. 左側のメニューから[Mobile Documentation]を選び,[Download the Java/Android SDK]を選んでAndroid Developers向けのSDK(中身はSDKというよりライブラリとそれを使ったサンプル)をダウンロード.

  5. ダウンロードしたフォルダを解凍.全てのファイルが読み取り専用になっているので,解凍されたフォルダを右クリック,読み取り専用属性をオフにする.これをしないとプロジェクトの作成が上手くいきません.

  6. Eclipse->File->New->Project->Android ProjectでCreate project from existing sourceを選ぶ.Importでは無い事に注意.

  7. ライブラリにパスが通っていないのでエラーが出ます.プロジェクトを右クリックして,Properties->Java Build Path.LibrariesタブのAdd JARsを押し,libフォルダにある,先頭が._でないライブラリを追加.

  8. Dropbox for DevelopersのMy Appsに行き,先程作ったアプリケーションの[Options]をクリック.一番下に表示されるKeyとSecretの文字列を,DropboxSample.javaのCONSUMER_KEY, CONSUMER_SECRETにそれぞれ入れる.

  9. 実行!とりあえずログインできました.ファイルリストとかは表示されません.あくまでログインだけです.


さて,これからドキュメントとソースコードを読んで使い方について学んでみます.

2010/08/22

Android タイトルバーのカスタマイズ

onCreate内で

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);

requestWindowFeaturesはsetContentViewの前に,setFeatureIntは後に呼ぶという順番でなければ駄目らしいです.カスタムタイトルの中身のViewはfindViewByIdで取得可能.

標準的なスタイルを維持しつつ,タイトルの右側と左側両方にテキストを配置するといったことができるので便利です.

2010/08/20

Cognitive Surplus

Democratizing Innovationよりも広い範囲で,なぜ時間が余るようになったのか,社会はどうやってその力を使うべきなのかを説いています.

メディアに関する話が多めで,イノベーションへの参加のような,目的を持った人達の積極的な行動に関する話よりも,偶発的な協調行動がなぜ一般人を大規模に巻き込めるようになったか,なぜそんなことが起こるようになったか(むしろなぜ今まで起こらなかったか),どうすれば社会のためにその力を使えるか,に焦点があります.

決められた目的があってそのための集団を作る,というのではなく,大きな集団が作れるようになったけど,それをどんな目的に向けるべきか,という順序.

しかしDemocratizeing~と被っている内容もそこそこあったので,少し損した気分...
とりあえず著者のTEDでの講演を見れば一部雰囲気が掴めます.



学んだこと
一人で一生頑張るよりも,一万人が一日行動を起こしたほうが遥かにインパクトのあることができる.(少なくとも社会的な活動においては)
内的要因から来るモチベーションが大事
ある目的をもって集まった集団が,集団のメンバーを満足させるために本来の目的を見失うことがある.集団を拡大するにあたってはルールを守らせるためのカルチャーが必要.
便利さと不便さが社会を作る.技術によって不便さが取り除かれれば,今まで当然と思っていた社会の常識がひっくり返ることもある

2010/08/08

Democratizing Innovation

0$ & Amazon.comの評価が高い,前期の授業でイノベーションに関する講座を受けていたので読んでみた,という感じでしたが,期待以上の内容でした.

内容と感想
イノベーションは研究室で起きてるんじゃない,現場で起きてるんだ!
という本.ニーズを正確に伝えるという事は非常に難しいので,何かを作ってそれを売ることで利益を得る生産者ではなく,作った物を使うこと自体で利益が得られるユーザがイノベーションを起こすのだとか.だから生産者にイノベーションを起こすためのリソースを集中させるのは非効率的で,もっとユーザによるイノベーションを促すようなシステムを企業や国は取らなければならない云々.

内容,書き方共に手堅い教科書的な印象.MITの教授が書いてるからでしょうか.
0$だから,ではなく十分内容的に勧められる本です.

しかしこんな本がただで読めるとはいい時代だなぁ.

2010/08/01

Secrets of Mental Math

読了.こんな怪しげな本をパッと買ってしまうのも電子書籍の魔力でしょうか.
捨てる心配をしなくていいというのは恐ろしい...
しかし内容は良かったです.Amazon.comで☆が4.5なのも納得でした.

内容と感想
最終的な目標は5桁×5桁の計算を暗算ですることです.
そのために2桁の足し算,引き算,掛け算から計算上の工夫について説明があり,3桁×2桁,3桁×3桁と問題が複雑になっていきます.途中割り算や分数についてもカバーしていますが,メインは掛け算です.

紹介している方法に特にトリッキーなものはありません.知っているもの,むしろ常識と思うものも多いかもしれません.方法をポンと紹介する本ではなく,一見不可能に見える5桁×5桁の暗算も,使う方法を選んで問題を分解していけばちゃんと解ける,ということを順を追って紹介する本,と言えるでしょうか.丁寧に,演習を挟んで少しずつ進むので本当にいずれできるようになれる気がしてきます.読んですぐには絶対に無理です.

ちなみに計算途中の値を覚えておく方法というのも紹介されます(が,英語の発音を基にした暗記方法なのでとっつきにくいです.いまだになかなか上手くできません.).個人的に暗算する上で一番難しいところはここです.そもそも暗算をしていると元の問題を忘れてしまいます...練習あるのみですね.

Amazon上のレビューでは受験生にオススメ,といったコメントが多いですが,間違いありません.ただ,受験とは縁のない大人も楽しめると思います.できて当たり前の計算の反復作業よりも,きっと頭が鍛えられるはず.

Kindle Booksで買う場合の難点
数式がかなり小さいです.Nexus One上のKindle for Androidだと分数はぎりぎり見える程度.iPadでも読みにくいくらい.また,途中である演習の答えは巻末にまとめられている為,ジャンプするのが少し面倒です.