2009年6月30日火曜日

org.eclipse.ui.commandsはナカナカいけるのね

Eclipseの3.3からActionではなく、Commandを使うのを推奨しているらしい。
Commandをつかわなきゃなぁーって思いつつ、ついActionを使ってしまってあまり試せていなかったので、今日ちょっと使ってみました。
なかなか便利ですねー。こいつ。

Commandの場合は目的によって綺麗にモノが分かれている感じです。
plugin.xml には、
  • commandの定義
  • Commandをどこに表示するのか?の定義
  • どんな処理を行なうのか?のHandler定義
...など に分かれています。分かれているからこそ、すっきりとした定義も出来、今まで出来なかったけど出来るようになった事!があるんですね。

例えば....
* commandを複数作成するがHandlerのクラスを1つで使い回すパターン。
 この場合、commandにcommandParameterを設定してHandlerから取得する ことで実現。

*メニューアイテムをOn/Off切替(チェックボックス)にするパターン
 command定義の子要素にstateを記述してHandlerから状態を取得して処理する。
 ここのtoggleの所

*複数のメニューアイテムをラジオの選択形式にし、1つのHandlerで処理してしまうパターン
 ここのradioの所

なんて事とか楽に....というよりスッキリ?....出来ちゃうんですね。
しかも、処理を書くHandlerのクラスではラベル文字も書き換えできるようになっているもナイス。

ここらへんで参考になるのは Eclipse Tips のCommandsラベルが付いている記事
一通り読んだだけで、全て試してないけど、ISourceProviderとか...なんか夢が広がるww

Commands以外でもEclpse Tipsのサイトは凄いいい記事多いですねー。
今度ゆっくり読んでみる事にする!

あと、もう1つほほーっと思ったのが、Contributionに書くlocationURI.

<extension point="org.eclipse.ui.menus">
<menuContribution locationURI="****">
<command commandId="****" />
</menuContribution>
</extension>

ここのlocationURIで色々表示場所を切り替えれるみたいなんですが、
昔よりも分かりやすい表示になった気がする。
メニューのIDさえ分かれば、ここの後ろに...とか入れれるって事なんですよね。

locationURIの指定で見かけたものをpickupしてみました。

popup:#CompilationUnitEditorContext?after=additions
 JavaEditorのコンテキストメニューのaddtionsの下に追加

popup:org.eclipse.ui.popup.any
 すぺてのPopupmenuに追加? この場合詳細はVisibleWhenとかで指定する感じってことかな。

popup:org.eclipse.jdt.ui.PackageExplorer
 PackageExplorerのメニューに追加

menu:org.eclipse.ui.main.menu?after=navigate
 メニューに追加する時。上記の場合メインメニューのNavigateの後ろに追加

toolbar:org.eclipse.ui.main.toolbar
 ツールバーに追加する時。
• • •

2009年6月28日日曜日

AIR GEAR v1.0.3リリースしました

AIR GEARのv1.0.3をリリースしました!
修正内容は、
ActionScript3のフォーマット機能とアウトライン表示機能を追加
ActionScriptエディタでクラス名のコード補完機能を追加
コンポーネントのColorPickerとSpacerを追加
各種不具合の修正
になっています。

インストールは、Ecllipse/dropinsに入れて、念のため -clean付きでEclipseを起動してください。
アウトラインとコード補完については、デフォルトでオフになっているので、Workspaceのプロパティページで有効にする必要があります。

ですが、まだクラスの変数とfunctionしか解析できていないので、コード補完は或る程度...のレベルです。
これからまた解析できる部分が増えるように頑張ります。

ぜひぜひ使ってくださいねー!
• • •

2009年6月27日土曜日

複数のEclipse 環境でプラグインを共有する

昨日ハマっていた、「複数のEclipse 環境でプラグインを共有する」について解決しました!
原因はorg.EclipseのEが大文字だったのがいけなかった様子。

ということで、eclipse.iniに以下の記述を追加すれば認識できました。

-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=D:\eclipse\dropins

この記述をして、うまく認識されると、
eclipse/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info に追加したplugin情報が追加されるようです。

Eclipseのバージョンとか、Java開発用、PHP開発用...の種類によりdropinsを分けておけば、Eclipseをダウンロードしてelipse.iniに上記記述をいれるだけですぐ使えちゃいます。
めちゃ便利。

