Home > Archives > 2009-11

2009-11

Objective-C学習中

通勤中にヒレガス本を読んで、帰ってから課題の一つである文字列の入力とその文字数を数えるメッセージを出すというのをやってみた。場所でいうと「5.6 チャレンジ」(日本語版の場合p96、英語はp90)。

まずは素直に IBOutlet/IBAction を使うバージョン。NSTextField の outlet を二つ用意して、ボタンの押下を IBAction のメソッドで受ける。ついでに awakeFromNIB メソッドを定義してラベルの初期値を設定してみた。これは課題のページのすぐ前あたりでやっていることなので簡単。

さらに作りなおしてみる。Key-Value コーディングが面白そうだったので、がらっと違う方法で挑戦。

NSString を二つ(テキスト入力用、テキスト出力用)用意して、@property と @synthesize で setter/getter を自動定義。文字列の入力即文字数カウントとしたかったので、IBで入力テキストフィールドのContinuesを有効にして、setter だけ自前で書く。このへんでどハマり。

まず、NSString の更新ってどうなるんだっけ、と延々マニュアルをあさってみたりする。結局 textField = t; と単純なポインタ代入でよかったようだ。本当はその前にt を retainしたりtextField を release したり必要なはずだが、しばらくはメモリ管理は忘れたままでおきたいので、ガーベージコレクションをビルドオプションでつけて逃げる。

そして、あんのじょう値を直接更新したのに更新通知を飛ばしてしまい、willChangeValueKey と didChangeValueKeyに辿りつくまで長々と悩んでしまう。出力側のテキストの更新も少々悩んだが、こちらは self 経由で [self setLengthMessage:msg]; と @synthesize がつくってくれた setter を指定することで逃げた。

なんだかんだで2,3時間かけて課題完了。少しは勘所がわかってきた気がする。

NIBがないとわからないが、一応二番目の課題でつくったクラス AppController.h。

#import 

@interface AppController : NSObject {
	NSString *textField;
	NSString *lengthMessage;
}
- (id)setTextField:(NSString *)t;
- (int)countLength:(NSString *)t;
@property (readwrite, copy) NSString *lengthMessage;
@property (readonly) NSString *textField;
@end

ついでに AppController.m。

#import "AppController.h"

@implementation AppController
- (id)setTextField:(NSString *)t
{
	// set new textField
	[self willChangeValueForKey:@"textField"];
	textField = t;
	[self didChangeValueForKey:@"textField"];

	NSLog(@"%@ -> %@", textField, t);

	// update length message
	[self countLength: t];

	return self;
}

- (int)countLength:(NSString *)t
{
	NSString *msg;
	int length;

	// make message from textfield's length
	length = textField.length;
	msg = [[NSString alloc] initWithFormat:@"'%@' has %d characters.",
		   textField,
		   length];

	// set value using self-setter(automated)
	[self setLengthMessage:msg];
	NSLog(@"%@", msg);

	return length;
}

@synthesize textField;
@synthesize lengthMessage;
@end

これはヒレガス本ではない。ヒレガス本++だ。

ちょうどヒレガス本の日本語版が発売されていたようなので、何件かまわって購入してみた。原書で持っているだけに日本語で読めるというだけではちょっと買いにくいが、XCode 3.2/Snow Leopard 対応がされているというので「これはヒレガス本++とでも言うべき内容だ」と自分を納得させて購入。ああ、矢張り日本語で読むと楽だねえ(←そこが主眼だっだのか)

Amazon

先日頼んだ本が届いた。1999年のDTP本で、当時のソフトウェアのノウハウなどものっているが、欲しいのは基本がしっかり解説された組版を語る部分。楽しみだ。

ObjectiveCふたたび

ちょっとアプリケーションっぽいものの構想ができたので、実現可能かどうか軽くXcodeに手を出してみることにする。教本は以前買ってあったヒレガス本と荻原本。荻原本は言語としての解説なので、Cocoaアプリからせめるヒレガス本と実によく馴染む。

うーむ、例がうまく動かん。「もうそれ使ってないよ」「将来消えるAPIだね」とかそういう警告は無視するにしても、何故だーー。

