2009年2月28日土曜日

Vista再導入、Linuxに近い作業環境を整え始める

前回ノートPCが逝ってしまいあえなく中断したVistaの導入を再開した。例のノートはやはり壊れたようなので、デスクトップに。実は以前からLinuxの母艦にもVistaも一応入れてあった。パーティションも30GBほどしかなくVistaをインストールしただけの状態のままほとんど起動もしていなかったが。
今回母艦上でVistaをいじくって分かったのは、聞いていたよりよっぽど快適だという事。ノートの方はちょっと古かったのでパワー的に問題があったが、まだ一年程度のデスクトップだと、ディスプレイも24"あるし、とても快適。メモリ使用状況などを見てもそれほどギリギリという訳でもない。細かい不満はあるものの、Linux上でよく使っているものも結構準備できそうだという事が分かったので、そのあたりを揃えてみる事にした。

ということで、また別のマシンで設定するかもしれないのでやった事をメモだけ。

・readyboostのためのUSBメモリを差して設定。このマシンではあまり必要ないかも。
・Lhaca+デラックス版導入。圧縮伸長ツール。
・keyswap導入。キーの交換。CTRL<->Caps_Lock, Henkan->Muhenkan, Alt->Escなどいつものもの。istaでは管理者権限で実行しないとだめ。
・7-Zipポータブル版導入。圧縮伸長ツール。
・Firefoxポータブル版導入。USBメモリからフォルダをコピーしただけ。
・Gimpポータブル版導入。同上。Photoshopみたいなの。
・Inkspaceポータブル版導入。同上。Illustratorみたいなの。
・Scratch導入。同上。
・SmatraPDFポータブル版導入。同上。Acrobat Reader8だけは以前入れてあったので必要ないか。
・SKKIME導入。SKK-JISYO.Lも導入して設定。IMEのデフォルトもSKKIMEに。
・Google Earth導入。Linux版は動きが悪かった。今回はじめてVistaで試したが快適。
・SkethUp。Google Earthのついで。まだ使ったことはない。
・explore2fs導入。ext2(3)パーティションからファイル読み出し可能に。
・NTEmacs + apel + SKK(DDSKK) + SKK-JISYO.Lを導入。SKK-JISYO.LはSKKIMEと同じものだが、どうもSKKIMEはファイルの中身を変えてしまうようで共用するとおかしくなるので別にした。
・Emacsのstartup.el内で自分で選んだ場所をホームディレクトリに設定。(setenv "HOME" "...")
・.emacs, .emacs.d/* の設定。Linuxで使っているものを一部修正した。キーバインドも一部修正。
・bashの導入。.bashrcの設定。PATHやPS1、aliasなど。Emacsのshell-modeで利用できるように設定。これでLinux上と同様のmulti shellが使えるようになった。
・pLaTexの導入。「LaTeX2ε美文書作成入門第4版」付属のCD-ROMから。WinShellは入れず。bashのエイリアスでxdvi, dvipdf, xpdfなどで各ツールを起動できるようにした。思った以上にスンナリ導入できた。
・Python2.5.4の導入。python-mode.elも導入。面倒なので.emacs.d/に置いた。python実行ファイルのパスの設定も追加。これでEmacsからpy-shellでPythonが利用できる。
・numpy導入。Pythonで行列算など。
・scipy導入。Pythonで科学技術計算。
・PyQt4導入。
・matplotlib導入。MATLAB風ツールfor Python。Emacsのpython-shellからだとグラフ描画がおかしい。固まる。原因不明。ネット上でも一二件しか同様の問題報告が見当たらず、しかも解決策見付からず。困る。IDLEからは問題なし。なぜだ。
・gnuplot導入。なぜかEmacsのcomint-runからだと問題が。matplotlibの問題と関係があるかも。Emacs環境特異。プロセスとのやりとりの問題?文字コードの問題の可能性もあり。bashではそういう事があった。
・R + rpy2導入。統計解析ソフトとPythonインターフェイス。これもグラフ表示で同様の問題。
・VMware Player導入。vmware.comからダウンロードしてインストール。いつも思う、日本法人(というかなだの窓口?)の存在価値ないよね。
・Windows XPのVMware用イメージ導入。これまでLinux上のVMware workstationで使っていたもの。とりあえずOffice 2003とか入っているので当面必要。
・VMplayer用Debian lennyのイメージを導入。vmware.comのappliance集からダウンロード。aptでとりあえず必要なパッケージを追加。いざとなったらこのLinuxに逃げ込めるようにしておく。

この位までで一息。
そして、耳にした事はあったが良く知らなかったMinGW(Minimalist GNU for Windows)を導入する事にした。cygwinは仰々しくてやだなぁと思っていたが、こちらはwin32ネイティブで導入ももっと手軽そうなので。いくらbashだけあってもgrepだのdiffだのそういう細かいツールがないとシェルの威力も半減だし。

・MinGW導入。ただし、g++を選択すると展開エラーでインストールが異常終了してしまう。仕方ないのでコンパイラはgccのみ。しかもversion 3.x。
・MinSys導入。MinGWの片割れらしい。開発環境となる細々したコマンド類。
・.bashrcでパスを通してEmacsのshellモードから使えるようにした。どうせEmacsの中からしか使わないので、Vistaの環境変数はあまり触らない。MinGW, MinSysのパスは前に入れる。そうしないとfindコマンドとかvistaのアホfindを先に見付けてしまう。EmacsからもM-x grepできる。これないとほんとに不便。

このあたりで力尽きる。
今後整えていきたいもの。

・Office 2007。そもそもこれが必要になりそうだったのでVistaを導入。購入はしばらく先になりそう。
・Adobe Creative Suite導入。CS2があるので。Acrobatだけは結構使う。これまでVMware上のwinxpで使っていたもののライセンスを移動予定。
・auxtexの導入・設定。LaTeX作業をもっと楽に。
・適当なRDBMS。pythonからアクセスできるもの。後々同じプログラムをLinuxでも動かせるようにどちらでも使えるもの。できればInterbaseのようにバックアップがファイル一つのコピーで済むような手軽なもの。Debianでapt-getでインストールできるもの。
・BeautifuSoup、DBIなど、Pythonの諸々のモジュール群。時々しか使わないようなものも入れると結構たくさんあるので少しずつ。
・mecabなどの形態素解析ソフトとPythonインターフェイス。
・gcc, g++。できれば最新の4.x系。gdbも。g++についてはSTLとboostも必要。
・そういえばGNU nanaのようなassertionツールも欲しい。
・CVSなどバージョン管理システム。Emacsインターフェイス。
・CherryPy導入。Pythonが動けばほぼどこでも動くらしいので多分問題ない。
・いっそVisual Studio入れてvisual c++使ってみようか。折角なのでPythonの拡張モジュールもコンパイルできる環境にしたい。
・辞書。そういえば最後に買ってから結構経ってるので新しいものが出ていないかチェック。Emacsのlookupで検索できるようにする。
・新たに見付けたkeyhacの導入。キーバインド変更ツール。しかもPythonスクリプトで設定できる。キーと文字のバインドだけじゃなく、キー操作にプログラム呼び出しまでバインドできるらしい。大分前にunixで使っていたscwmを思い出す。scwmはもう消えて存在しない。確かScheme Configurable Window Managerというのが正式名だったか。Schemeプログラムでウィンドウマネージャーの操作を色々できて、ほんとに便利だった。keyhacはそれと同じような事ができそう。まだ触ってないが是非とも試したい。

調べないといけないこと。

・unixのcronのようにプログラムを定期的に自動実行する方法。
・Emacsのpy-shellからだとmatplotlibやrpy2などからウィンドウを出すと一度でかたまり戻ってこなくなる問題の回避方法。Emacsとプロセスとのやりとりあたりが怪しい?Windowsの中身よく知らないので分からない…

しらべてみようかなと思うこと。

・windowsの内部全般。まじめに勉強したことないけど、やはり多少は知っておくべき。
・Pythonのwin32モジュールの使い方。使えると便利そう。

メモだけなのに随分長くなった。全部じゃないけどこれまでやったことを大体書いた。
別のマシンで同様の環境作る時のためでした。

2009年2月23日月曜日

遅ればせながらVISTA導入、そしてVistaマシン逝く・・・

備忘録代わりのメモの積もりだったのがなんとなく日記のようなものになりつつある・・・

さて、このところようやくVistaをまじめに使ってみようとしている。
自分は使いたくなくても、主にMS-OfficeのためにWindowsを使わざるを得ないことが多い。これまではXPの上でOffice 2003を使っていたが、どうやらそろそろOffice 2007を用意しておかないといけないかなという状況になってきた。ならばもうこの際なのでVistaも使おうかと。本当はやり過ごしてSystem 7に移行したかったんだけど。

これまでXPは古いマシンと母艦のLinux上のVMwareの中で使っていた。今回はせっかくなので最近あまり使わなくなったPentium M 1400MHz 1.5GBmemのノートに入れてみた。
インストールは問題なく済みその後あれこれいじっていると、いつまでたってもなんだかディスクをがりがりやっている。そのせいかどうも必要以上に遅いような気がしたのでネットを漁ってみるといろいろと高速化のための設定があるらしい。なんたって「Vista」で検索するだけでGoogleが「高速化」をサジェストしてくれる位・・・ディスクがりがりはどうやらファイル検索のインデクス作りのためにファイルシステムをなめているという事のようだ。今回入れたのはVista BusinessなのでAeroを切るというのは関係ない。
何をやったのか簡単にメモ。

・Windows Searchサービスをとめる
・ついでにいくつかサービスをとめる(SuperFetch, Telephony, Themes, あといくつか忘れた・・・)
・Readyboostを使う

結局この位だったのかな。Themesを停めたせいか、デスクトップの見栄えが多少味気なくなったが、軽くなったような気もする。
とりあえず少しは軽くなったようなので、officeはまた後で入れるとして、他に少しでも快適に作業できるように必要なものを入れて環境を整えていった。とりあえずは

・Firefox&Flashなどのアドオン導入
・NTEmacs導入、apel, skk導入
・猫まねき導入

Firefoxはインストールせずにポータブル版にした。
NTEmacsは初めての導入。Windows上で使えるEmacsというのは何種類かあるようで、日本ではMeadowが有名らしい。Muleのころに始まって、Emacs本家のコードを取り込んだりコントリビュートしながら今現在も開発が進んでいる様子。
今回選んだNTEmacsは本家のコードをWindows用にコンパイルしたものらしい。多分。普段はLinux上で本家のEmacs22を使っているので、それとのギャップがなるべくないものということでNTEmacsを選んだ。そして、日本語入力のためにSKKとそれに必要なapel。
なんだか大変そうだなぁと思いきや、ドキュメントの指示に従っていたら案外簡単に導入できた。Windows上で真正Emacs+本物SKKが使えることにちょっと感動。いろいろやってくれている皆さんに感謝。しかもこれってUSBに入れて持ち歩いて使えそう。

さて、Emacsだけでは意味がない。Windowsマシンを触っていて一番イライラするのはキーマップ。
普段はLinuxのX上でxmodmapでキーマップを変更し日本語キーボードを英語配列で使っている。さらにEmacsでdefine-key関数でキーバインドを変え、SKKで無変換、変換キーを親指シフトっぽく使えるようにしたりバッファ操作を簡単なキー操作でできるようにしている。

これまでもWindows上ではkeyswapというフリーのツールでCtrlとCaps Locksだけは入れ替えていた。
しかし、":"や"@"や"*"など、主に右手小指あたりの記号類が日本語キーボードと英語キーボードでは細かく異なっている。この違いがWindows上での作業をイラつくものにさせている。
それもなんとかしたかった。

それでいろいろ探してみると、やはり良いツールがあった。
keyswapの他にもChange KeyやXKeymacsなど、「キーを交換」できるツールはいくつもあるが、上に上げた記号類など、Sfhit押下や非押下時の文字だけを変更することはできず、用を足さない。xmodmapのwindows版みたいなものはないのか・・・と諦めかけたところで「猫まねき」というツールに行き当たった。
早速試してみると、一部多分バグじゃないかと思われる動きがあったものの、ほぼ求めていたキーレイアウトにできた!
Emacsのキーバインド設定もそれに合わせて若干手直しし、ほとんどLinux上のEmacsと同じ感覚で日本語入力ができるようになった。これで文章を書くだけならVistaでもできるじゃん。

あとはEmacsのshell modeでbashが使えたり、Python入れてpython-modeが使えたり、そうそう、Mozartも使えるようにしたいなぁ・・・そうそうpLaTeXも・・・なんて思っていたら・・・・・・

一生懸命設定したノートが逝きました・・・
これはディスクじゃない、本体っぽい・・・
設定のメモなんかもまだ外に出してなかったのでパァ・・・
一通り終わったらUSBに退避しようと思っていたけど、その前に、こんなあっさり逝くとは・・・しかもHDDもどうやら駄目っぽい・・・ほんとか?・・・
気力を失ってまだちゃんと確かめていないけど

ということで、すべては徒労に・・・

2009年2月22日日曜日

CherryPy本も到着

Scratch programming for teensと前後してあと数冊本が届いた。
まずは「CherryPy Essentials」。Pythonでウェブアプリを書くためのフレームワークであるCherryPyの本だ。これも随分待ってやっと到着という感じ。という事で少しずつ進めていきたい。いや、こういうのは一気にやるに限るかな…

もう一冊の本は積読になりそうだなぁ…こんなに厚くて重いとは思わなかった…
「Concepts, Techniques, and Models of Computer Programming」で、900ページ近い大部。
表紙のサグラダ・ファミリアからガウディ本とか頭文字からCTMとかCTMCPと呼ばれているらしい。SICPとしてお馴染のStructure and Interpretation of Computer Programsに比べられる事も多い名著のようだ。
SICPは学生時代に大変楽しく読んだので、これも読んでみたくなり発注しておいたのがやっと届いた次第です。
しかし時間あるかなぁ…

SICPと言えばScheme言語だが、CTMではMozart(Ozのサブセット?)を使っているようだ。これも昔触ってみた事があるが、こんな所で再会するとは思わなかった。その頃触ったことがあるものではOcamlが一番メジャーになったようだが、多分実験的なものとしてその後消えたものにLifeという言語があった。Ozも同系統だったような気がするし、もう消えたのかと思っていた。当時からEmacsを使ったインターフェイスがあったと思うが、普通にEmacsのメジャーモードとして作ってくれればいいと思うんだけど、何かちょっと特異な感じが...
まあ慣れるしかないか。
という訳で時間があれば、いや、そのエネルギーがあれば、少しずつ読みたい。

「Scratch programming for teens」が届いた

発注してから結構経つが、数日前にやっと表題の本が届いた。
今のところScratchについては英書としてこの本、そして日本語のものはアイデアブック、これら二冊しかないようだ。他にも各国語の本は出ているのかもしれないけど。

まだパラパラとめくってみた程度だが、アイデアブックとは趣きがちょっと異なるようだ。
アイデアブックは第一章冒頭で「あなたが小学生、中学生なら」なんてメッセージがあるので、子供でも自分で読み進められる事を考えてあるのだろう。紙もスベスベの上質紙でカラー印刷だ。
for teensの方はペーパーバックの本としては普通の紙で、白黒印刷。
内容的にも、各命令ブロックの説明など、リファレンス的内容も含まれている。
アイデアブックではその中で使うものだけにしか触れていないようだった。最初の導入としては必要なものだけに絞って説明する方が分かりやすいと思うし、成功していると思う。
大体の事は実際にいじってみれば分かるとは言え、アイデアブックを一通り終えた後もう少し網羅的な説明が欲しくなった時に「for teens」があると丁度良さそうだ。そういう意味では良い順番で手元に届いてくれた。

それで、また少しScratchをいじっていたが、また引っ掛かった事があった。

命令を繰り返すためのブロックはいくつか用意されている。
最も単純なものは「forever (ずっと)」で、いわゆる無限ループ。
for文的な「repeat [n] ([n]回繰り返す)」もある。
他に「repeat until [condition] ([条件] まで繰り返す)」と「forever if [condition] (もし [条件] なら、ずっと)」だ。
良く分からないのはforever ifだ。

ブロックは上下に他のブロックを接続する事で上から下に順番に実行されるようになる。
repeat [n]のブロックはそのブロックの内側のブロックをn回実行し終えると、その下に接続されたブロックが実行される。まあ普通の事だ。
foreverは文字通り永久に繰り返されるようで、終わらない。
そのためだろう、foreverブロックの下には別のブロックは接続できないようになっている。

forever if ~(もし~ならずっと)は、条件が成り立っていればその間続けられる、のかと思ったら、違うようだ。
永遠に「もし~だったら…」というのを実行し続けるということらしい。
言われてみれば「forever if~」なら「if~」を永遠に続けるって事かなと思う。
だけど日本語判の「もし~ならずっと...」はやっぱりちょっと変じゃないかな。
初めにこの文を見た時には、一度だけ条件をチェックして、それが成りたっていれば後は永遠に繰り返し処理なのかと思った。

「forever if [x = 1] ...」は、疑似コード風に書くと

forever {
if (x == 1) { ... }
}

となる。xが1ならば内容を実行するが、そうでなくなれば実行しなくなる。しかしまたxが1になったら実行する。Scratchでは色々なキャラ(スプライト)や背景のスクリプト辺が同時並列で動いているようで、別のスプライトなどが状態を変えるとそれに反応するということのようだ。
しかし日本語版の表記からはそういう内容を想像できなかった。
子供に使ってもらいたいものという事を考えると直した方が良いのではと思った。

ただ僕は時々自分でも自分の日本語感覚は変なのかもと思う事があるので自信なかったり...

SunbirdとThunderBirdでのGoogleカレンダーとの同期

GoogleカレンダーとSunbirdの同期でSunbirdはオフラインではカレンダーを見る事ができないのか...と書きましたが、間違いでした。まだ正式ではないようですが(実験的となっています)、キャッシュ機能があり読めるようです。ネット上にも読めないとか読めるとか色々あるんですが、ちゃんとオフラインでも読めました。

画面左側のカレンダー一覧で目的のカレンダーをダブルクリック(右ボタンからプロパティ選択でも可)して表示されるダイアログに「キャッシュ(実験的、再起動が必要)」という項目があるのでこれにチェックを入れます。
これで無事にオフラインでもキャッシュされたカレンダーを見る事ができます。

ところが、ネット上の情報を漁っていると、オフラインでも変更ができるとあります。
が、いくら試してもそれはできませんでした。
追加に関しては、例えばSunbirdにはじめからあるHomeというローカルなカレンダーに追加しておき、オンライン時にカレンダー種類だけ変更することでまあ対応できなくはないかもしれませんが、削除はちょっと無理ですね。これもメモ的にHomeに書いておくくらいしかできなそうです。
ということで、ひょっとするとこれも本当はできるのかもしれませんが、色々試したり設定を探した限りでもできませんでした。

今のところのファイナルアンサー(ファイナルじゃないじゃん...)は、「キャッシュを有効にしておけばオフラインでも見られるけれど、変更はできない」です。

ところで、メールソフトのThunderBirdにLightningというアドオンを入れるとカレンダー機能が統合され、さらにprovider for google calendarというアドオンを入れればSunbird同様にGoogleカレンダーを利用できます。折角なのでこちらの方がいいかな。

設定についてはこちらのページが参考になります。

2009年2月17日火曜日

PyQt4アプリにてscimで日本語入力

CherryPyの本が未だに届かないので、少しPyQt4を触ってみた。
PyQt4はC++で書かれたアプリケーション開発フレームワークであるQtのPythonラッパーだ。ちなみに開発元はTrolltechという会社だったが、Nokiaに買収されて社名が変わったらしい。アプリ開発用フレームワークと言っても、個人的にはGUIライブラリとしてしか認識していない。
さらに、Pythonのようなスクリプト言語で使えなければ触る気にはならないと思う。つまり目的はPythonでGUIを作ってみる事だ。

さて、環境は Debian GNU/Linux lennyで、Python2.5.2&PyQt4。
Python2.5.2ではユニコードを使えば日本語文字列も正規表現などでもちゃんと扱え、PyQt4のウィジェットにも表示できる。
早速二三サンプルを試してみたところ、ちゃんと日本語も表示できた。
しかし、日本語入力ができない。
普段Emacsの外のX環境で使っているのはscim-skkだが、ktermやFirefoxでは普通に日本語入力できているが、PyQt4アプリの上では入力できない。
ネット上を漁りながら適当に試していたところ、やっと入力できるようになった。

まず、 scim-bridge-client-qt4 というパッケージを入れる。
そして環境変数を QT_IM_MODULE=scim-bridge としておけば良いらしい。
もちろんscim自体のための環境変数設定 XMODIFIERS="@im=scim" はそのまま。

ということで日本語入力できるようになった。
考えてみたらまともなGUIアプリなんてMS-Windows上でVisual C++でちょっと書いてみた事があるだけで、Linux上では作っていない。はるか昔に、Sunのワークステーションでだったが、Xlib&Xtで作ろうとしてあまりの面倒くささにウンザリして止めたっけ...
せっかく良いライブラリが、しかもPythonから使えるので、一通りの事はできるようになっておきたい。

しかし日本語入力回りの仕組みはいまだに良く分からない。今回もscimとbridgeはどういう関係なのかピンと来ない。大抵はこんな感じで設定さえなんとかすれば使えるようになるので、いつまでもブラックボックスのまま。
まあ、何もかも知ろうとする訳にはいかないし、仕方ないか。。。

2009年2月16日月曜日

GoogleカレンダーとSunbirdの同期

これまた最近になって、USBメモリに入れて持ち運べるポータブルなソフトウェアが広まりつつある事を知った。
例えばここここにはそんなソフトウェアが集められている。
そこでFirefoxにもポータブル版がある事を知った。ポータブル版は、基本的にはインストールが必要なく(形だけインストール作業が必要だが、実際にはフォルダが作られるだけ)、フォルダをUSBメモリにコピーして持ち運べば、USBメモリから直接アプリケーションが起動できる。Firefoxは普段Linux上でも常用しているブラウザだが、MS-WIndows上でも使っている。ブックマークツールバーなどの設定がどこでも同じものが使えればいいなと思っていたのでこれは有り難い。しかも、どこかで共用マシンのブラウザを使ってうっかり何か情報を残してしまう事もなくなる。Gmailをチェックしてうっかりログアウトし忘れるような事があっても大丈夫だ。

他にも色々なソフトのポータブル版が存在する事に驚いた。
例えばPhotoshopに迫るとも言われるフォトレタッチソフトのGimpのポータブル版なんていうものもあった。Photoshopをそれほど使えるわけではないので実際にどれほどPhotoshopに迫るものなのかは分からないが、多分僕が使う程度の範囲であればその要求を充足するに十分なものだと思う。ちょうどPhotoshopの使い方をもう少し勉強しようかと思っていたところだが、やっぱりGimpにしようと思った。無料な上に持ち運んでどこでも使えるというのはとても便利だ。
これらをはじめ持ち歩けると便利そうなソフトをいくつか早速USBメモリに入れておいた。

そんなポータブルソフトの中に、Firefoxと同じくMozillaプロジェクトが開発しているスケジュール管理ソフトであるSunbirdもあった。SunbirdにはGoogleカレンダーと同期する機能もあると聞いていたので、一度は試しに使ってみようとは思っていたが、まだ触った事がなかった。Googleカレンダーは、ネット接続とブラウザさえあればどこでもスケジュール管理ができるので大変便利なんだが、時にはオフラインでチェックしたり入力したいという時もある。そんな時のためにオフラインソフトで同期できるものが欲しいと思っていたんだけど、さらにそれがポータブルという事になればそんなに有り難い事はない。

という訳で、Sunbirdポータブルを使ってみた。Firefox、Thunderbird、Sunbirdについてはちゃんと日本語版があった。
普通に起動すればOutlookなどと同じようなカレンダー形式の画面が出てくるので、その手のものを使った事があればすぐに使えそうだ。
とにかくGoogleカレンダーと同期できるようにしたい。

画面左側のペインの「カレンダーリスト」タブの中に、Homeというのがある。グーグルカレンダーのマイカレンダーに相当する部分のようで、初めはデフォルトのカレンダーとしてHomeというのがあるらしい。
そこで右ボタンを押すと「新しいカレンダー」というメニューがあるのでそれをクリックする。
すると「新しいカレンダー」というダイアログが表れるので、そこで「ネットワークのサーバに保存する」を選択して次へをクリック。
次の画面に「Googleカレンダー」という選択肢があるのでそれを選択し、「場所」としてXMLフィードのアドレスを入力して次へ。
このXMLフィードのアドレスというのは、グーグルカレンダーの設定画面の「カレンダー」でマイカレンダーの種類を選択すると下の方に出てくる「カレンダーのアドレス」という部分にある「XML」という四角いアイコンをクリックすると表示される「カレンダーのアドレス」というものだ。
次に、それに名前を付けるが、これはGoogleカレンダーで使っているものと同じにした方がいいだろう。
設定が終わるとSunbirdのカレンダーリストに新たなカレンダーが追加され、Googleカレンダーからデータを読み込んで自動的にSunbirdのカレンダーの中に予定が表示された。

これでSunbirdとGoogleカレンダーが同期されるようになり、オフライン環境でもMS-Windowsさえあればスケジュールをチェックしたり変更したりできる。
というわけで、さっそくSunbirdのフォルダもUSBメモリに入れておいた。

あとはケータイとも同期できればいいんだが...

ちなみに、ScratchもUSBメモリに入れてあり、持ち運んでどこでも使える。


追記:
書き忘れたが、Googleカレンダーとの同期にはSunbirdに「Provider for Google Calendar」というアドオンを入れる必要がある。「ツール-アドオン」メニューで表示されるアドオンダイアログで「新しい拡張機能を入手」をクリックすればSunbirdのアドオンのページにいくのでそこで検索すれば見付かる。

さらにとても重大な追記:
Sunbirdではオフラインではスケジュールを見ることはできませんでした...
すっかりキャッシュしてくれるものだと思い込んでました...
こうなると、ローカルインターフェイスとしての意味しかないからあんまり利用価値ないかなぁ。。。

とても重要な訂正(2009/2/22):
ローカルへのキャッシュできるようです。エントリーを改めて書きます。

2009年2月15日日曜日

「スクラッチアイデアブック」を一通りやってみた

さて、前回手元に届いた表題の本に一通り目を通しながら、実際にScratchでスクリプトを組み実行してみた。
ピコボードというフィジカルなモノがないとできない部分は残念ながらやっていないけれど。

まず最初に言いたいのは、Squeakでは感じた良く分からない抵抗がほとんどなく、Scratchには非常にスムーズに取り組めた事だ。このあたり、SqueakからScratchに発展する過程で、僕には明確には分からない所で色々思案された成果が出ているんだろうなと思った。

本の方も非常にスンナリ読み進む事ができた。何箇所か説明されないものがあり、コレは何だろうと思う点があったけれど、全体的には非常に楽しく進められた。一般的なプログラミング言語の場合、タイポなど、まあ道具の扱いという意味では非常に根本的な問題ではあるけれど、プログラミングの本質(と言っても、問われても明確には答えられないが...)には関係ない部分で足をすくわれる事も多い。この本を一通りなぞる間にそういう経験はなかった。子供やPC操作に熟練していない一般的な人が取り組む時、実はこういう「些細な」点は非常に重要だと思う。

一通り終えて、日本語の最初の本としては非常に良い本が出たなと素直にそう思えた。
ただ、今のところ一冊だけ、英語の本を入れても二冊しかない状況を考えると、「ゼロからの入門」のさらにその先へ橋を架ける内容も欲しかった。残念ながら今後もScratchの本が続々と出てくる事は考え難いから。(ところで「ゼロから学ぶ…」という副題はfrom scratchに引っ掛けてあるんだろうか...なんて思ったり)

今回この本をなぞりながらネットで調べつつ日本語版Scratchを使ってみて初めて知った点や気付いた点、若干気になる点もあった。

まず、Scratchはスクリプトでインスタンスを作れないらしい。
プロトタイプベースというのだろうか、クラス定義からインスタンスを生成するのではなく、具体的なインスタンスを作り、それを人間の手動操作で複製してはじめて別のインスタンスを作れるらしい。
本の第5章「シューティングゲームを作る」のところで、複数の弾丸(ビーム)を同時に使うにはどうすればいいのか考えている時に調べて知った。

また、メソッド(スクリプト片)には名前が付けられないらしい。引数もない。返り値もない。
メッセージもブロードキャストされて、特定インスタンスだけに送るという事はできないようだ。
このあたり、オブジェクト指向プログラミングの基本概念を教える事が主目的の一つになっているらしいAliceとは大きく違うようだ。
まあ、大域変数(全スプライト用の変数)とメッセージを使えばメソッド呼び出しっぽい事はできるわけだけど。変数を使って基底のチェックさえしてやれば再帰のような事もできそうだし。新たなローカル変数が自動的に生成されるわけではないのでできないか...
なんて事を考えるのは無粋なんだろうと思う。

日本語版については、コマンドタイルの日本語の文章がしっくりこないところが何箇所かあった。
例えば、配列の要素の値を変更するコマンド、「replace item [1] of [xx] with [thing]」という、配列変数の要素への代入が、日本語版では「[1]番目([xx]の)を[もの]で置き換える」となっているが、これは普通に「[aa]の[1]番目の要素を[もの]で置き換える」の方が良いんじゃないだろうか。今のままだと日本語としても気持ちが悪い。「要素を」が入ると長過ぎるかもしれないので、それは無くても構わないけど。

本を一通りなぞった後に、タートルグラフィックスっぽい事をして遊んでみた。再帰の問題があるのでフラクタル画像なんかはあまりやりたくはないけれど、ちょっとした幾何学模様を描いて楽しむ事もできた。

色々いじりながら、Scratchのターゲットはどういう層で、その層が成長した時にはどうさせたいのだろうという疑問がふと浮かんできた。
「本格的」にプログラミングに取り組みたくなった人や、あるいはアニメーションやゲームを作りたくなった人、そういう人達はこの後なにをすればいいんだろう。
もしプログラミング教育の導入としてScratchが使われた場合、その後どう導いてやるんだろう。
今回色々いじりながら、「マウスでドラッグ&ドロップして気軽にプログラムが作れる」わけではなく、ちゃんと考えながらやらなければいけないのは良く分かったので、しっかりトレーニングにはなるのだろうとは思ったけれど。

何はともあれ、非常に楽しく取り組めた。

2009年2月8日日曜日

「スクラッチアイデアブック」

というタイトルの和書が出た。サブタイトルは「ゼロから学ぶスクラッチプログラミング」。頭には「ゲームで遊ぶな、ゲームを作ろう!」とある。

前回書いたScratchに関する、日本人により日本語で書かれた初の入門書だ。別ルートで発注した英語の本の方はまだ届かないけれど、さすがAmazon、ポチった翌日には手元に届いた。素晴らしい。いや、騙され(るようにし)て継続中のAmazonプライムのお陰か...

まだパラパラとめくっただけだけど、「超簡単入門」からはじまって、シューティングゲームやロールプレイングゲーム作りなど、楽しみながらスムーズに進んでいけそうだ。プログラミングの導入教育の最初にこんなことをやってもいいんじゃないだろうか。
一般的なプログラミング言語を用いた教育では、特別に関心のある人以外は容易に挫折しそうだけれど、Scratchを使ったこんな授業ならそういう人も救われそうな気がする。
なにはともあれまずは自分で少しずつ読み進め、試してみたい。