あと気になるのは、Eclipseプラグインの更新が有った場合に何処に反映されるか?なんですが、これはまだ良くわかってません。
dropinsを綺麗にしても、pluginsに更新されたらなけるよな。。
eclipse 3.5M6: linked extension locations now require a .eclipseextenison fileという記事も見つけたんですが、よく理解できず(涙)
ご存知の方いらしたら教えてください><
• • •

2009年6月26日金曜日

EclipseGalileoインストール...途中

EclipseGalileoが正式リリースされましたねー。

早速、自宅のMacに正式になったCocoa版をインストール。
とりあえず最初はいつも通りSVN環境を整える。

Polarionのページを見ると、

Galileo Release
  • Subversive Update Site is a part of Galileo Update Site.
    Look at Help > Install New Software... > select Galileo - http://download.eclipse.org/release/galileo > Collaboration Tools

  • http://community.polarion.com/projects/subversive/download/eclipse/2.0/galileo-site/ - [required] Subversive SVN Connectors

  • http://community.polarion.com/projects/subversive/download/integrations/galileo-site/ - [optional] Subversive Integrations


ということなので、Galileoサイトと、polarionのサイトからインストール。無事に成功。

その他プラグインを入れていたのですが、いっつも面倒なのが更新サイトがないモノ。
そういや、dropinsに入れればよかったんだっけ?と思ってググっていたら、Equinox p2 によって Eclipse プラグインの頭痛を解消するというサイトで、dropinsを複数のEclipseで共有できる事を知りました。

dropinsのフォルダをどこか適当に作って、eclipse.iniに以下の1行を入れると行けるらしい!

-Dorg.Eclipse.equinox.p2.reconciler.dropins.directory=C:\mydropins
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=C:\mydropins
(追記:Eが大文字になっているのが間違いだったようです。小文字であれば認識しました)

うわぁ、もっと早くからコレ使っとけばよかったなぁーって思いつつ試してみたんですが...んー、反映されません。。。
Macだからかもしんないなぁー。
明日会社のWindowsマシンで試してみよう。。
• • •

2009年6月24日水曜日

FxUG Flex4勉強会に行って来た

Flex 4 , FlashBuilder? 4 , Catalyst , **** , **** ついに現れた! ベータ祭りに行ってきました。

会社帰りによって来たので、1時間遅れての参加。
Flash Catalystについては、残念ながら聞けず。

始めは、Flash Builder 4の新機能。
FlexBuilderからFlashBuilderという名前に変わったんですね。
私自身、FlexBuilderを持っていないので、あまり比較ができないんですが、話によると
条件付きブレークポイント、リファクタリング(JDTのように高機能じゃないけど、ファイルの移動時にパッケージ名を変更とか)、ASDocがコードアシストの所とViewで表示、FlexUnitとの統合なんかが出来るようになったらしい。
講演者も話されていたけど、JDTのような感じを目指して機能を色々追加していってる感じ。

FlashBuilder4のFlexやAIRアプリの作成中にFlashの作成ができたりもできるなど、ツール同士の連携も或る様子。
FlやらDWやらボコボコ起動してた。凄いなぁー。いいマシンで開発したいっすねww

あ、1つのWorkspaceでFlexBuilder3とFlashBuilder4の共存はできないらしい。

次はColdFusionについて。
始めに、会場に来ているデベロッパーとデザイナーの比率などアンケートとっていたのですが、デザイナーが少なかった。
私ももっとデザイナーの人多いと思っていたのになぁ。
製品的にはもっとデザイナーの人に興味持って欲しいんだろうと思うので、なんかAdobeさんが可哀想な位ww
どういう事なんだろうねー。絶対数がデザイナーの方がすくないとか?Flexって付いてるから?

ColdFusionについてはスプレッドシートや、PowerPointの統合だったり、テキスト検索エンジンがLucene Solrになったよ。あと、ExtJS3.0にもなった。
ColdFusionって、私は使った事がないのですが、海外ではPHPよりもColdFusionの方を使っている人が多いとか?!

次は、Flex 4のここが新しい!。
まずは spark.component。....こんなん出来たんだ。うへぇー、AIR GEAR修正せんとあかんねー。
spark.componentというのは、今までMXMLで記述していた <mx:Button>のようなGUIコンポーネントの新しいセットのようです。
ネームスペースも変わって <s:Button> って感じに。
Buttonといっても、mx系のものと s系のものができるんですね。

