2010年1月4日月曜日

エディタ(JVerticalText)

エディタを作るに当たって考えることがいくつかあります。
  • データの持ち方
  • 書き込みキャレットと書き込まれた際の画面の書き換え
データに関しては、「行」をStringBufferとして持ち、 文章をLinkedListとして持つのがやっぱり順当だと思われます。1文字挿入する度に全メモリを操作するのはあんまり良いと思えませんし。
問題は、「行」を描画する際に、画面のどこを描画するべきかを考えなくてはならないこと。1文字挿入/削除する度に「行」が始まるところから描画を行い直し、直前の「行」の縦幅と違うようであれば、それ以前の行を全て見えているところに関しては描画し直すというのが順当かなぁ。
ちなみに、これに加えて日本語で描画を行う際にはIMEの未確定文字/変換文字/変換ウィンドウの位置をきちんと指定しないとおかしな位置にIMEのウィンドウが出る羽目になります。
けど、まずは縦書きで英語の文章を書くことを目指していきましょう。

NetBeaans Platformの勉強(1)

とりあえずの抱負を手に着けてみることに。
参考にしたのは以下のサイト。
とりあえず判ったことは以下。
  • NetBeans Platformは昔のMFCの「MDI」みたいなアプリをサポートするフレームワークらしい
  • プロジェクトを俯瞰するためのツリービューとじっさいのドキュメント(拡張して区別するらしい)を開くエディタを作れるらしい
  • じっさいのエディタはTopComponentをextnedしたもの
  • ファイルビューは提供されるっぽいのでSubversionのプラグインはそのまま使えそう
  • アプリの基本構造としてはSwingのJComponentを配置する
MDIのアプリを楽に作れるだけでもNetBeans Platformは有用ですね。
とりあえずはTopComponentはJPanelの一種らしいので、その中にJComponentを子として入れる形になると思われます。JTextとAPI互換の縦書きエディタを作るのがまずはやるべき事かな。

2010年1月3日日曜日

本年の抱負

あけましておめでとうございます。本年もよろしくお願いします。

本年の抱負としては以下を考えています。
  • NetBeansPlatformの習得
  • 縦書きJTextコンポーネントの作成
  • PDF/ODFエクスポート
まずは、NetBeansPlatformを習得するに当たってのログをこのブログに残す方針で考えています。その上でテキストエディタをどのようにして作るのかをゆっくり考えていきたいと思っています。
今年の末までに文学賞応募用のPDF/ODF/JavaPrintモジュールまでたどり着ければと思っておりますので、いい執筆環境を目指して進めていこうと思っています。

よろしくお願いします。

2009年11月22日日曜日

エディタについて

IWEでもっとも中心をなすのは「テキストエディタ」だと思っています。そりゃー、小説を書くためのソフトなんですから、エディタ部分がないとお話にならないというか。
ただ、実は結構大変なのでは、と思っています。というのも、
  • 縦書きがあるのでSwingのJTextAreaヴィジェットは使えない
  • 縦書きでもきちんとIMEを縦書きに対応させる
  • 可能な限り軽快に
なんてなことをやり始めると一筋縄ではいかないんじゃないかと。
まずはJTextAreaヴィジェットを見てみるところから始めるべきかな。幸い、ソースはあるし。

2009年11月18日水曜日

IWEのライバル

勝手にライバル視しています。ずばり、ライバルは
一太郎
です!

いや、すごいんですよ、一太郎。MS-WordがWYSIWYGにこだわっている間にあさっての方向に進んでいって。MS-Wordの「アウトライン」機能も強力ですが、一太郎の「てきとーに書いてもよしなな文章に直す」機能の強力さにはかないません。
その上で、小説を書く際に必要な文章編集機能は一通りそろっていますし、赤入れした際の履歴も残るし、10年以上この道のニッチを歩いてきた重みを感じます。
なので、IWEは一太郎と真っ向勝負はしません。ありものを組み合わせて、なんとなく良しなに「小説・エッセイ」を書くため「だけ」に特化したツールを目指します。
IWEがなかなか完成しないなぁ、と思っているあなた。「一太郎」を買うことをお勧めします。IWEは所詮フリーのツールですので、乗り換えるだけならただですし、一太郎が肌に合わなくてもATOKだけは残ります!(おい)

IWEの持つ機能

何かご大層な機能がプロジェクトページのサマリーにはついていますが、そこまですごいものではありません。
ありていに言って、ついている機能は以下だけです。
  • 長文が書けるテキストエディタ(たてがき+RtoL対応)
  • 殴り書きができるメモ帳
  • 「特定のフォーマット」で出力できるプリントアウト
これだけできれば、少なくとも小説を書く分には困らないかなーと。
さらに、その上で
  • Subversionによるバックアップ
  • 作品内、もしくは作品をまたいだ「プロジェクト」という考え方
という、プログラマーからすると一般的な機能を載せようという試みです。
特にすごいのがSVNによるバックアップで、これ自体もともとは多人数でソースを扱うための機能だったのですが、
  • ある瞬間のスナップショットを作ることができる
  • 世界を「分岐」させることができる
  • 「分岐」させた世界とほかの世界を「マージ」できる
ようは、書いている最中に、迷いに迷った末途中まで書いて「こりゃだめだ」と捨てた原稿も、そのまま「捨てられた」状態でとっておくことができて、後から「実はあそこだけ使えるぞ」と思ったときに引っ張り出すことができるのです。
文章のバックアップという考え方はあまりありませんが、「書いている最中の履歴」は、後世の歴史家がその文筆活動を探る際にきっと役に立つに違いありません。
(いや、そこまでご大層な機能ではないのですが・・。あ、念のため、プログラマーは普段から使ってます)。


プリントアウトは、新人賞に入稿したり、雑誌に入稿したり、自費出版で文庫本を作ったり(笑)する際に役に立ちます。
まぁ、公開するだけならば「青空文庫」に投稿するのが一番読まれる確率は高いので、出版する必要はないのですが、ごくまれに必要になるかな、と。

そんな、ささやかなアプリです。
ちなみに、NetBeansPlatformという実行環境を使います。Java6必須です。動き始めるとさくさくいきます(予定)が、起動は遅いです。
あと、Windowsでも、Macでも、Linuxでも動きます。・・あ、いや、小説書きにLinux使いがいるとは思いませんが(AnthyというIMEがいいだけお馬鹿なんです・・)、一応念のため。
あ、そうそう、なので、たぶんですが、「NetWalker」でも動きます。「OpenPandra」でも動く・・はずです。世界各地を飛び回るネット小説家がどこでも執筆するためのツールとしてお役に立てると思います。

ちなみに今いろいろ挙げましたが、実用上はLet's Note Nシリーズを買うのが最も現実的だと思います。電池の持ちも含めて。16時間とか言われると、何かもうどうでもいい気分になってきます。すごい時代になりました。

2009年11月17日火曜日

IWEの野望(と、はじめまして)

このプロジェクトは次世代小説書きのための執筆環境を作ろうという野望のためのものです。
なんとなく、「火事が起こったのでまずポンプの設計から始める技術者」みたいな感じ(^^;)。