3月2007

徐々に理想的なコードに近づきつつあります

ActiveBasicもオブジェクトが参照型になったりしたので、徐々に簡潔なコードでプログラミングができるようになってきています。というわけで、本当は配列が戻り値のメソッドで実装してやるものですが、せっかくArrayListがあるので、ちょっとDirectoryInfo.GetFileSystemInfosを実装してみました。今のところ動かすとすれば、こんな感じのコードになります。ちなみに、GetFileSystemInfosはフォルダ内のファイルとフォルダを列挙するメソッドです。

#require <classes ¥System¥IO¥index.ab>
#require <classes ¥System¥Collections¥index.ab>
Dim dirInfo = New DirectoryInfo("D:¥SVN¥bin")
Dim array = dirInfo.GetFileSystemInfos() As ArrayList
Dim i As Long
Dim s As String
For i = 0 To ELM(array.Count)
	Dim fileInfo = array[i] As *FileSystemInfo
	s = s + fileInfo->FullName + Ex"¥r¥n"
Next
MessageBox(0, s, dirInfo.FullName, MB_OK)

実行結果:
GetFileSystemInfos

微妙にポインタが入ってしまっているのはまだ解決できないのですが、ForループではなくIEnumeratorを使うことは今も可能なはずです。しかし、実際作ってみるとMoveNextで無縁と思われるStringクラスでエラーが出てしまい、うまく動作してくれなかったので、とりあえずForループしています。あとは、For eachが実装されるかもしれませんね。

ホントはこのサンプルで、ファイル名の表示とFileSystemInfo.CreationTimeを使い、その作成した時間と一緒に列挙しようと思ったのですが、おそらくABのバグで、CreationTimeがうまく実行できないので、今回はサンプルに入れませんでした。まあでも、ライブラリが充実することはとてもいいですね。以前ならファイル列挙にAPIとかを使って自分で書かなければならない訳ですから、これとは比べ物にならないほどのコードを書かなければなりませんね。

そんなわけで、徐々にAB5.0の開発は進んでいるので、もうしばらくお待ちください。


余談ですが、Dim宣言のときに初期値が自由に入れられる言語仕様に変更されています。メソッドなどもDimのときに実行でき、さらに戻り値がはっきりとしている場合は、型を省略することができます。

Dim s = Asc("a") As SByte
Dim dirInfo = New DirectoryInfo("D:¥SVN¥bin") 'As DirectoryInfo

実はオブジェクトの生成の表記は短縮することができます。

Dim dirInfo As DirectoryInfo("D:¥SVN¥bin")

現在公開されているABを使っている人はおかしいことに気づくかもしれましれません。Newしているのに、ポインタではない点です。これは、オブジェクトが値型ではなく参照型になったことの影響です。デフォルトで参照型なので、Newで生成して使うところですが、下位互換と、デフォルトということなので上記のコードが同一になります。

ちなみに、どちらの表記が普通かといえば、後者だと思うのですが、私はAs指定の後のクラス名の後にコンストラクタの引数を書くのがあまり好きではないので、Newして記述するほうが気に入ってたりします。

Dim dirInfo = New DirectoryInfo("D:¥SVN¥bin")
Dim dirInfo As DirectoryInfo("D:¥SVN¥bin")

今はVistaでノートはきびしいかも…

近くにノートPCを購入しようと考えている方がいるのですが、その人はあまりパソコンに詳しくないので、私にどれがよいのか尋ねてきます。とりあえず、その人はカタログを見てVAIOのtype Cは見た目が良くていいと言っているので、普通にパソコンを使う分には、そういう判断でよいと思いました。

カタログを見てみると、CPU:CelelonM430(1.73GHz)/メモリ:512MB/HDD:80GB/OS:Vista HomeBasicといった感じで、値段は14万円と、このスペックにしてはちょっと高めじゃないのかなーと思って、「予算があるのなら買ってもいいんじゃない」と、言っておきました。

そして今日、電気屋を何店舗か回ったついでに、VAIO type Cも見てきました。写真で見るよりも、意外と分厚かったです。ちょっと動かしてみると、なんか重く感じます。エクスプローラでフォルダを開くと、ウィンドウの描画している様子が見えて、ちょっと気になります。長時間起動していて重くなっているのかと思って、再起動してみます。Vistaの割に起動スピードがXPに近い気がしました。いらない付属アプリケーションが多くて安定するまでに時間がかかるにしても、結構待たされました。そして、またウィンドウを開いてみましたが、あまり状況に変化はありません。やはり一回目や、初めて開くようなウィンドウは描画している様子が見えたり、512MBのメモリを積んでいるにしては、随分と動きが鈍い気がします。

