あんにんにっき。

日々思ったことや、おこったことを記録するブログ。要するに日記。

単語暗記用にiPhoneアプリを購入してみた

 今までに暗記カードのような物を使って暗記をした試しは無いのだけど(何度も繰り返して見て、暗唱して覚えた気分になるって感じ。あまり効率的ではないかもしれないが、6割覚えればなんとかなるだろ、って感じ)、せっかくiPhoneを持っているので試してみようかなと。
 色々と迷ったのだけど、導入してみたのはi暗記、というアプリ。どうやらセール中だったらしく、ちょいと安いみたい。
i暗記 〜記憶のコンシェルジュ〜 - redfox, Inc.


 いちいちiPhoneで単語カード作るのは面倒なので、パソコンからデータ入力できることが条件の一つ。i暗記は、公式サイトを経由して、CSVアップロードができるようなのでそれを満たしている様子。
 あと、アプリの説明によると、適当な間隔でもって、忘れた頃に再び繰り返してくれるらしい。


 で、とりあえずCSVファイル作って、アプリ購入して、サーバにログインして、単語カードをiPhoneに登録しよう、と思ったのだけど。サーバが妙に重くて反応してくれない(ログインできない)。
 うーむ。たぶん、セールのタイミングだからサーバが混み合っているんだろうなぁ。
 まあ、普段はサーバももうちょっと反応いいのだろうと思う。


 もう一つ、候補として考えていた(でも少し高いので見合わせた)Flashcards Deluxe - OrangeOrApple.comというアプリは、Google DocsDropboxに対応しているようで、そちらにすればよかったかも?と思っていたり。
 ただ、そちらはUIが英語なのでちょいと敷居たかいんだよね。英語で問題ないなら、そもそもこんな問題発生していない。

英語学習を始めるために、英単語本買った。

 Amazonで英語の単語・熟語 の ベストセラーランク1位の単語本にしてみた。
 Amazonではなくて、本屋に行って買ってきた。Amazonは便利だけど届くまでのタイムラグがあるし。こういうのは思いついたときにすぐに始めるのがいいと思うので。


 英語学習には、単語を覚えて語彙を増やすほかにも、音読やったりとか文法やったりとか色々手段があると思うのだけど、英語学習の目的が「英語の文献を読めるようになる」事なので、単語を中心にやることにしてみた。
 文章を読むだけなら、辞書を引きながらであればなんとかならないことはない。だけど、知らない単語が多すぎると辞書をひく時間が多くなりすぎる。それが解消されるのが目的。
 ようするに、そこまできちんと英語が分かるようになる必要は無い、だからとりあえず単語。


 TOEICとかできちんとした点数を取りたいとか、違った目的の場合は違った方法をとったほうが良いと思う。英語文章を読む、という目的の場合も違った方法をとったほうがいいかもしれないけど、とりあえずはこのまま続けてみる。

DUO 3.0

DUO 3.0

EvernoteとかDropboxを読み書きできる方法を調査中

 相も変らずTitanium Mobileで遊んでいる。
 iOSアプリだと、EvernoteとかDropboxとかと連携したりするのが流行っている(注:個人的観測範囲による)のだけど、Titanium Mobileから簡単にそれができないものだろうか、と思って検索してみた。


 ……。
 答えそのもの、ってのは見つからず。FacebookとYahooのモジュールはあるっぽいのだけど。
 で、EvernoteとかDropbox側の方のAPIについて調べてみると、RestとかOAuthとか部分的に分かる単語はあるのだけど、英語で書かれているためいまいちよくわからない。


 やっぱり、まともな技術者になろうと思ったら英語必須。おうちプログラマーにも英語はあったほうがいい。学生のうちにしっかりやっておくほうがいい。会話はともかく文書が読めると情報源が増えるので。
 仕方ないので、辞書を引き引き読み進めていくことにする…。

Titanium Mobile で行の表示情報を増やしてみる。

 昨日、タイトル部分の文字情報の変更をやってみたので、今回は行の中身のほうをいじってみる。
 前回の感触から、行(Titanium.UI.TableViewRow) に対して、部品を追加してやればよいのだと推測。 Kitchen Sinkを探していたら、それっぽいのが見つかったので参考にしながら試してみた。