ヒレガス本の英語が優しくて助かる。

「世界一を目指す必要があるのか」という無理解の被害

次世代スーパーコンピュータは「予算大幅削減」、凍結の可能性も

同会議の作業チームは2010年度の概算予算のうち、同事業に対する補助金約268億円について審査。「世界一を目指す必要があるのか」といった意見が出たという。

基礎技術の継続や、知見の継承を怠る政権などさっさと失脚してしまえ、と呪いたくなるね。何故日本で高度な艦船や高度な宇宙機が作れても高度な飛行機は作れないか、戦後の教訓を知らないのだろうか。

基礎も応用も技術はノウハウの塊であり、応用技術は基礎技術の蓄積の上に立つ。ノウハウは技術が継承されないと消えていく。紙の残った理論だけでは高度な技術の再現はできない。「応用だけでいい」と言えるのは基礎技術が誰かによりパッケージング化されて提供されている場合に限る。

かつて日本にも零戦とか色々開発できる位に航空産業があった。しかし戦後航空技術が禁止されてノウハウの継承が途絶えた。結果として、今は自動車会社が全くの「新規参入」で最初からやりなおしている程の細々とした産業になっている。

ましてスーパーコンピューティング事業はパソコンの高性能化同様進歩の著しい分野であり、一度止めたらそれを支える研究者が逃げ出し(彼等だって成果(=論文)が無いと生活できない)、そしてノウハウは継承されず(どこに行き先が?)、メーカーも部門を止め(優秀な人員が残るわけがない)、5年後に復活させよう、となった所で発展途上国より少しマシ、程度の能力になり、二度と世界最先端の争いには加われないだろう。

「二位以下でもいいじゃない」は通じず「一位を目指すか、最下位グループに落ちるか」なのだ。

そして、昨今コンピュータの計算能力はあらゆる分野で力になっている。

論文を出されてもわからない(本当はこれが基礎となり応用技術に繋がり家庭に反映される重要な点なのだが)という人のために地球シミュレータの利用成果報告からわかりやすい産業利用を引いてくると、2010年から抜きだしただけでもこんなにある。なお、内容はわかる範囲でわかりやすく改ざんした。

  • 製鉄用の高炉のCO2排出の削減 (新日本製鐵株式会社)
  • 遠心圧縮機の空力騒音低減 (株式会社日立プラントテクノロジー)
  • 次世代高速新幹線の騒音軽減 (東日本旅客鉄道株式会社)
  • 車の空力改善 (トヨタ自動車株式会社)
  • 高性能タイヤの開発 (住友ゴム工業株式会社)
  • 電力用半導体デバイスの開発 (財団法人電力中央研究所)
  • 有機EL等の発光材料の開発 (住友化学株式会社筑波研究所)
  • 二酸化炭素地下貯留のシミュレーション技術 (大成建設株式会社)
  • 新薬開発のシミュレーション (キッセイ薬品工業株式会社)
  • 機能性ナノ粒子の設計 (株式会社東芝)

もちろん、科学研究分野でも地球シミュレータ研究成果リポジトリ Earth Simulator Research Results Repositoryを見ると、現時点で8年間2691件もの研究成果が登録されている。

繰り返すが、コンピュータの計算能力は各種分野における力そのものであり、「応用だけでいい」と言えるのは基礎技術が誰かによりパッケージング化されて提供されている場合に限る。そして最先端の技術は理論はともかくノウハウは提供されるわけが無いので、基礎が無ければ応用ができるわけがない。

ここで「多少遅くても問題ないのでは」という人がいるかもしれないので、計算能力が力という簡単な例をあげておこう。

例えば天気予報。1日の計算をするのに3日かかったら予報にならない。1日で終わる計算にしたら精度が下がってあたりにくくなる。そして、科学の進歩は「今まで無視していた細かい計算をきちんとする」など計算能力をどんどん使う方向で進む。昔は地域でしか予報が出せなかったが、今はピンポイントの範囲で予想できる、ということができるようになったのも計算能力のおかげだ。