s系(spark)のものは、mxで面倒だった所の拡張が結構されていて、便利そうです。
例えば、画面の状態で、新規モード、修正モード、閲覧モード とか有った場合、新規モードの時のみ反映するスタイルとか、イベントハンドラとかをMXML上で書けちゃう。

<s:Button
color.{新規モードの時}="#CCCCCC"
click.{修正モードの時}=*****>
</s:Button>
みたいな感じ。こりゃ便利ですな。

あとは、どのタイミングでインスタンスするのか?(creationPolicy)とかも。

CSS部分も、え?今までできなかったの? って気もしますが、IDSelectorの記述とか、「table tr td」のような階層の時って感じの記述ができるようになったらしい。

mx系とs系は混在してかけるらしい。そーかー。そーか。。。。

質問で、今後はs系がメインになっていって、mx系は消えて行く運命なの?ってあったのですが、多分mx系もそのまま生きるだろう...との事。
今後も何か拡張したくなったら、こぅいぅセットが増えて行くって方針なんですかね。
それはそれでいいと思うけど....あとは使う人とかプロジェクト次第ですねぇ

最後に、Catalystと連携してスキン編集。
前段のCatalystの話が聞けてなかったのが残念だったんですが、Flash Catalyst:PhotoshopデザインがそのままFlexアプリのViewへと変わる!を見ると、CatalystってPhotoshop、Illustrator、Fireworksで作った画像ファイルをFlexコンポーネントに変換してくれるもの...って感じみたい。
この変換のメカニズムを簡単に説明すると、MXMLのサブセットであり、Creative Suite 4から新たにサポートされたXMLベースの画像フォーマットである「FXG」を「Gumbo」(次世代Flexのコードネーム)の新しいMXMLに変換していることになります。「Gumbo」では、コンポーネントの見た目とロジックが分離可能になるため、このような変換が行えるのです。更に、「Gumbo」のコンポーネントに変換された後でも、見た目の部分(FXG)の編集が可能となっています。尚、現在のMAX Preview版ではIllustrator CS4での編集がサポートされています。

Flash Catalystは、MXMLやActionScriptの知識がなくても静的なアートワークからFlexアプリケーションのView部分を作成できる画期的なツールです。

とな。

やっぱ、デザイン重要ですもんね。んでもって、見た目とロジックの分離。

しかし、デベロッパーでは会社でAdobe製品は購入してくれないから個人購入になるけど、辛いよなぁ。
値段高いもんなぁ。
あ、Catalystって今はベータ版だと思うけど、有料製品になるんだろうか??

そもそもAIR GEARだって、FlexBuilderに個人でお金を払えないからつくってんのにさ(涙)
どんどん個人で勉強のために(遊びのために)触るのが難しくなっていく感じがしてやだなー。
• • •

2009年6月22日月曜日

AdobeAIRでGrowlを試してみた

Rawr! FlexGrowl Component AvailableのライブラリでGrowlができるらしい!という事で試してみました。

Growlってご存知でしょうか?
MacOSで動く、通知をしてくれるアプリケーションです。
メール着信とかを、フローティングウィンドウで出して、一定時間過ぎると自動的に消えるようにもできます。
私は、GMail,iChat,NatuLion(Twitterクライアント),SkypeなどなどGrowlで表示しています。
MacユーザになるまではGrowlって名前さえしらなかったんですが....WindowsOSでも、メッセンジャーとかで「オンラインになりました」的なメッセージが小さなWindowで表示され、自動で消えたりするのが有ると思うんですが、ソレです。

通知って、良く有るのがダイアログだと思うんですが、ダイアログってOKボタンを押して閉じなきゃいけない。
しかも複数の通知が来た場合にダイアログ並んだらウザイこの上なし。
それに比べGrowlは自動的に消えて行ってくれるのがいい。さーっと見渡して、お、これは!という通知だけなかを見たらいい。
しかもGrowlのウィンドウを透過にすれば、邪魔な感覚も薄れるし。

AdobeAIRは、Growlで通知するクライアントとしてよいと思うんですが、標準では機能ないんですよね。
個人的にはAIR自体にGrowlが簡単に作れる仕組があってもいいんちゃぅの?(そーしたらAIR使う人、増えるんちゃぅの?)
って思うぐらい、AIRのアプリとして最適な通知の仕組みだと思う。