こればかり試していてもしょうがないので、512MBのメモリを積んでいる他のPCでも試してみました。若干type Cより動作が速かった気もしますが、ほとんど変わりません。アプリケーションをほとんど立ち上げていない(スタートアップにたくさんあるかも..)にしては重いです。1GBのメモリを積んでいる20万円前後のノートPCはどうなのだろうと、それも操作してみました。さすがに1GBのメモリを積んでいると、結構世界が違います。アプリケーションを数個立ち上げるくらいの、軽くネットサーフィンをするくらいなら、十分快適なスペックです。

そういうわけで、私が見た感じではメモリ1GB以上積んだVistaPCがお勧めになりますが、現状ではちょっと値段が気になってしまいます。以前ほどではありませんが、PCのスペックの向上を考えれば、Vistaは先を見据えた設計でいいのかなーと思ったり、思わなかったり…

今はまだVistaのノートPCは買いではないと、そう思います。あと、Vistaがどんなメモリの使い方をしているのか、後でリソースモニタを観察してみよと思います。

iBookのメモリを増設しました

iBookは標準のメモリ(512MB)でも十分にパフォーマンスは確保できていると思いますが、やはり私のように、たくさんのアプリケーションを立ち上げていて、開発とかする人には、少し物足りなくなってきます。特に、ここ最近10.4.9にバージョンアップして以降気になっていました。メモリは高いので購入する気ではなかったのですが、探してみるとかなり安く売っているところを見つけたので、購入することに決めました。

SanMax

ここは非常に安価な値段でメモリを販売しているようです。iBook G4のメモリの空きスロットは一つですから、メモリを増設するときは最大の1GBを購入すると決めていたので、1GBを購入しました。12600円でApple Storeの半分以下の値段です。品質は謎ですが、今日届いて増設してみたところ、特に異常はありません。保証もあるので、その辺は大丈夫な気がします。

増設してみると、起動時間はほとんど変わらないものの、やはり使っていくうちに、以前よりかなり快適になったことが体感できます。特に、SpotlightやDashboardなどのたまにしか使わないアプリケーションもサッと出てくるので、非常に快適になりました。これくらいサッと出てくれば、かなり実用的になってきます。DashboardもSpotlightも重くて使わない人は、ぜひメモリを増設してみましょう。

メモリが十分にある動作を簡単に説明するとすれば、常にそのパソコンの限界のスピードが出ているという感じでしょうか。メモリが少ないパソコンをやっていると、たまに変なところで待たされますが、そういうのがない感じです。まあ、当たり前ですね。

さて、これでMac OS X 10.5 Leoperdを入れる準備もできました。外観から始まり、大きさ、重さはちょっと重いと思う方もいるかもしれませんが、キーボード、トラックパッドもマウスが不要なほど使いやすく、緊急モーションセンサや頑丈な造り、全体的に見てバランスもとれていて、本当にいいパソコンだと思います。MacBookの発売が目先にありましたが、iBookを買った選択は正しかったと思います。これから先、iBookとは長い付き合いになりそうです。

OS X用2chブラウザ BathyScaphe

Mac OS X用の2chブラウザも、当然Windowsのようにさまざまなものがありますが、私が愛用しているブラウザはBathyScapheです。そして、かなりお勧めできるブラウザでもあります。

BathyScaphe インストール

ファイルをダウンロードし、ディスクイメージが展開されたらアプリケーションフォルダにコピーすればインストール完了です。個人的な話ですが、私はアプリケーションの入っているディスクイメージを開いたとき、ちょうど上の画像のようなときが好きです。

BathyScapheはこんな感じのインターフェースです。結構シンプルにまとまっており、私は非常に使いやすいと思います。

BathyScaphe

詳しい機能は、BathyScapheWikiに詳しく書いてあるので、そちらをご覧いただきたいのですが、特にユニークな機能を紹介しようと思います。

ひとつは、簡易自動AA判定の機能です。AAを自動判定してどうするのかといえば、MacはWindowsとフォントが異なるため、例えば普段読むのに使うフォントと、AA用のフォントを見るときに使うフォントを分けたい場合があります。そこで、簡易自動AA判定機能というわけです。環境設定で、AA用フォントのところにmonafontなどを設定することにより、自動でAAに判別された書き込みの部分は、その設定したフォントで表示されます。簡易といいつつも、十分実用レベルで、なかなかいい機能です。

