2009年5月30日土曜日

リファクタリング・ウェットウェア



リファクタリング・ウェットウェア- 達人プログラマーの思考法と学習法
Andy Hunt著

を読み終えました。
楽しい本でしたー

夢を見たのに言葉に出そうとすると、なぜか言葉にできず忘れてしまったり...
集中して考えてた時には出てこなかった事が、トイレとかタバコを吸っていた時にふっと思い出したり...
誰でも経験した事があるような事なのに、なんでだろう? と不思議な事。

こぅいぅ事も脳の仕組みが分かった上で考えるとなるほどなぁー!って感じです。

本のタイトルにある ウェットウェア というのは 脳 のこと。
いわば 脳のリファクタリング ! 刺激的なタイトルですね。

Rモード(右脳)とLモード(左脳)がありますが、もちろん両方使う事が大事。
流れ的には RからLへとモード移行していくのが良いようなんですが、Lモードは意識的に切替できるけど、Rモードは難しい。Rモードにする方法...なども書かれています。

なにより凄いなぁーって思うのが、こんな脳科学者が書くような内容を達人プログラマーのAndyHuntが書いていること。
確かに、脳の専門家ではないから詳しい事は書いていないとは思うけど、こぅいぅ一冊の本を書き上げるぐらい考え、実践してきたのってほんと凄いと思う。

とうことで、プログラマー以外の人にもオススメです〜

最後に書いてあった一文。
さあ、ハンドルを握って。必要なものはすべて揃っています。アインシュタインやジェファーソン、ボアンカレ、シェイクスピアが持っていたのと同じ脳があるのですし、すぐに手に入れられる情報の量 - ニュースなどの事実だけでなく、人々がアタマの中で考えたフィクションやものの見方、考え方の量 - では歴史上の誰にも負けないのです。


これを読んで思いだしたのが、脳科学者の茂木健一郎さんがテレビで話していた言葉。
年齢を重ねた結果、脳の動きが遅くなるという事はありません。(面倒がったり、さぼっていたりしていたら別)。それどころか、色々な知識、情報を蓄えた脳を持っているために若い人よりも有利なはずです。


むむー!
• • •

2009年5月29日金曜日

42型は大きかった



テレビを買いました!REGZA 42C8000 42型です〜

やっぱ大きいのはいい事だ。モンハンも迫力でるでる。

AQUOSにしようかと思ったんですが、デザインがかっこ良くないんですよねー。
高機能なものを欲してたわけじゃないので、画面外の枠が小さく + 消費電力がすくない ものが選択の決定打になりました。
REGZAにしたのは、決して福山クンだからじゃーないですよw

「dデータ」なるものに感動。凄いねー 最近はこんなんが見れるんだー
「エコポイント」については良くわからんけどレシートは保存しとけって事かな。
• • •

2009年5月27日水曜日

リリカルLisp

魔法言語 リリカル☆Lispを、昨日と今日とで一通り終わりました!

いや、本当に為になりました。感謝です〜!
こんなソフト作っちゃうのが凄いです。

これはストーリー仕立てになっていて、アリサと、すずかがLispを教えてくれます。
章毎に問題が出されて、正解しないと次に進めない形式。
方言はScheme。

CARとCDRの所って、その前に文章で見た時はあんまし理解せずにさーっと読み飛ばしちゃってたんですがおかげで理解できました。
文字だって関数だってリストに入れることができ、CAR,CDRがあるからこそ 汎用性がでるし、発想次第では、こんなに簡単にできちゃった!みたいな事もあるんでしょうねー。

明日またもう一回、例題だけやり直しをまたしよっと。
そしてCommonLispに入門しなおします。。
• • •

2009年5月24日日曜日

Common Lispを試してみる

触ってみたかったLisp。ちょっと始めてみました。
色んなLispがあるようなんですが、CommonLispというやつで。

まずは環境を整える。
私の場合、MacOSXなのでMacPortでいれました。