情報量が多くなっている今日では、さーっと情報を確認できるGrowlは手放せない。
脱線するけど、メールも見るの大変ですが読み飛ばしてもよさそうなものも多いのですよね。なので、Growlで表示してクリックした情報のみ未読というのも欲しーなんて思ったりもする。そういう、情報の選択的な使い方もいいと思いません??

そんな所に、このライブラリですよ。
発見してから暫く経ってしまいましたが、使ってみました。

なかなか綺麗な通知ウィンドウがでるのはいいんですが....AIRの画面描画エリアの中でしか表示できないっぽい。
そりゃそうか。

このGrowlのライブラリを使うには、AIRの画面描画をScreen全体にする+ 透明にする ようなアプリにしないと綺麗にいかない様子。
つまり、SystemChromeをnoneにして、画面を透明にし、その上に必要な所だけ描画していく形。
この方法だと、以前はMacで表示エリアをドラッグして移動しようとするとピョン!と変な所に移動してしまう時があるバグがあって、敬遠してたんですよねー。
でも、新しいSDKでは直ってるかもしれないから、もう一回試してみるかなー。

ASlimTimerのアプリで、Growl使って「20分経ちました」的な通知を出してみたかったんですが、断念。
FlexのWindowを使ったアプリにしてたのですが、これを全画面を描画エリアにする形に移行するのはちょっと大変だったので。。

だが、このGrowl。AIRで何か作るんであれば、切って切れないような機能と個人的に思うので、ぜひ何かのアプリで試さなければ!
• • •

2009年6月15日月曜日

AIR GEAR 次回リリースしよーかと!

AIR GEARにFormatterとコード補完を実装中です。
中途半端な状態ですが、こんな感じで一旦リリースしようかなぁ...と考えてます。

Formatterは単純にインデントを揃えるだけの実装をしました。


コード補完は、@shin1ogawaに作成してもらった、ActionScriptの変数と関数について抽出できるライブラリを使って、アウトラインの表示とコード補完の所を作ってみた。
上記の他に、MXMLと関連しているActionScriptの場合は、MXMLで定義しているコンポーネントをコード補完に追加。
プロジェクト内のActionScriptのクラス名と、FlexSDKのActionScriptのクラス名をコード補完の対象に追加。
クラス名を補完したら、import文も自動的に追加するようにもなってます。

でも、そのクラスのメソッド名などはコード補完出来ない...という、中途半端な感じなので、まずはデフォルトの設定では、設定無しでリリースしようかと思ってます。
設定画面はこんな感じ。

言い訳付きww

アウトラインの表示はこんな感じ。

私的にはクイックアウトラインの方がよく使うんだけど、クイックアウトラインはまだ未実装です。クイックアウトラインは結構ゴリゴリ書かないといけないと聞いたので、また次回に回そうかなぁーと。

どうすっかね?
中途半端なコード補完ですが、これだけでも(私的には)有り難い状態なので、リリースしよう〜って思って。。

現在はNabaztagのコマンド設定AIRアプリを作りつつ、テストしてますー。
もう少し動かしてみて、大丈夫そうだったらリリース準備の予定ー。
• • •

2009年6月14日日曜日

toString, toOSString, toPortableString

EclipseのIPathの、toString, toOSString, toPortableStringのメソッドの差が良く理解できていなかったので、偶然発見した Removing restrictions on valid characters in pathsのサイトの翻訳にチャレンジしてみました。
訳してみて気づいたんですが、toPortableStringが導入される前の提案の資料っぽかった。
でも理解できたので良かった。
翻訳後のものはパスの有効な文字の制限を取り除く(訳)に置いておいたので、どーぞ。(訳違ってたらすいません!)

翻訳はGoogle translator toolkitを使ってみました。便利でしたよー

翻訳の画面はこんな感じ。原文との対比ができるのは便利。
文章の文節も自動的に判断して、文節毎に翻訳作業ができる。
デフォルトは、Googleが翻訳した日本語が表示されるけど、Googleの翻訳はちょっとオバカさんなので参考程度ということで!
文節をクリックしたら、対象の原文の背景色を変えて分かりやすくなってる。
ただ、.(ピリオド)は文章の最後と見なす所もあるようで、org.eclipse.core.runtime.IPathは
org.eclipse.core.runtimeで切られちゃったりもする。
そんな所は気にせず、前後で日本語の文章がつながるようにいれていくのがポイントww