簡易自動AA判定機能

もうひとつは、次期バージョンに搭載予定なのですが、スマート掲示板リストです。スマートフォルダというのをご存知でしょうか?ファイルを検索して、その検索条件をそのまま保存したフォルダのことです。Vistaの検索結果を保存するのとほぼ同じようなものです。そして、スマート掲示板リストはスマートフォルダと同様に、特定の検索条件にあったスレッドを検索し、その検索条件を保存した掲示板リストを作成できる機能です。

スマート掲示板リスト 検索条件

例えば、以上の条件で作成すると、次のようなリストが出来上がります。

スマート掲示板リスト

ユニークな機能を紹介しましたが、やはりBathyScapheの一番の魅力は、基本的なところがしっかりと作られていて、どれも使いやすいというところにあると思います。コアなユーザーには少し機能が物足りないかもしれませんが、私くらいのブラウズするくらいの人には最高のブラウザだと思います。今時タブがないブラウザなので、要望が多数寄せられているようですが、私はタブを使いません。それは以前Safariの記事で述べた理由と同様です。

というわけで、私もいつかアプリケーションを作るときには、このくらいまでの完成度は保ちたいなーと、見本に出来るアプリケーションだなぁーと思いながら、毎日使っています。

ライブラリとWin32API

最近若干パソコンの使用時間が減少しつつあり、プログラミングの時間はそれ以上に減少している私ですが、今日はb17がリリースされたのを機に、久しぶりにActiveBasicを触りました。

とりあえず、FileSystemInfoクラスでやり残していたことをやろうと思い、”FILE_ATTRIBUTE_ARCHIVE”の値を調べるために、api_system.abpを見ていた訳ですが、どうも検索しても見つかりません。おそらく、定義場所が変わったのだと思って、いくつかファイルを開いても見つからないので、他の探す方法を考えていました。

ネットで検索すれば一瞬で終了してしまいますが、フォルダ内の全てのファイルから、任意の文字列を探すプログラムを作ることにしました。いずれ使い道が出てくるだろうし、以前も作ったことがあって結構便利だった気がするからです。

というわけで早速最新版のActiveBasicとライブラリで作るのに取りかかった訳ですが、意外に苦労してしまいました。一番は未完成なStringクラスが原因ではありますが、何か奇妙な感覚でしたね。どこが奇妙かと言えば、Win32APIと中途半端にできているライブラリのコードが、共存しているところにそれがあると思います。

ライブラリを使ってプログラミングする場合は、Win32APIをいっさい使わずにやってもらいたいので、ライブラリの充実は必須ですね。一応私が見た感じ、予定に入っているライブラリで、だいたいアプリケーションが作れますが、ネットワーク関連がないので、その辺を予定に組み込みたい気もしますね。

ところで、3週間くらい前の話題になりますが、文字列関連が複雑になってきたので、私も文字列への理解を深めようと、Stringクラスを自分で実装することにしました。今、最新のStringクラスや文字列関連のUnicodeは、全てイグトランスさんのすばらしい活躍の成果であり、私は一切関わっていません。

そんなわけで、今はStringの作成の途中でもあります。一応.NET仕様で作るつもりなので、よくできたら、どこかで公開しようと思いますし、もしライブラリで必要なStringクラスが、.NET仕様ならば、こちらに差し替えることも出来ますしね。

来年度、つまり4月からですが、以前ほどプログラミングに割ける時間が減少しそうですが、こつこつやっていけたらいいですね。

土台作り

本を読むことはいいことではあるが、それだけでは何にもならないというのは、ある程度本を読んでいる人なら分かることだと思う。やはり、本を読む価値というのは、それをベースに自分の考えを深めることに意義があると思う。もちろんそれだけではなく、他にもいろいろあるが、ここではそれは置いておくことにしよう。

そして、これは本の話だけではないと思う。何にでも当てはまることであると思う。たとえいい何かを、自分で体験や見聞きしただけでは意味がない。そこから何かを考えることに、やはり意義があるだろうと思う。もちろん、すぐにそうする必要はないと思うし、意外なときに、以前無駄だと思ったことが役立つこともある。