sudo port install rlwrap
sudo port install clisp


rlwrapというのを使うと、↑でのヒストリーバックが使えちゃって便利。
起動は以下で行ないました。

rlwrap clisp


終了は

> (bye)

と書けばOK.

今回はTextMateで書いて、

> (load "ファイル名")

で実行して試していたのですが、)が足りない というようなケアレスミスをした場合でもエラーが分かりにくい (見る人がみたら分かるのかもしんないけど)
なので、本格的に書いて行くのであればエディタの機能のHELPは必要そうだなぁー

Ready Lispというのがあって、AquaemacsにSBCL、SLIMEなどを入れてすぐに試せるようなものがありました。
インストールしてみました。直ぐにCommonLispのコマンド叩いて実行はできました。。。でも、どうやったらどんな風に便利になるのかが分からなかった(笑)
まずはEmacsのお勉強が必要そうです...(汗

でー、まだ初歩向けの記事を読みつつコマンド叩いてへー!ってやってるぐらいなんですが、ちょっと今混乱しているのが 関数とマクロ。
printってのは、関数ですよね?
loopってのは...これは 関数? マクロ?

何か書いて慣れてみてから、一通りの基礎が書いてある本でも一冊読み切ってみる必要があるなぁーって思うけども、どんなものに向いている言語なのか? どんなもの作るか? があんましまだイメージできてない。

今の所のイメージとしては、マクロをガンガン書いておいて、本来の処理を楽に書けるようにする...のがいい使い方? って思ったりしてるんですが..どうだろ?
となると、なにか...自社製品とかの開発のような長期間に渡って大量のコードを記述するようなものとかに向いているのかなぁ

...なんて考えつつ、これからどぅ勉強するかなぁ? もぅアプリ作りつつじゃないと頭に入んないや って思っていたら魔法言語 リリカル☆Lispなんてのを発見!
★「魔法言語 リリカル☆Lisp」はノベルゲーム風のLispチュートリアルです。 "アリサ"や"すずか"達と楽しくLispを学べます。 全12話構成で各話の最後には練習問題が用意されています。

あー なんて素敵♪
Windows用っぽいのが残念ですが....Windowsマシンに移動して見させて頂きますよー!
という事で次回はこのアプリを見てみることにしますデス。
• • •

2009年5月18日月曜日

AIR GEAR-次はFormatterとコード補完

先日のリリースで、簡単なデバッグ実行を組み込んでみたAIR GEARですが、次はFormatterとコード補完。...ってことで、今週末に少し進め始めました。

Formatterは
コメント部分と文字列部分を除いて、{ の数で階層を判別、インデントを作成。

コード補完は、
FlexSDKに含まれているソースのクラス名のみを補完+import文の生成。
MXMLの外部ASファイルの場合には、MXMLのGUIコンポーネントについても補完対象に。

コンポーネントのイメージを表示して分かりやすくしてみたww

ここまでやってみたのですが、やっぱり構文解析しないと中途半端な感。

Formatでは、インデント以外の...例えば「カンマの後ろにスペースを入れる」などのようなものは、構文が解析できてないとできない。

特に違和感感じるのが、ActionScriptのコード補完。
MXMLのGUIコンポーネント情報が補完できるのに、自分自身のASファイルの変数やfunctionは補完してくれないのは、やっぱおかしいですよね〜。

構文解析をしなくても出来そうな所をポチポチ組み込みしていたのですが、もうやんなきゃダメそうです。

ということで、今日は旦那の協力の元、ANTLRを見ていました。
ANTLRを使ってるFlexFormatterのソースを有り難く見させてもらって中を見ていたのですが...ANTLRが出力したParserを見ようとして膨大な行数にびっくり!
でも、grammarを見ると言語の勉強になりますねー。

AIR GEARでは、細かい所まで構文解析をしたり、文字変更時のリアルタイムにエラーチェックをしたり...って所までは特に考えていません。今は。
或る程度のFormat、コード補完ができればよし!かな と。
AXDTのようにIMP使うといいんでしょうが、それはまた先の話。
それをする位なら、AXDTのNatureを追加できるようなActionを追加してあげるほうがいいだろうな。。

さて...そんな最低限のFormatとコード補完機能...も道のりは大変そう。
でも私がAIRアプリ作る際にはそれで十分なので、アノ有料製品を買わなくてもイイかも♪

この機能の次は、個人的趣味が入りますが、
FlexUnitなどのテストを行なえるプロジェクトのWizardの作成とか...ANTでのビルド定義の自動出力とか...あわよくばMavenでビルド定義書けないかとか...見てみたいなぁ
• • •

2009年5月16日土曜日

自宅で眠っているDELLさん。

最近、会社での開発でマシンが遅い~と感じ始めた。
今日メモリを増やして試してみたんだけど、早くなった!って感じがしない。確かに、CPUを使う処理が多しなぁ。
まぁ、しょーがないなぁーって感じの処理はさせてるんですけどもね。。

んで、前職では会社に持ち込んでいた Dell Dimension 8400が自宅でほぼ眠っているので、もう一度このスペックを再確認。

CPUは Intel Pentium 4 CPU 3.20GHz * 2。

メモリは2GB.
種類はDDR2-SDRAM (NON-ECC PC3200)というのらしい。古い??
スロットは4つあるが、512が4枚刺さってて全部埋まってた。

ディスプレイは RADEON X300 Series というのらしい。
よくよく見ると、いつも使ってたアナログ端子の横に、デジタル端子らしきものが並んでる。
およー、デュアルディスプレイできたんか。初めて知った事実(笑)

メモリを4GBに増やしたらそこそこいいマシンになったりしないっすかねー。
ハードには疎い私なんですけど、なんかもったいない気がして。

一昔前だったら、自宅のサーバ機に!って思うけど、今ってホスティングサービス使うから特にいらなくなった。
しかも見かけが可愛くないときたもんだ ← Macにヤラレ中

会社に持っていけそうだったら持っていくのも考えてるんだけど。。。会社でデュアルディスプレイするならディスプレイもう一つ買わないといけない。
・・・けど、もしサクサク開発できるなら購入価値はあるかな。

今度、会社でしている同等レベルの処理をしてみて挙動を試してみるかな。。
あ、そもそも会社には置く場所ないかもしれん。うーむ。。
• • •

2009年5月13日水曜日

AdobeAIR開発について話して来た

OPEN TONE IT Technical Seminer V10 (2009)にてAdobeAIR開発について話してきました!

本当はAIR GEARでお話を始め頂いたのですが、時間は50分とそこそこ長めだったので基本はAdobeAIRについての説明で行い、デモをAIR GEARで行う構成で。
デバッグ実行をするタイミングが無くて残念でしたが...ww

デモは、
・多角形ウィンドウを作ってみる
・データ永続化をやってみる
・TwitterのPublicタイムラインのXMLをでテーブルに表示してみる
というのを用意してたのですが、一番最後のものは時間も少ないなかったため断念。

最初のデモは、我が家のうさうさに登場してもらいました!
こんな画面を作ったよ!

今日は.NETの話もあったので改めて思ったのですが...Javaでも.NETでもAIRでも出来る技術で同じものが揃ってきてますよね。
HTMLを表示するコントロールとか、タスクトレイでの表示とか...上記3つとも実装できる仕組はある。
多分、今後も機能はより同等になっていくだろうから機能による差別化ってほとんど無くなるんだろうな。
あとは、どれだけ簡単に実装できるか? ですが、
これはもはや優秀なIDEがあるか? って所かな。

いや...その前に、簡単に実装するために、ブラックボックスを増やす方向でなくて、優秀なIDEを作る方向に進んで欲しいな なんて個人的には思う。
• • •

2009年5月10日日曜日

GitやAssemblaをみて思うこと

Gitが最近盛り上がって来たみたいですねー。
記事などたくさん見るようになってきました。
そしてGitHubに移行している人も結構多いみたいですね!

Gitは確かに便利。
自分一人で作っているモノではいらないかもしれないけど、複数人でやっている時にはすぐに使える環境があったら絶対使うな。。。って思う。
つーか、SVN/CVSと接続できるGitローカルリポジトリの環境を自分でちゃんと用意しとけ!っですね...お仕事の環境でも、作っとかなきゃ。

まぁ...それはさておいて。

Assemblaってサービスご存知でしょうか?
SCMのホスティングサービスです。ソースを一般公開してOKならば無料で使えます。
私はこのサービスに結構お世話になっていて、ASlimTimerのリポジトリ&チケットとAIR GEARのチケットの登録で使ってます。
チケットはTracのものも使えますが、専用のチケットシステムもあって微妙にお気に入り。
何がお気に入りかって、チケット名の文字サイズが大きいのが心地いいww


AssemblaでのRepositoryの選択では以下の種類から選べるようになっています。
  • Source/SVN
  • Source/Git
  • Subversion & Trac
  • Git & Trac
  • Mercurial & Trac
  • External Subversion
  • GitHub

GitもMercurialもある!!これだけでも、へぇーって感じですが、他に
Collaboration Toolsとして、「wiki」「chat」
Management Toolsとして、「Scrum」「Portfolio」
Otherとして、「Dashboard」「Twitter」「Webhook」
なんてのがあります。
「Webhook」ってのはcommitなどのタイミングにて、他サービスへ情報をPostするもののようです。


これらを見ていると、色んなサービスを繋げて個々人が使いやすいようにしていく人と、何もしない人では大きく差が開くよなって改めて思う。
そのニーズがAssemblaのツールの多さにも現れているんじゃないかと。

例えば、提供されたのがSVNだけであっても、Git-SVNを使う事だってできるだろうし、更新情報などの配信はメールだけじゃなくTwitterなどの他サービスで受け取ることもやれば出来る。
配信される情報量が増えて困るのであれば、Filterできるようなツールを使う(もしくは作る)ことも出来るわけだし...。
プロジェクト全体で統一してコレを使え!ってよりも、個々人の好みに合わせて選択するからSCMやBTSは一般的なものであれば何でもいいや...ってのが増えるのかもしれないですね。

私も最近作りたいなぁーって思うのは、自分好みのインターフェースの画面で既存の複数サービスを"つなぐ"ものだったりしている。
FriendFeedはそのいい例なんですが、今の自分のニーズとはちょっと違うんですよねー。
情報取得のための時間ロスを避けたい。開発効率をあげたい。いろんな記録をとりたい。
ってのが今の気分なんです。。。
• • •

2009年5月4日月曜日

AIR/Flex3でASDocを出力

AdobeAIRのソースでASDocを出力を試してみました。
ソースコードのコメントの記述からHTMLのドキュメントを出力してくれます。JavaでいうところのJavaDocと同じです。

ソースを出力するのは、
Flex3の場合 {FlexSDK}/bin/asdoc
AdobeAIRの場合 {FlexSDK}/bin/aasdoc もしくは {FlexSDK}/bin/asdoc +configname=air
を使います。

ちなみに、Linux/Macで使うaasdocのシェルスクリプトは改行コードがCRLFで提供されているようで、そのまま動かすと以下のエラーが発生するという罠がありますww

/bin/sh^M: bad interpreter: No such file or directory

改行コードをLFに直して使いましょー。

MXMLにて <mx:source="airgear.as"/> を使ってActionScriptファイルを指定している場合、どうやらASDocには出力できないようです。なんともまぁ....
上記の記述をしたActionScriptファイルはパッケージ名、クラス名がないので、ASDocにて出力をかけた時にビルドエラーが発生します。

col: 1 エラー: public 属性はパッケージ内でのみ使用できます。

って感じの。

この記述、私はめっちゃ多用しているので、ああー使えないなぁって感じ。
AIR GEARにもASDoc出力のメニュー追加しようと思ったのにな。

Flex Bug System:[SDK-782]Error when generating asdoc on an mxml file that references an AS script source に上がってます。
このチケットでは、Milestoneが「SDK Gumbo - Release」になっているのですが、根本的な解決をしたのか、excludeを出来る指定が追加されたのか...この記述だけでは分からないので、flex-sdk-4.0.0-4904 にてみてみました。

結果。。。。根本的な解決はないみたい。残念。
asdocのコマンドライン引数に、-exclude-sources [path-element] [...] というのが増えていたので、ここに指定しなさい...って事みたい。
[path-element]には、,(カンマ)区切りで複数のものが指定できるけど、*(ワイルドカード)の指定は出来なさそうでした。
んんー、キビシぃ。
しかも、ASDocを出力したいAS内で、excludeに指定しているASクラスを使っている場合、excludeで無視してくれないっぽい。

大規模なシステムでは、ASDocはいるだろうなぁー & <mx:source="airgear.as"/>のインポート機能を使うだろうー って思うんですけど、こぅいぅ事があるのであれば、始めに構成は考えておくのは必須っぽい。

<mx:source="airgear.as"/>を記述しているMXMLとASファイル は固定パッケージ内に納めるようにする。
ASDocで出力するクラスは、上記のクラスは使用しないようにする。
つまり...ASDocで出力したいクラスは、ライブラリ(swc)として作成し、参照関係もMXMLの方からライブラリを参照する一方通行にする。

んー、そんな事を考えさせたら大規模アプリが果たしてできるんだろうかねー。疑問だ。
Javaでは考えられない感じだなー。頑張れAdobeさん。
• • •

2009年5月3日日曜日

久しぶりにBBQ

久しぶりにBBQしてきました。
Jiemamyリリース直前記念BBQにお邪魔する形で。
色々準備して頂いて有難うございました。おかげさまで、”行って、食べる”だけで幸せでした。

そして、Jiemamy。今回は本当にリリースできそう!ということで、おめでとうございます〜♪
残念ながら、リアル土下座は見れなさそうですww

リリースしたら早速使ってみなければ。
複雑なSQLは、本当にJiemamyの管理下に出来てリファクタリング対象になれるのか?!
実際自分で手を動かして経験しないと、分かんないですしね。

コードも色々書き直して綺麗になったとの事だったので、コードリーディングするのもいいかも。

キャラクタが無いのが個人的に残念。
ねこび〜んみたいな可愛いキャラクタ...あればいいんですけどもね。
誰か作ってくれる人、いないもんでしょ〜か。

なにはともあれ、リリースまでもってくるのは大変だったと思います。
ご苦労様でした。そして、最後の追い込み(?)頑張ってください!!
• • •

2009年5月2日土曜日

日本の休日をiPhoneのカレンダーに表示

GWですねー。今日は何の日でお休みだっけ?と気になる週間。
ってことで、iPhoneのカレンダーに日本の休日を反映してみました。

(1)まず、カレンダーはGoogleカレンダーと同期します。iPhoneのカレンダーをGoogleCalendarに!

(2)PCのブラウザにて、Googleカレンダーに「日本の休日」カレンダーを追加。

(3)iPhoneのSafariにてhttp://m.google.com/ を開く。
日本語表示の場合、「言語を変更」でEnglishにする。

(4)「Sync」を選択

(5)「iPhone」を選択

(6)SharedCalendarsに出て来ている「日本の休日」にチェックしてSave.

これで、iPhoneのカレンダーに表示されました。
月表示のにて祝日の日の文字色が変わるとかなればいいんだけど、やっぱそれは無理なんかな。
• • •