例えばゲーム。PlayStation(初代)でPS3並の絵を書こうとしたら、1フレームに半年かかる(時間は適当)としよう。けれども一回計算して絵にしてしまえば、後はポリゴンに貼りつけることで綺麗な背景になりゲームに出せる。高性能の計算機で1週間で1画面づつ作れるとしてもやる価値はあるだろう。実際に、Finai Fantasy VII はそうやって綺麗な背景を作っている。最近のゲームも、GIという方法であらかじめ膨大な光の計算をしておいて自然なゲーム画面にしているものがある。

このように、開発競争の中で半年〜数年かかると役にたたないが、1ヶ月〜数ヶ月程度ならかけられる、そういった問題は数多い。これが研究分野になると数十年かかるのを数年で、とかにもなりうる。計算能力があるからこそ新しく試せる事もある。

スーパーコンピュータはそういう分野に使うコンピューターの最高峰であり、使いこなすノウハウも持っていないと数十分の一の性能になってしまうピーキーな機械である。絶対に「他所から買えばいい」ではすまないし、そもそもいつでも売ってくれるかどうかわからない。高性能コンピュータが輸出制限されている(いた)のは伊達ではないのだ。

だから私は分野こそ違うが一時期院生として科学の片隅に触れた身として、この理由による決定を恨むし悲しく思う。

# じゃあ今の京速スパコン計画はどうなの?となるとまた別の問題だが…。それは別の話、いつかまた別の時に話すとしよう。

プレゼントはいつになっても喜ばしい

LAMY+Studio

少々早いが、相方からの誕生日プレゼントが到着。中身はLAMYの万年筆。

早速先に届いていたエルバンのインクをコンバーターで吸わせ、書いてみる。ずしりと重いので安定しやすい。手持ちでの物は一番重いので、赤ペンとして使っている数百円のプラスチックのものと持ち替えつつ使うと落差が凄そうだ。

書き味はまだすらすらとは行かない。これは手に馴染むまでしばらく使うしかないかな。インクはアンバー(オレンジ香)にしてみたが、濃淡が良く出て面白い。そして香りはけっこう強い。しばらく使い心地の変化が楽しめそうだ。

これで、ペリカン(青)、LAMY(アンバー)、プラ赤の3色態勢。そろそろ持ち運びのケースから3色ボールペンを抜いてしまっても良いかな。図をかき殴る時にはちょっと欲しいけれども、議論時にはホワイトボードを使うから大抵は机にあれば用足りるし。

Dictionary.app を Carbon Emacs から使う

面倒だったので、ニコイチして作成。買い物ログ別館の方だけでも良かったのだけれども、C-x C-y で lookup っぽく呼びだしたかったので、そのあたりのルーチンをひとりぶろぐの方からもってきた。

ニコニコ動画閲覧不能

どうやらリソースを res.nimg.jp から読むようにしたのが問題らしい。公式のヘルプ通りにやっても一向に改善せず。

Flashの設定(Adobeのサイトに行かないと変更できない)で、サードパーティにコンテンツを許可しなければならないようだ。

新プレーヤーが空白で見れないを参考に、適時ダイアログで確認してからサードパーティを許可するように変更。見られるようになった。

何もしていない(Messenger利用のみ)のWindows XP on VMWare Fusion版だとあっさり見られるので、もしかしてデフォルト設定に差がある?

Processing 言語で遊ぶ

最近ビジュアライゼーションをやっていないので、Processingを試してみることにする。画像、アニメーション、音楽を容易にプログラムするための言語で、Javaに変換して実行される。そのため文法も Java っぽい。

まずは、ダウンロードしてOS Xにインストール。起動してみるとソースコードを入力するエディタが出た。千葉商科大学政策情報学研究科 プレゼンテーション法の講義を参考にいくつか改造しながら試してみると、大体要領がわかってきた。結構素直で使いやすい。

はまった点が一つ。Processing で obsolete な関数を使おうとするといきなりウェブに飛ばされてしまった。シンタックスハイライトしている部分と、そのページにあるChangesを見比べたところ、どうやら framerate(30); という部分が frameRate(30); になるらしい。一文字なおしたら無事makeが通るようになった。