経験を活かすも殺すも自分次第ではあるが、やはりなるべくいい環境に身を置いて、いい体験や、ものに多く触れるべきだろう。前述した通り、無駄だと思ったことも役立つことがあるので、何をもっていいと考えるのかは難しいが、それでも、自分が必要としてそうな場所に身を置くことは、今後自分の土台を築く上で、非常に重要なことだと思える。

そういうわけで今私は、以前は少々軽視していた、自分を置く環境をよりよくするために、少しばかり頑張ってみようと思う。今、私は数年前の選択で、ある一点のことに関しては、決していいとはいえない環境にいると思う。とりあえず、今年は環境をよりよくすることに努め、自分の置かれている環境が今よりもよくなったら、どちらのがよかったのか、改めて考えてみようと思う。

というわけで、文旦です。

昨日友達のT君が家に来て、いつものことながら何か持ってきてくれました。毎度毎度ありがたくいただいておりますが、今回はいつもとはひと味違ったものが出てきました。

なにかなぁ〜と思って、袋の中をのぞいてみると、グレープフルーツっぽいものがひとつ入っていました。何か違和感があったので、袋から出してみると、それはグレープフルーツの形をしていませんでした。どこか違います。

文旦

こんなのが出てきました。何かなーと思ってT君にこれは何の果物か尋ねてみると、これは誰かからもらったもので、それをうちに持ってきたとのこと。つまり、T君も何の果物かわからなかったのです。

しばらくたわいのない話をして、またこの果物に話が戻りました。何やら、この果物の名前が4文字だったことをT君は覚えてるらしいです。そして私もちょっと柑橘類で心当たりがあるとすれば、以前ブログでコメントを下さった、NoWestさん在住の高知ではよく食べられているという柑橘類。名前はその時忘れていました。

適当にT君に「それって高知の食べ物?」と尋ねてみると、そういえばそんなことを言っていたなぁ〜という回答。意外にも、あの高知でよく食べられている果物という可能性が非常に高まりました。せっかくなので、すぐにブログのコメントを覗いてみると、そこには文旦と記されていました。

なるほど文旦という名前だったことを思い出し、すかさずT君に尋ねてみます。しかし、名前はとうとうはっきりとは思い出せず、文旦だったかなぁーというくらいの回答。というわけで、Wikipediaで文旦を引いてみました。

ブンタン – Wikipedia

写真付きですので、間違いなく文旦ということがわかりました。なんという偶然でしょう。文旦なんて食べる機会はないだろうと思っていましたが、思いがけないところから転がってきました。

文旦ってちょっと面白い形をしていますよね。文旦を近くで振り回すと、柑橘類のにおいがするというよりは、柑橘類は抑えめな、ほんのりあまあまな感じの香りがして、かなりいい感じです。T君によると、まだすっぱいらしいので、1週間後くらいが食べごろらしいです。中はどうなっているんでしょうね?そして味も気になります。これで1週間後にちょっとした楽しみが出来ました。

WordPressにはてなブックマークを追加しました

今日はこのブログにはてなブックマークを追加してみました。最初は、適当なところにコピペの予定でしたが、各エントリごとのURLを取得しなければならないので、PHPを使うことになりそうでしたが、面倒なのでプラグインを探すことにしました。

検索してみると、やはりプラグインが見つかりました。WordPress エントリをはてなブックマークに登録 – wp-hatena プラグイン正式版 – リリースにあります。zipを解凍して、プラグインのところにアップロードするだけで簡単です。

そして、はてなのボタンを表示したいところにPHPのコードを挿入するわけですが、PHPのわからない私は、ちょっとばかし探すのに苦労してしまいました。テーマエディタで「インデックス」のところを編集するのはあたりまえですが、各エントリごとのページは「シングルポスト」というところを編集します。どちらもh2タグのところが一カ所だけあり、そこがエントリのタイトルになっているので、その後あたりに挿入するのが簡単です。

ところで、このプラグインには、はてなブックマークへの追加ボタンはありますが、はてなブックマークから参照されている数をあらわす、「–users」というのを設置するものは含まれていませんでした。ですので、ついでにこのプラグインを参考に作ってみました。

上のプラグインに含まれる、wp-hatenaのフォルダの中のwp-hatena.phpに、次のコードを挿入してみましょう。

function addBookmarkedURLFromHatena() {
		echo '<a href="http://b.hatena.ne.jp/entry/' . get_permalink() . '" target="_blank">';
		echo '<img src="http://b.hatena.ne.jp/entry/image/'. get_permalink() . '" style="border: 0;margin: 0;padding: 0;margin-right: 8px;vertical-align: baseline;" /></a>';
}