while(dbRows.isValidRow()){
	// 行データを作る
	var row = Ti.UI.createTableViewRow({
		hasChild:true,
		editable:true,
		url:'' + dbRows.fieldByName('url') + '',
		rowTitle:'' + dbRows.fieldByName('title') + '' ,
	});

	// 左の文字列のラベルを作って追加
	row.add(Ti.UI.createLabel({
		text:'' + dbRows.fieldByName('title') + '' ,
		left:10,
		font:{fontSize:20,fontWeight:'bold'}
	})) ;

	// 右の文字列(薄い灰色で少し小文字。表示位置を右の方に寄せる)を作って追加
	row.add(Ti.UI.createLabel({
		text:'' + dbRows.fieldByName('url') + '' ,
		color:'gray',
		left:100,
		font:{fontSize:12}
	})) ;

	// 行データの追加
	tblRows.push(row);
	dbRows.next();
}

 上記のように、TableViewRow をcreateしておいて、それに対してLabelをaddを行っている。
 上記の例の場合、左にタイトル、右に補足情報としてURLを表示している。
 (余談だが、iOS Simulatorでの動作の場合、フォントサイズを20、ボールドをかけると通常のタイトルと同じくらいのサイズの文字になるようだ(下図の最終行はラベルを使っていない)



 ラベルの位置を注意しないと、重なって表示される。
 その場合は、ラベルの幅や折り返しの指定をして表示位置が重ならないように工夫しなくてはならないようだ。
 

 

Titanium MobileでWindowのタイトル部分の表示を変えてみる。

 

 こんな感じ。青文字で、文字サイズも少し大きくなっている。
 Windowのタイトル部分の表示を変えたい場合、Labelを貼り付けるという方法が使えるようだ。

// タイトル部分用のLabelを用意する。
var lbl = Ti.UI.createLabel({
	text:'Bookmark',
    	color:'blue',
    	font:{fontSize:32}
});

// Labelを貼り付ける
var win1 = Ti.UI.createWindow({  
    	barImage:'row1.png',
    	backgroundImage:'row1.png',
    	titleControl:lbl
});

Titanium MobileでTableViewの削除ボタンを実装してみる。

 TableViewを横にスワイプすると削除ってボタンが出て、それを押すと削除される、ってのを実装してみようと思う。
 たぶん、swipとかいうイベントがあるのだろうなぁ、とか思いつつKitchen Sinkを覗いてみたけど全然違った。


 まず、スワイプしたら削除、と出るのはかなり簡単。行データのプロパティ editableにtrueを設定するだけ。

// editable:true で行データを作っておく。
var tblRows = [];
var rowIdx = 0;
while(dbRows.isValidRow()){
	tblRows.push({title:'' + dbRows.fieldByName('title') + '' ,
		hasChild:true,
		url:'' + dbRows.fieldByName('url') + '',
		backgroundImage:'row1.png',
		editable:true
	});
	dbRows.next();
}

// editable:trueが指定された行データをTableViewのdataとして設定
var tblView = Ti.UI.createTableView({
	data:tblRows,
    	backgroundColor:'transparent',
    	separatorStyle:Ti.UI.iPhone.TableViewSeparatorStyle.NONE
});

 これだけで、スワイプすると削除ボタンが出るようになる。この削除ボタンを押すと、行が削除される。
 


 このままの状態(editable:true)だけだと、削除ボタンは出せるし、行も消せる。しかし、DB等からデータを削除する、といった処理が必要な場合、削除のイベントに処理を追加する必要がある。

// 行削除処理
tblView.addEventListener('delete', function(e){
	// データの削除処理
	var db = Ti.Database.open('db');
	db.execute('begin transaction');
	db.execute("delete from url where title = '" + e.rowData.title + "' ");
	db.execute('commit');
	db.close();
});

 これはtitleでけしているけど、これだと同一タイトルの時に、DBからまとめて削除されてしまう。
 データは、ユニークなIDを振って管理したほうがいいかもしれない。

Titanium Mobileで見た目にちょいと気を使ったTableViewを作ってみた。

 背景の変更等は昨日の日記に書いてあるので省略。
 背景をセンス無いなりになんとか書いてみたことの記録。使用したツールは SketchBook Express
 SketchBook Express - Autodesk Inc.


 画面のイメージはこんな感じ。ちょいと特殊なインターフェースのように思う。
 聖剣伝説のリングコマンドみたいな感じのメニューの出方がカッコイイ。
 スポイトツール(特定の場所と同じ色設定をする)の出し方がわからないとか、テキスト貼れないのか?とかいろいろと悩みつつ。絵を書くにはとても良いツールのような気がする。絵心が無いので、イマイチ評価できないのだけども。
 


 まあ、いろいろとやっつけで作ってみた。
 透過PNGを作ってやれば、右上のボタンのところももうちょっと全体の色調に合わせたものができるはず、なのだけど。透過PNGの作り方わからなかった。
 タイトル部分の文字の色の変え方がイマイチよくわからない。ここも画像にするべきなのだろうか?