cssも原文に合わせてくれてる。単語に含まれているcss(インライン)は、{0}とか{1}で括って合わせるみたい。この単語のcssは何の数字なのか?はデフォルトで翻訳してくれた文字をみれば分かるはず。

こうやって翻訳してみたのって、原文も一緒に公開したいので、translator toolkitのこの画面自体を公開したいんですけど、なんか出来ないみたいなのが超絶残念です。ほんと残念。。
• • •

2009年6月13日土曜日

EclipsePluginのBuilder追加での疑問

plugin.xmlのNatureの定義(org.eclipse.core.resources.natures)でbuilderを記述できると思うのですが、これを記述したとしてもbuilderが追加される訳でないのがふっと疑問になった。


こんな定義をかいてても、Natureのconfigure()で BuilderのIDを使ってICommandを作成し、IProjectDescription#setBuildSpecで設定する必要がある。

plugin.xmlで、そのNatureで使うBuilderのIDを設定しているんだから勝手に入ってくれてもいいのになぁーなんて。思って。

せめて、plugin.xmlで記述しているBuilderIDが取得できないもんか?
....コードにもIDを書かないといけないのが2重管理で面倒だし....
と思ってちょっと調べてみた。

Natureの拡張ポイントで設定されたBuilderIDは、IProjectNatureDescriptorの実装にはいってみるみたいです。
しかしながら、このインターフェースでは取得できるメソッドがなく、
org.eclipse.core.internal.resources.ProjectNatureDescriptor
という実装にキャストする必要があるみたい。internalだ。。なんか残念。

ちなみに、IProjectNatureDescriptorにはNatureの拡張ポイントで指定するrequires-natureを取得できるメソッドが用意されていて、Workspace#validateNatureSetから呼ばれています。

IProjectNatureDescriptorを取得するのは簡単で、こんな感じでとれます。


これで、Builderの設定があるIProjectNatureついて汎用的なコードが書けそうな気がする。
Natureの制約(requires-natureとかの記述)のチェックをして、Builderとして定義されているもの上記のコードを使って取得して登録してあげればOKOK?!
...internalだけど。

※追記
Natureの制約(requires-natureとかの記述)のチェックはNature#Configureではなくて、プロジェクト作成Wizardの時が正しいかも。
• • •

2009年6月6日土曜日

GraphicalEditorのファイルを削除、名前変更された時

AIR GEARではGEFのGraphicalEditorを使っています。
GraphicalEditorに限らずですが、FileEditorを自作している時は、Editorで表示しているファイルが削除された時、名前を変更された時のイベントを拾って整合性を合わせてあげる必要があります。

ファイルを削除された時。→ EditorをCloseする必要がある。
ファイルの名前が変わった時。→ Editorの名前をファイル名にしているのであれば、変更する必要がある。

これらのイベントの取得は、IResourceChangeListenerを使ってリソースの変更のタイミングを取得するのですが、このリスナーを追加する場所は Workspaceです。
ResourcesPlugin.getWorkspace().addResourceChangeListener(new MyResourceChangeLisnter());

ということで、自分のEditor以外でのリソース変更のタイミングも飛んでくるようになります。
ここで! AIR GEARで不具合が発生していました(涙)

GraphicalEditorではAdobeAIRのMXMLファイルの内容を表示しているのですが、MXMLファイルを編集するのは、その他のEditor(TextEditorとかXMLEditorとか)もアリ。
その他のEditorで変更された場合、表示中のGraphicalEditorの表示も最新にする必要があるので、このResourceChangeLisnterで受け取ったタイミングで、どのファイルが変更されたか?を確認せずに「ファイルの内容を読込みしてGUIを生成し直す」という処理を入れちゃってた。

元のソース


どのファイルのリソースが修正されたか? は IResourceChangeEventのgetDelta()に含まれているようです。

ということで、修正後のソース。


ですが、このままではファイル名が変更された時には、Editorが終了してしまう様子。
ファイル名の変更=ファイルの移動としてちゃんとチェックをしてあげないとダメみたい。

で、再度変更ソース。


これで何となく動いているようだ。
ファイルをフォルダ移動した時、Eclipse本体のWindowタイトルに表示されるファイルパスが移動先のものにならない...というのを除いて。
んー まぁそこは...今度みます。。
• • •

2009年6月5日金曜日

あるといいな

レシート情報をデジタル情報として受け取れる仕組み。

