I updated FlashCard, an Android application.
Changes
Add alphabetical sort
Add an option to switch the visibility of the card selected from the list.
2010/10/31
2010/10/14
xPiano+とxPianoのアップデート
Android用ピアノアプリケーション,xPiano+とxPianoをアップデートしました.
xPianoに機能の追加を行う予定はありませんが,バグの修正はこれからも行ないます.
更新内容
ヘルプページ:ヘルプページ(マニュアル)を作成し,リンクをアプリ内に追加しました.メニューのヘルプから見ることが出来ます.
録音機能のバグ修正:ファイル名にファイル名として使えない文字(?や*等)が入力された場合,半角スペースに置き換えるように変更しました.
バグの発見や提案等ありましたら,気軽に連絡下さい.
xPiano+公式ページ
Androidマーケットで見る(Android端末からのみ有効です)
xPianoに機能の追加を行う予定はありませんが,バグの修正はこれからも行ないます.
更新内容
ヘルプページ:ヘルプページ(マニュアル)を作成し,リンクをアプリ内に追加しました.メニューのヘルプから見ることが出来ます.
録音機能のバグ修正:ファイル名にファイル名として使えない文字(?や*等)が入力された場合,半角スペースに置き換えるように変更しました.
バグの発見や提案等ありましたら,気軽に連絡下さい.
xPiano+公式ページ
Androidマーケットで見る(Android端末からのみ有効です)
xPiano+ and xPiano are updated
I updated xPiano+ and xPiano, piano applications for Android today.
I won't add new features in xPiano, but I'll fix bugs.
Changes
Add link to Help Page : I created Help Page(User Manual) and add a link to this in applications.
Bug fix in recording function:Invalid characters in a saved file name causes failure.
Check on the Android Market(from Android devices only)
xPiano+ Official Page
I won't add new features in xPiano, but I'll fix bugs.
Changes
Add link to Help Page : I created Help Page(User Manual) and add a link to this in applications.
Bug fix in recording function:Invalid characters in a saved file name causes failure.
Check on the Android Market(from Android devices only)
xPiano+ Official Page
2010/10/11
xPiano+ Updated
xPiano+, a piano application for Android, is updated.
Changes
If your phone has arrow keys(a trackball), you can hide top menu to focus on playing piano.
Fix bug in recording function
Check on the Android Market(from Android devices only)
xPiano+ Official Page
Changes
If your phone has arrow keys(a trackball), you can hide top menu to focus on playing piano.
Fix bug in recording function
Check on the Android Market(from Android devices only)
xPiano+ Official Page
xPiano+のアップデート
Android用ピアノアプリケーション,xPiano+をアップデートしました.
更新内容
上部メニューの表示/非表示切り替え(ハードウェアキー↑ボタン)
録音機能のバグ修正:.midファイルを連続で記録できなかった問題の解決
xPiano+公式ページ
Androidマーケットで見る(Android端末からのみ有効です)
更新内容
上部メニューの表示/非表示切り替え(ハードウェアキー↑ボタン)
録音機能のバグ修正:.midファイルを連続で記録できなかった問題の解決
xPiano+公式ページ
Androidマーケットで見る(Android端末からのみ有効です)
2010/10/09
Uploaded videos about xPiano+ and xPiano
I uploaded videos to show some functions on xPiano+ and xPiano, piano applications for android. I hope this will help someone who is interested in xPiano but don't know how to use.
How to use Player Mode
Player Mode is one of the main feature in xPiano+ and xPiano. It can be useful to learn how to play piano on Android.
Settings
xPiano+ and xPiano have many options. Please set options as you like to play comfortably.
Recording
Use Recording function of xPiano+ and xPiano to save your music idea quickly.
How to use Player Mode
Player Mode is one of the main feature in xPiano+ and xPiano. It can be useful to learn how to play piano on Android.
Settings
xPiano+ and xPiano have many options. Please set options as you like to play comfortably.
Recording
Use Recording function of xPiano+ and xPiano to save your music idea quickly.
2010/10/08
xPiano reached one million download!
I'm very happy that I can announce xPiano, a piano application for Android, reached one million download.
Thank you for all users!
Official Page
Android Market
Thank you for all users!
Official Page
Android Market
2010/10/06
Experimental Release of xPiano Share
I released xPiano Share, a file sharing application for xPiano+ and xPiano.
This application is meant to facilitate sharing of files created by users in xPiano+ and xPiano.
It's still experimental version and there are many things need to be done, but I need more files to test this application and the server. So please try, and if you have suggestions or experienced bugs, please let me know.
This application is meant to facilitate sharing of files created by users in xPiano+ and xPiano.
It's still experimental version and there are many things need to be done, but I need more files to test this application and the server. So please try, and if you have suggestions or experienced bugs, please let me know.
2010/10/05
xPiano+ Updated
xPiano+ (a piano application for Android) is updated. Add two-level keyboard mode.
Check on the Android Market(from Android devices only)
xPiano+ Official Page
Check on the Android Market(from Android devices only)
xPiano+ Official Page
2010/09/25
xPiano+ Updated
Updated xPiano+, Piano application for Android.
Change Log
Add Instruments(47->128)
Save Player Control Settings
Bug fix
Add one sample file to play
Check on the Android Market(from Android devices only)
xPiano+ Official Page
Change Log
Add Instruments(47->128)
Save Player Control Settings
Bug fix
Add one sample file to play
Check on the Android Market(from Android devices only)
xPiano+ Official Page
xPiano+のアップデート
Android用のピアノアプリケーション,xPiano+をアップデートしました.
更新点
音色数の増加(47→128)
再生コントロール設定の保存
バグ修正
サンプル曲の追加
Android Marketで見る(Android端末からのみ有効です)
xPiano+公式ページ
更新点
音色数の増加(47→128)
再生コントロール設定の保存
バグ修正
サンプル曲の追加
Android Marketで見る(Android端末からのみ有効です)
xPiano+公式ページ
2010/09/22
Androidでデフォルトのデータベースを設定する方法
単語帳アプリを作ったときにやっていたのですが,メモするのを忘れていました.
参考,というかまさに答えそのもののページ:How to have a default database.
SQLiteOpenHelperがデータベースを作るパスは決まっているので,そこにデータベースファイルがあるかを見て,なければ別の場所(リソース中のrawやassets)にあるデータベースファイルをそこにコピーする,という形です.rawとraw-ja等のフォルダ分けで言語別のデフォルトデータベースの設定もできます.
どうやらデータベースのサイズが大きいとエラーが起こるようなので,ファイル分割等が必要になることもあるそうです.
アプリケーションのデータベースを事前に設定する方法について
参考,というかまさに答えそのもののページ:How to have a default database.
SQLiteOpenHelperがデータベースを作るパスは決まっているので,そこにデータベースファイルがあるかを見て,なければ別の場所(リソース中のrawやassets)にあるデータベースファイルをそこにコピーする,という形です.rawとraw-ja等のフォルダ分けで言語別のデフォルトデータベースの設定もできます.
どうやらデータベースのサイズが大きいとエラーが起こるようなので,ファイル分割等が必要になることもあるそうです.
アプリケーションのデータベースを事前に設定する方法について
2010/09/21
About xPiano update stop
I decided to stop update of xPiano.
It will continue to be on the Android Market, but there will be no update in the future.
I explain the reason in the page that the following link represents, but in short, updating xPiano became a burden for me, rather than informative experience.
I really appreciate all your suggestions you gave me to improve this application and encouraging comments. I continue to update xPiano+ and develop other Android applications.
Thank you for all.
About xPiano update Stop
It will continue to be on the Android Market, but there will be no update in the future.
I explain the reason in the page that the following link represents, but in short, updating xPiano became a burden for me, rather than informative experience.
I really appreciate all your suggestions you gave me to improve this application and encouraging comments. I continue to update xPiano+ and develop other Android applications.
Thank you for all.
About xPiano update Stop
2010/09/20
xPianoの更新停止について
このたびxPianoのアップデートの中止を決めました.
これからもマーケットでの公開は続けますが,アップデートの予定はありません.
詳しい理由は以下のリンク先で述べさせていただいていますが,端的に言えばxPianoのアップデートを負担に感じるようになってしまったからです.
今まで様々な提案や温かいコメント有難うございました.
これからもxPiano+をはじめ他のAndroid用アプリケーションの開発は続けていこうと思いますので,よろしくお願いします.
xPianoの更新停止について
これからもマーケットでの公開は続けますが,アップデートの予定はありません.
詳しい理由は以下のリンク先で述べさせていただいていますが,端的に言えばxPianoのアップデートを負担に感じるようになってしまったからです.
今まで様々な提案や温かいコメント有難うございました.
これからもxPiano+をはじめ他のAndroid用アプリケーションの開発は続けていこうと思いますので,よろしくお願いします.
xPianoの更新停止について
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本を読むことにしか使っていませんが,読書専用端末としてすばらしいです.片手で安定して保持して操作ができるので,ある程度混雑している電車内でも問題ありません.タッチパネルがないのも,ディスプレイに触れて汚れてしまうということがないためむしろ快適.いい買い物でした.
持ちやすさ,質感
手は小さめなので,このくらいの大きさが片手で安定して持てる最大の大きさです.
マットな感じで,ツルツルしないので安心.
ページ切り替え
切り替え自体はなかなか速いです.基本的にすぐに切り替わりますが,たまにボタンを押してから少し遅れて反応することがあります.
キーボード
かっちりとした,かなり硬めのキーボードです.慣れればそこそこの速度で打てます.記号や数字はSymキーを押すと選択画面が出てきます.数字はAlt + 一番上の段のキー.
メモ・ハイライト
タッチパネル系と比べるとお取りますが,ハードウェアキーで十分可能です.速度もまぁまぁ.ブックマークは右上に折り目を付けるだけなのになぜ画面全体を書き換えるのか.
Text-To-Speech
聞き取りやすいです.男性と女性,速さ3段階が選べます.速いものはついていくのがやっとですが,一度読んだことのある本の内容を確認したり,リスニングの練習にはいい速さだと思います.ハイライト部分だけ連続で読み上げみたいな機能が欲しいですね.
ブラウザ
無料で繋がるというのは素晴らしいですが,他のデバイスを持っているならそっちを使いましょう.スクロールやポインタの移動等が滑らかでないので違和感があります.期待してる人にとっては「こんなものか」,期待してなかった人にとっては「意外に使える」くらいの出来だと思います.
元の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側に申請して全てのアカウントにアクセスできるキーを貰う必要があります.
申請の仕方
アプリ自体の提出は求められませんでした.開発ガイドラインに沿っているかどうか,という評価基準がありましたが,これから連絡があるのですかね?どちらにせよ今日は土曜日なので週明けまで待つことになりそうです.とりあえず許可がでることを祈るばかり.
ちなみに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)
結局アプリの提出は求められず,一日で許可がでました.
アプリ公開後にリンク先を送ってね,とのこと.
アクセスキーからログが取れますし,問題があれば停止する,という事なんでしょうかね.とりあえず申請すれば誰でも使えると考えて良さそうです.その後の流れは
です.
申請の仕方
- Dropbox for developersのMy Appsから,公開したいアプリの[Options]を押します.
- App statusがDevelopmentになっているので,その右の[Apply for production status]を押します.
- Dropboxを何に使うか,アプリの対象プラットフォーム,会社名やWebサイトの入力が求められます.学生なので会社名は開発用のアカウント名cyandroidに,ウェブサイトはこのブログのアドレス,電話番号は自宅にしました.
- 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)
結局アプリの提出は求められず,一日で許可がでました.
アプリ公開後にリンク先を送ってね,とのこと.
アクセスキーからログが取れますし,問題があれば停止する,という事なんでしょうかね.とりあえず申請すれば誰でも使えると考えて良さそうです.その後の流れは
- アプリを公開
- 公開したということと,アプリへのリンクをDropboxに通達
- 使用許可が剥奪されないことを祈る
です.
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);
}
これでだいたい基本的な事はできそうです.
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(),それにキーの保存関係くらいですかね.
さて,次はファイルの取得と保存です.
サンプルには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
ログイン処理を行う関数です.認証済みでない場合,ユーザ名(メールアドレス)とパスワードを使ってDropboxAPIのauthenticate関数で認証を試みます.その後,アカウント情報を取得し,成功か失敗か等の情報を返します.
onPostExecute
doInBackground後に,その返り値を引数に呼ばれる関数です.成功していれば,DropboxSampleクラスのUIにアカウント情報を表示します.失敗すれば,失敗の原因を表示します.
キーについて
何回かキーという言葉を使用していますが,ユーザ名とパスワードを使って認証すると,そのユーザとしてログインするためのキーが得られます.このキーを保存して使うことで,ユーザ名とパスワードを保存する必要なく,再入力する必要もなくなるので,セキュリティ上好ましいらしいです.
ログインに必要な関数はLoginAsyncTaskにまとまっているので,自分のアプリに組み込むときもこれを使いまわせば良さそうです.呼び出す側のDropboxSampleで特に重要なのはauthenticate(),getConfig(),それにキーの保存関係くらいですかね.
さて,次はファイルの取得と保存です.
2010/08/24
AndroidでDropbox API (1) 登録からサンプル実行まで
以前から気になっていたDropbox APIに手を出してみました.
とりあえず登録からサンプルを動かすまでです.
さて,これからドキュメントとソースコードを読んで使い方について学んでみます.
とりあえず登録からサンプルを動かすまでです.
- Dropbox for Developersにアクセスしてログイン.
- 左側のメニューから[My Apps]を選び,ライセンスに同意して[submit].
- [Create an App]を押す.アプリケーション名と内容を求められるので,適当に入力して[Create].アプリケーション名と内容は[Options]から変えられます.
- 左側のメニューから[Mobile Documentation]を選び,[Download the Java/Android SDK]を選んでAndroid Developers向けのSDK(中身はSDKというよりライブラリとそれを使ったサンプル)をダウンロード.
- ダウンロードしたフォルダを解凍.全てのファイルが読み取り専用になっているので,解凍されたフォルダを右クリック,読み取り専用属性をオフにする.これをしないとプロジェクトの作成が上手くいきません.
- Eclipse->File->New->Project->Android ProjectでCreate project from existing sourceを選ぶ.Importでは無い事に注意.
- ライブラリにパスが通っていないのでエラーが出ます.プロジェクトを右クリックして,Properties->Java Build Path.LibrariesタブのAdd JARsを押し,libフォルダにある,先頭が._でないライブラリを追加.
- Dropbox for DevelopersのMy Appsに行き,先程作ったアプリケーションの[Options]をクリック.一番下に表示されるKeyとSecretの文字列を,DropboxSample.javaのCONSUMER_KEY, CONSUMER_SECRETにそれぞれ入れる.
- 実行!とりあえずログインできました.ファイルリストとかは表示されません.あくまでログインだけです.
さて,これからドキュメントとソースコードを読んで使い方について学んでみます.
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で取得可能.
標準的なスタイルを維持しつつ,タイトルの右側と左側両方にテキストを配置するといったことができるので便利です.
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での講演を見れば一部雰囲気が掴めます.
学んだこと
一人で一生頑張るよりも,一万人が一日行動を起こしたほうが遥かにインパクトのあることができる.(少なくとも社会的な活動においては)
内的要因から来るモチベーションが大事
ある目的をもって集まった集団が,集団のメンバーを満足させるために本来の目的を見失うことがある.集団を拡大するにあたってはルールを守らせるためのカルチャーが必要.
便利さと不便さが社会を作る.技術によって不便さが取り除かれれば,今まで当然と思っていた社会の常識がひっくり返ることもある
メディアに関する話が多めで,イノベーションへの参加のような,目的を持った人達の積極的な行動に関する話よりも,偶発的な協調行動がなぜ一般人を大規模に巻き込めるようになったか,なぜそんなことが起こるようになったか(むしろなぜ今まで起こらなかったか),どうすれば社会のためにその力を使えるか,に焦点があります.
決められた目的があってそのための集団を作る,というのではなく,大きな集団が作れるようになったけど,それをどんな目的に向けるべきか,という順序.
しかしDemocratizeing~と被っている内容もそこそこあったので,少し損した気分...
とりあえず著者のTEDでの講演を見れば一部雰囲気が掴めます.
学んだこと
一人で一生頑張るよりも,一万人が一日行動を起こしたほうが遥かにインパクトのあることができる.(少なくとも社会的な活動においては)
内的要因から来るモチベーションが大事
ある目的をもって集まった集団が,集団のメンバーを満足させるために本来の目的を見失うことがある.集団を拡大するにあたってはルールを守らせるためのカルチャーが必要.
便利さと不便さが社会を作る.技術によって不便さが取り除かれれば,今まで当然と思っていた社会の常識がひっくり返ることもある
2010/08/08
Democratizing Innovation
0$ & Amazon.comの評価が高い,前期の授業でイノベーションに関する講座を受けていたので読んでみた,という感じでしたが,期待以上の内容でした.
内容と感想
イノベーションは研究室で起きてるんじゃない,現場で起きてるんだ!
という本.ニーズを正確に伝えるという事は非常に難しいので,何かを作ってそれを売ることで利益を得る生産者ではなく,作った物を使うこと自体で利益が得られるユーザがイノベーションを起こすのだとか.だから生産者にイノベーションを起こすためのリソースを集中させるのは非効率的で,もっとユーザによるイノベーションを促すようなシステムを企業や国は取らなければならない云々.
内容,書き方共に手堅い教科書的な印象.MITの教授が書いてるからでしょうか.
0$だから,ではなく十分内容的に勧められる本です.
しかしこんな本がただで読めるとはいい時代だなぁ.
内容と感想
イノベーションは研究室で起きてるんじゃない,現場で起きてるんだ!
という本.ニーズを正確に伝えるという事は非常に難しいので,何かを作ってそれを売ることで利益を得る生産者ではなく,作った物を使うこと自体で利益が得られるユーザがイノベーションを起こすのだとか.だから生産者にイノベーションを起こすためのリソースを集中させるのは非効率的で,もっとユーザによるイノベーションを促すようなシステムを企業や国は取らなければならない云々.
内容,書き方共に手堅い教科書的な印象.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でも読みにくいくらい.また,途中である演習の答えは巻末にまとめられている為,ジャンプするのが少し面倒です.
捨てる心配をしなくていいというのは恐ろしい...
しかし内容は良かったです.Amazon.comで☆が4.5なのも納得でした.
内容と感想
最終的な目標は5桁×5桁の計算を暗算ですることです.
そのために2桁の足し算,引き算,掛け算から計算上の工夫について説明があり,3桁×2桁,3桁×3桁と問題が複雑になっていきます.途中割り算や分数についてもカバーしていますが,メインは掛け算です.
紹介している方法に特にトリッキーなものはありません.知っているもの,むしろ常識と思うものも多いかもしれません.方法をポンと紹介する本ではなく,一見不可能に見える5桁×5桁の暗算も,使う方法を選んで問題を分解していけばちゃんと解ける,ということを順を追って紹介する本,と言えるでしょうか.丁寧に,演習を挟んで少しずつ進むので本当にいずれできるようになれる気がしてきます.読んですぐには絶対に無理です.
ちなみに計算途中の値を覚えておく方法というのも紹介されます(が,英語の発音を基にした暗記方法なのでとっつきにくいです.いまだになかなか上手くできません.).個人的に暗算する上で一番難しいところはここです.そもそも暗算をしていると元の問題を忘れてしまいます...練習あるのみですね.
Amazon上のレビューでは受験生にオススメ,といったコメントが多いですが,間違いありません.ただ,受験とは縁のない大人も楽しめると思います.できて当たり前の計算の反復作業よりも,きっと頭が鍛えられるはず.
Kindle Booksで買う場合の難点
数式がかなり小さいです.Nexus One上のKindle for Androidだと分数はぎりぎり見える程度.iPadでも読みにくいくらい.また,途中である演習の答えは巻末にまとめられている為,ジャンプするのが少し面倒です.
2010/07/31
選択の自由について
TED Talks : Sheena Iyengar on the art of choosing
を見てちょっと面白かった実験の紹介.
詳しくはリンク先の動画を見た方がいいです.これ以外の話も面白い.
選択の自由のパフォーマンスへの影響についての実験
7歳~9歳の子供を3つのグループに分けて,一定時間アナグラムを解かせる.アナグラムには動物,食べ物等のジャンルがあり,答えを書くためのマーカーにも何色か種類かある.その際,
グループ1:自分でジャンルとマーカーを選ぶ
グループ2:スミス先生(実験部屋にいる他人)がジャンルとマーカーを選んだと思わせる
グループ3:母親がジャンルとマーカーを選んだと思わせる
とグループ毎に条件を変える.実際はグループ2とグループ3にはグループ1の子供が選んだ組み合わせでアナグラムを解いてもらうため,問題の内容に差はない.
アングロサクソン(英国系米国人)の子供
自分で選択をしたグループ1が,他人や親が選択をしたグループと比べて同じ時間内で2倍近くの数のアナグラムを解くことができた.
グループ2とグループ3に差はなし.
グループ3の子供は親が選んだということを恥ずかしく思った子がいた.(You asked my mother?)
アジア系アメリカ人の子供
親が選択したと思っている場合が最も良く,その次に自分で選択した場合,他人が選択した場合がもっとも悪い.
グループ3の子供に,ちゃんと言われたことをやった,ということを親に伝えて欲しいという子がいた.
結論
個人による選択が最善の結果をもたらすのは,その個人,その選択がはっきりと他人とわかれている場合.つまり選択はひとりで行うものだ,選択こそが自分を定義する行動だと思うように育てられた人の場合.全ての人が一人で選択することで良い結果を得られるわけではない.
感想
自分で選択したグループが全体的にパフォーマンスが良くなることは,得意なジャンル,好きな色を選択できる,という理由から理解できます.しかしアジア系の子供の結果は面白い.7歳の頃から,「親に恥をかかせてはいけない,頑張らなくては」という意識があるということでしょうか.そういう文化が根づいていて,結果としてパフォーマンスが上がる以上,誰か信頼している人,信頼されたい人に選択を委ねるのも悪くないかもしれません.
を見てちょっと面白かった実験の紹介.
詳しくはリンク先の動画を見た方がいいです.これ以外の話も面白い.
選択の自由のパフォーマンスへの影響についての実験
7歳~9歳の子供を3つのグループに分けて,一定時間アナグラムを解かせる.アナグラムには動物,食べ物等のジャンルがあり,答えを書くためのマーカーにも何色か種類かある.その際,
グループ1:自分でジャンルとマーカーを選ぶ
グループ2:スミス先生(実験部屋にいる他人)がジャンルとマーカーを選んだと思わせる
グループ3:母親がジャンルとマーカーを選んだと思わせる
とグループ毎に条件を変える.実際はグループ2とグループ3にはグループ1の子供が選んだ組み合わせでアナグラムを解いてもらうため,問題の内容に差はない.
アングロサクソン(英国系米国人)の子供
自分で選択をしたグループ1が,他人や親が選択をしたグループと比べて同じ時間内で2倍近くの数のアナグラムを解くことができた.
グループ2とグループ3に差はなし.
グループ3の子供は親が選んだということを恥ずかしく思った子がいた.(You asked my mother?)
アジア系アメリカ人の子供
親が選択したと思っている場合が最も良く,その次に自分で選択した場合,他人が選択した場合がもっとも悪い.
グループ3の子供に,ちゃんと言われたことをやった,ということを親に伝えて欲しいという子がいた.
結論
個人による選択が最善の結果をもたらすのは,その個人,その選択がはっきりと他人とわかれている場合.つまり選択はひとりで行うものだ,選択こそが自分を定義する行動だと思うように育てられた人の場合.全ての人が一人で選択することで良い結果を得られるわけではない.
感想
自分で選択したグループが全体的にパフォーマンスが良くなることは,得意なジャンル,好きな色を選択できる,という理由から理解できます.しかしアジア系の子供の結果は面白い.7歳の頃から,「親に恥をかかせてはいけない,頑張らなくては」という意識があるということでしょうか.そういう文化が根づいていて,結果としてパフォーマンスが上がる以上,誰か信頼している人,信頼されたい人に選択を委ねるのも悪くないかもしれません.
2010/07/24
xPiano 2.0.0 Betaのリリース
本日xPianoをアップデートしました.大幅に色々と変えたのでBeta版として,フィードバックをもらった上で修正を加えて正式版にしたいと思います.
録音と再生
今回のメインの追加機能です.xPianoでの演奏を録音し,再生できるようになりました.
録音方法,再生方法についてはアプリケーション内のヘルプを参考にしてください.
また,xPiano用のページを作成しました.
xPiano
xPiano内で再生できるファイルのサンプル
質問や提案,バグの報告などお待ちしています.
録音と再生
今回のメインの追加機能です.xPianoでの演奏を録音し,再生できるようになりました.
録音方法,再生方法についてはアプリケーション内のヘルプを参考にしてください.
また,xPiano用のページを作成しました.
xPiano
xPiano内で再生できるファイルのサンプル
質問や提案,バグの報告などお待ちしています.
xPiano 2.0.0 Beta is released.
I updated xPiano today. I changed a lot, so it's beta version yet.
Record and Play
The main feature in this update is the function to record your play in xPiano and play it. Please look help in application how to record and play.
And I created Web pages for xPiano.
xPiano
Sample files you can play in xPiano
Feel free to ask questions and make suggestions.
I'll appreciate all your feedback.
Record and Play
The main feature in this update is the function to record your play in xPiano and play it. Please look help in application how to record and play.
And I created Web pages for xPiano.
xPiano
Sample files you can play in xPiano
Feel free to ask questions and make suggestions.
I'll appreciate all your feedback.
2010/07/23
Food.Inc
Food.Incを読み終わりました.電子書籍3冊目.
映像作品の方は見てないです.トレイラーだけ見ました.30秒くらいのところの鶏の成長が恐ろしい...
内容と感想
食品産業に関する包括的な話です.現代食品の健康に対する影響,遺伝子組換え技術の功罪,大企業による農家の搾取,農薬の影響,違法移民の増加,食品業界の政治に対する影響力,家畜に対する非人道的な扱い,食糧危機,温暖化への影響とかとかとか.
何らかの食料問題について興味がある人はもちろん,健康的な食生活に切り替えたいと思っているけど意思が弱くて続かない,という人が読むと効果があるかもしれません.肉や農薬漬けの野菜,ファストフードを食べることが,個人の健康だけでなく地球環境や貧困問題に影響を与える,という考えを植え付けられて,無駄食いする気がなくなります.
第一章はこのドキュメンタリーを作った経緯について.前書きみたいな部分だけど結構長い.
第二章は一つのテーマを一人,もしくは一組織が取り上げて,現状の問題と解決策を提示する形式.この本のメインパートで,内容は濃い.いちいち著者や組織の紹介が入るのが難点.解決策の方はオーガニック食品を選ぼうとか,肉の消費を減らそうとか,同じ内容の場合も多い.
第三章は,特定の問題を取り上げずに,これからどうすればいいかについて何人かの著者が書いている,まとめみたいなパート.
食糧問題に付いて書かれた本を読むのは初めてなので比較はできませんが,包括的にいろいろ学べていい本だったんじゃないかと思います.
映像作品の方は見てないです.トレイラーだけ見ました.30秒くらいのところの鶏の成長が恐ろしい...
内容と感想
食品産業に関する包括的な話です.現代食品の健康に対する影響,遺伝子組換え技術の功罪,大企業による農家の搾取,農薬の影響,違法移民の増加,食品業界の政治に対する影響力,家畜に対する非人道的な扱い,食糧危機,温暖化への影響とかとかとか.
何らかの食料問題について興味がある人はもちろん,健康的な食生活に切り替えたいと思っているけど意思が弱くて続かない,という人が読むと効果があるかもしれません.肉や農薬漬けの野菜,ファストフードを食べることが,個人の健康だけでなく地球環境や貧困問題に影響を与える,という考えを植え付けられて,無駄食いする気がなくなります.
第一章はこのドキュメンタリーを作った経緯について.前書きみたいな部分だけど結構長い.
第二章は一つのテーマを一人,もしくは一組織が取り上げて,現状の問題と解決策を提示する形式.この本のメインパートで,内容は濃い.いちいち著者や組織の紹介が入るのが難点.解決策の方はオーガニック食品を選ぼうとか,肉の消費を減らそうとか,同じ内容の場合も多い.
第三章は,特定の問題を取り上げずに,これからどうすればいいかについて何人かの著者が書いている,まとめみたいなパート.
食糧問題に付いて書かれた本を読むのは初めてなので比較はできませんが,包括的にいろいろ学べていい本だったんじゃないかと思います.
2010/07/22
Qtで標準入出力を使う
研究ではだいたいVisualStudio2008+Qtを使ってプログラムを書いているのですが,Qtアプリケーションは普通に起動するとコンソールが出ません.一応
qDebug("%d",out);
みたいな感じで出力はできるのですが,入力の仕方はわからないし,Qtを使わない場合もある事を考えるとなるべくprintfとscanfで済ませたい.
ということでQtアプリケーションでコンソールを出す方法を調べました.
結論としては
QApplication a(argc, argv);
を呼ぶ前に以下のコードを書くことで解決.
AllocConsole();
FILE* fp;
freopen_s(&fp, "CON","w",stdout);
freopen_s(&fp, "CON","r",stdin);
同じファイルで大丈夫なのかとも思いましたが,入力も出力も受け付けてくれます.
qDebug("%d",out);
みたいな感じで出力はできるのですが,入力の仕方はわからないし,Qtを使わない場合もある事を考えるとなるべくprintfとscanfで済ませたい.
ということでQtアプリケーションでコンソールを出す方法を調べました.
結論としては
QApplication a(argc, argv);
を呼ぶ前に以下のコードを書くことで解決.
AllocConsole();
FILE* fp;
freopen_s(&fp, "CON","w",stdout);
freopen_s(&fp, "CON","r",stdin);
同じファイルで大丈夫なのかとも思いましたが,入力も出力も受け付けてくれます.
2010/07/19
Born to Run
Born to Runを読み終わりました.電子書籍2冊目.
前半は分からない単語が多くてPCの前で読むという悲しい事態に(出先ではKindleではなくKindle for Androidなので内蔵辞書がない).後半30%くらいでようやく辞書なしでも快適に読める程度に分からない単語が減りました.うーん,まだまだ勉強が足りない...
人名と地名がたびたびよくわからなくなったので,Kindleに,単語レベルでのメモ書きではなくて,全体用のメモ書きが欲しくなりました.登場人物リストとかを作りたい.
内容と感想
なぜ人は走ると怪我をするのか?
なぜより栄養のある食事,より良い靴が手に入るようになっても怪我をする人は減らないのか?
こんな疑問を持ち,自身もたびたびランニングによる怪我に悩まされていた著者による,ウルトラランナー達の物語.
この本の面白いところは科学とか,人類学の話を添えて上に挙げた「なぜ」の部分を解説しつつ,レースとランナーを中心に話が展開するところ.ノンフィクション小説.細かい心情描写とかはフィクションかもしれないけれど,ノンフィクションなんてそんなものだと思う.たとえフィクションだって別に構わないんです,面白かったので.
どうやって走るのか,を知りたいなら,もっと実践的で参考になる本はたくさんある.というより,いきなりこの本に出てるランナーの真似をしようものなら間違いなく怪我すると思う.参考になる部分はあるけど,How to Runという本ではない.そうではなくて,なぜ走るのか,なんのために走るのか,を感じられる本.
ランニングに限らず,「~のために仕方なく」運動しているという感じがしたら読んでみるといいと思う.
前半は分からない単語が多くてPCの前で読むという悲しい事態に(出先ではKindleではなくKindle for Androidなので内蔵辞書がない).後半30%くらいでようやく辞書なしでも快適に読める程度に分からない単語が減りました.うーん,まだまだ勉強が足りない...
人名と地名がたびたびよくわからなくなったので,Kindleに,単語レベルでのメモ書きではなくて,全体用のメモ書きが欲しくなりました.登場人物リストとかを作りたい.
内容と感想
なぜ人は走ると怪我をするのか?
なぜより栄養のある食事,より良い靴が手に入るようになっても怪我をする人は減らないのか?
こんな疑問を持ち,自身もたびたびランニングによる怪我に悩まされていた著者による,ウルトラランナー達の物語.
この本の面白いところは科学とか,人類学の話を添えて上に挙げた「なぜ」の部分を解説しつつ,レースとランナーを中心に話が展開するところ.ノンフィクション小説.細かい心情描写とかはフィクションかもしれないけれど,ノンフィクションなんてそんなものだと思う.たとえフィクションだって別に構わないんです,面白かったので.
どうやって走るのか,を知りたいなら,もっと実践的で参考になる本はたくさんある.というより,いきなりこの本に出てるランナーの真似をしようものなら間違いなく怪我すると思う.参考になる部分はあるけど,How to Runという本ではない.そうではなくて,なぜ走るのか,なんのために走るのか,を感じられる本.
ランニングに限らず,「~のために仕方なく」運動しているという感じがしたら読んでみるといいと思う.
2010/07/16
登録:
投稿 (Atom)