これで、addBookmarkedURLFromHatenaをコードに挿入することにより、「–users」というのを追加することが出来ます。例えば、下にのようなコードをindex.phpに挿入することにより、はてなブックマークへ追加のボタンと、「–users」の表示をすることができます。

< ?php if(isset($wph)) {$wph->addHatena(); $wph->addBookmarkedURLFromHatena();} ?>

最近WEB系のものに多少興味を抱いているので、何か機会があればWEBプログラミングでもやってみたいですね。あと、AdobeがflashなどのWEBで使われているものでデスクトップアプリケーションを作成する、Apolloなんてものもでてきたので、これはちょっと注目したいですね。

QuickSilver

この前どこかで紹介されていたQuickSilverというソフトを試してみました。結構有名で、使っている人も多いソフトですが、一応説明としては、多機能なランチャーソフトでしょうか。

基本的に、cmd+spaceでランチャーが表示されますが、cmd+spaceはデフォルトでspotlinghtや入力切り替えなどに割り当てられているので、設定を変更して、alt+spaceで使うことにしました。

QuickSilver

上の画像のようなウィンドウがちょっとしたエフェクト付きでサッと表れ、立ち上げたいアプリケーションの名前を入力します。インクリメント検索なので、途中まで入力するだけでアプリケーションが表示されます。例えば、上の画像のように”IT…”と入力してると、瞬時にiTunesが表示されます。ここでReturnキーを押せば、iTunesが開かれる訳です。

しかしこれだけではありません。ウィンドウの上にiTunesという表示があるのに対し、下のActionという項目があります。ここではOpenとなっているので、iTunesが開かれるのですが、”IT…”と入力してiTunesが出た後に、tabを押して、下にフォーカスを当てると、Actionを選ぶことができ、iTunesに対するさまざまなActionをすることができます。基本的にものはどのアプリケーションも共通ですが、プラグインを入れることにより、iTunesなら、それ独自のActionを実行することが可能になります。

QuickSilver - Action

このランチャーの特徴は、非常に多くのプラグインが用意されており、拡張性に優れいている点です。基本はランチャーなので、最初にアプリケーションを検索するところではアプリケーション名を入力しますが、ここもプラグインを追加することにより、アプリケーション以外にもさまざまなファイルなどを引っ掛けることが可能です。例えば、Safariなどのブラウザのブックマークや履歴、アドレスブック、メッセンジャー、iTunesのプレイリストや曲、そしてそれらのActionを実行することで、ブラウザでページを開いたり、アドレスブックを見たり、曲を流したりすることが可能です。

Quicksilver
“Hate…”と入力するとブックマークが表示され、OpenでWebブラウザで開くことができる。

QuickSilver
“goo…”と入力し、tabでActionに移りSearch For…を選択、さらにtabを押して、Objectに検索ワードを入力することにより、googleで検索をサッと行える。

プラグインはこんな感じのものから、ペーストボード拡張や計算機など、ちょっとしたアプリケーションのものもあり、かなり多様に存在しています。まだまだ知らないプラグインもたくさんあると思うので、便利なものを見つけていきたいですね。

ところで、このQuickSilverはひとつ気になったことがあります。それは、日本語入力が難しいということです。最初のアプリケーションの名前を入力するときに一応日本語は入るのですが、変換がスペースではできなかったり(下を押すことでできる)、押したキーそのままの英語の検索結果も同時に表示されたりして、使いやすいとは言えません。そのあたり、今後に期待したいですね。

その問題点を差し引いても、漢字変換のように、よく使うアプリケーションは優先的に表示されるように学習したり、インストールの時の「次へ」をやるときにウィンドウが回転するエフェクトや、ランチャーのウィンドウの表示する時や消滅するときに、またウィンドウの滑らかな動き等、細かいところも作られているソフトなので、かなりすばらしいと思います。Vistaでは改善されているかもしれませんが、Vista以前のWindowsだと、ウィンドウに対するエフェクトや動きを滑らかにするのが非常に難しいと思われるので、このあたりはMacのが有利かもしれませんね。

電源プラグが良く抜けます

最近デスクトップPCの電源が良く抜けるというよりは、コードの重みで軽く抜けてしまうようで、電源が落ちてしまいます。これだと安心してPCが使えないので、早めに何かで対処したいですね。編集中のデータが吹っ飛んだりするのは嫌ですからね。HDDにも悪そうです。