しばし、MSXを思い出しつつサンプルコードをいじって遊ぶ。うーん、楽しい。矢張り結果がすぐ絵と音でわかるプログラミング環境って素晴しいものだ。

Gallery of Computationを見ると、色々な表現とそのソースコードが入手できる。しばらくはこれで遊べそうだ。

しかし、その前にIDE環境を整える必要がある。折角OS X にはXcodeという快適な環境があるので、使わないのはもったいない。

まずはMac Dev Centerから最新版の Xcode を入手して、3.2→3.2.1にアップグレード。色々参考にして

  1. Java Applet でプロジェクトを新規作成
  2. /Applications/Processing.app/Contents/Resources/Java/core.jar を作成したプロジェクトの lib フォルダに放りこむ(CLASSPATHはどこで通すんだ…?)
  3. resource ディレクトリに Processing で使う画像やフォントを放りこむ。今回は必要なし

とまでやって後はアプレット風味で遊ぼうとしたところで本日は終了。面倒すぎるので素直にProcessing単体で遊ぶかも。

65円の良書

組版の本「明解 日本語文字組版」

Amazonで65円だったので、思わず注文してしまった。同人から手を引いているので実践の機会が無いが、組版には興味がある。仕事だとオーバースペックすぎる知識なんだけれども、まあ楽しいからいいか。

週間トロステーション

今日から日刊ではなく週間トロステが開始。ソフトウェアをPSNからダウンロードして、いざ引っ越し。

うーむ。トロが遊んでいる画面からメニューに移るのに音が遅い。時計マークの後に来るので反応したかどうかがわかりにくい。UIが自然な月面基地のうさぎさんにしては珍しいUIミスた。

場所はやっぱそこなのか(笑) プラチニャP会員になるつもりはない(どの道PSPでは利益が薄い)のでそのまま我慢してもらおう。初回はまあこんなものでしょう。明後日のクロ回からが本番かな。

楽釜製麺所 新宿西口直売店

楽釜製麺所 新宿西口直売店

新宿西口で、丼ものをやっていた店の後に出来た饂飩屋。製麺所直営の讃岐饂飩なチェーン店らしい。

釜玉うどんを食べてみる。素の饂飩に卵を乗せ、かけ汁をしたもの。見たところ、つゆはメニューによってかわり、店員の手元でかける、つけ汁、テーブルで生醤油、レジ後にかける、のパターンがあるらしい。エクストラな調味料は葱、生姜、天かす、七味、胡麻。生姜が山と盛れるのは嬉しい。注文から清算の間に天麩羅やおむすびなどもあるが無視。

麺が太い気がするが、コシがあり悪くない。牛筋肉ぶっかけなどもあるので、しばらく色々試してみたい。

WordPress Twitter Widgetを導入してみる

Velvet Unravelled » Twitter WordPress Sidebar Widget

さくっとサイドバーに導入。

不要パソコンを処分

リサイクル処分でパソコンファームに荷物を7箱ほど出す。中身は自作機、CRT、ビデオレコーダ等。送料だけで10kを越えたが。メーカーよりは安い。

ついでにパソコンラックまわりを整理して配線をまとめなおす。機材を抜いた分のケーブルが抜けたのと、タイラップでしばりまくったので、大分背面がすっきりとした。それでも混沌としている部分は…まあ仕方がない。

長年封印していたところなので、埃が酷い。できるだけ掃除したが数年たったらまた籠ってしまうのだろう。

この調子で本も減らせれば良いが、タワーを発掘して分類して箱詰めしてと考えると果てしがない道程が待っている。

RD-XS72Dバージョンアップ

5. 各放送波の信号が混合されているときやマンションなどの共同受信であるとき等での、地上デジタル放送の受信性能を改善しました。

な、なんだってー。これでもしかしてうちでも地デジ受信できますか?

…無駄でした。移るチャンネルでもブロックノイズが混じり音声がぶつ切れ。

Home > Archives > 2009-11

Return to page top

123