レシート貰う変わりに、ICカードとか渡してレシート情報を読み取ってくれる。
その情報はどっかに保存されていて、好きな時に取り出せる。
好きな時に、いつ何処で何を買ったか?履歴がデジタル情報でみれるようになっていて家計簿つけている人なんて大助かり〜!
レシート発行しなくてもいいから紙代も節約できてエコ〜!

さらに! その情報が、購入した商品の保証書代わりとしても使えるとか。

あるといいな。
• • •

ネコ型じゃないよ。ウサギ型だよ。



Nabaztagというウサギ型ロボットを、買ってしまいました!

この子が出来る事は、喋る事。音をならす事。LEDを光らせること。耳を動かすこと。ズタンプというICタグを感知すること。
いくつかアプリが用意されていて、天気予報を喋ったり、RSSFeedを読んだり、メールを読んだり、Potcastを流したり、Twitterに投稿したり...なんて事をしてくれます。
これらのアプリをキックするタイミングは、指定した時間。時々。ICタグをかざした時。メッセージ/APIの指示を受け取った時。

大注目はAPIが用意されていて、動きを自分で作れちゃうこと!
Nabaztag4G - Groovy library for Nabaztag APIなんてのもあるようです。

今日は届いたばかりなのでプログラムは置いといて、基本的な機能をみてました。
このページを参考にさせてもらい設定。
MACアドレスは本体の底面に貼ってありました。我が家の無線LANはMACアドレスで制限かけているので、まず始めにルータに設定。
NabaztagはWIFIで接続するんですが、始めの設定はどーするんだろ?と思っていたら、最初の設定の時だけNabaztagの方が無線LANの接続先を公開し、PCからNabaztagを選んで接続する感じだった。ほー。
結局、すんなりネットに接続完了。http://my.violet.net/にてアカウントの登録も終了。

さて...まず何ができるのかしら(笑)

アカウントのページから、アプリケーションを登録できるんだけど、始めは手動のタイミングで喋ったりさせてみたいー!つーことで、APIでちょっと遊んで見る。

日本語を喋らせるには http://api.nabaztag.com/vl/FR/api.jsp?sn={シリアル番号}&token={トークン}&voice=JP-Tamura&tts={喋らせたい文字をUTF8でエンコードしたもの} でいける。
ブラウザのURLに入れて暫くすると、ウサギが喋りだします。ういヤツ!

日本語は JP-Tamura というのしかない。Tamura? 田村? 何となく男? という気がしたけど女の人でしたー。
このページにある 「このあいだ、近所の吉野家行ったんです。吉野家。そしたら...」っていう吉野家コピペを喋らせたらウケたww
日本語の喋りはあんまし上手くないです(笑)
あ、でもこの田村さん、英語を喋らせたら 日本人が英語を喋っている感じで喋ってくれるのが素晴らしいとは思うww


ズタンプというICタグも一緒に購入したんですが、「鼻にかざすと反応する」ってあるから、鼻にかざしても全然反応しない。。
ふ、ふ、不良品かー! と思いきや、鼻より下の方にかざすとサクっと反応。
んー、鼻じゃないぞ。腹ぐらいちゃぅか??

ということで、今日のNabaztagの感想。

ウサギはやっぱかわいいなぁー。
だが、アカウントを管理する http://my.violet.net/ のページはむちゃくちゃ遅い。
API経由でいろいろ遊ぶのであれば、特にズタンプは要らなかったな。。
• • •

2009年6月2日火曜日

Eclipseで使うFont

最近、プログラムで使うFontという記事がチラホラあったので、紹介されているFontをみてました。

ちなみに、私はMacOSXではデフォルトのMonacoを使ってます。


かわいい系だと思うんですが見やすいし結構好き。
WindowsOSでもMonacoを入れてみたのですが、なんかイマイチ。。。

あれやこれや...と紹介されているFontを入れてみたのですが、結局 Courier New に戻った(笑)
DinaというFontにしてみようかとも思ったんですが、太字の見かけがイマイチ。

Fontっていいのないかなぁー?って探すけど、なかなか これ!っつーのに出会うのが難しいですね。
可愛いFontが基本好きなんですが、開発時では { と ( の差や、 . と ,との差とかがはっきり見えるのがそれよりも大事だったりもするし、1行にいっぱい文字が入る方がすきだったりもする。。
• • •