ようこそゲストさん

CPA-LABテクニカル

2008/06/16(月) PHPマルチバイト文字連結の罠(JIS,ISO-2022-JP)

Qdmail開発覚書。インターネットメールで日本語を使用する場合、iso-2022-jp(JIS)と呼ばれる文字セットを使用することが一般的である。しかし、日本語メールの処理をしようとして、iso-2022-jpで文字列処理を行うと、エスケープシーケンスのせいで、ものすごい非効率、場合によってはエラーが発生する可能性がある。ちなみにutf-8,euc-jp,shif-jisは原則としてエスケープシーケンスを使用しないので大丈夫である。

どんな不具合?どんな非効率?

'あい' == 'あ' . 'い' が false になる時

続きを読む

2008/05/30(金) Qdmailシリーズのライセンス変更>MIT

はてなブックマークの情報 はてなブックマークに登録 はてなブックマーク数 qdmailspok
Qdmailシリーズのライセンスを、CakePHPと同じMIT Licese に変更しました。
多くの人に使ってもらったほうがいいということで。

高機能日本語メールライブラリQdmail(CakePHP対応)
簡単SMTP送信Qdsmtp
高機能メールデコーダー、POPクライアントQdmailReceiver


なんせ
SendMail in Windows Server-らふぁろぐ -技術メモ変-
という方もいるので。ライセンスの問題で使ってもらえないなんて悲しいですからね。
  • [開発][PHP] SendMail in Windows Server らふぁろぐ -技術メモ変-
    さて、いつもいつも同じことやってる気がするので、メモ。 ・Windows Serverでメール周りを設定していないなどの関係で、Sendmailが使えない場合。 解決方法は3つ 1.php.iniを設定して、mail関数でSMTPを利用するように 2.P...

2008/05/21(水) CakePHPのシェルコマンドをさくらインターネットで使う

メール受信をきっかけにCakePHPコントローラーを起動する では、その名の通り、コントローラーをメール受信で起動させた。
ここでは、CakePHP1.2で導入されたシェル機能(shell)を利用し、CakePHPのシェルをメール受信をきっかけに起動させてみる。

順番としては次のようになる。

続きを読む

2008/05/20(火) 弘法もメールの誤り?

とある、逆引き~PHPをWEBで発売している会社さんから、改訂版のお知らせが届いた。
ら、衝撃の事実がっ!

続きを読む

  • CakePHPのプロもメールのプロではない? CPA-LABテクニカル spok
    弘法もメールの誤り?で書いたブルー...さんから、逆引きCakePHPのバージョンアップのお知らせが届いた。ら、以前と同じように、認証コードの途中に改行コードが入っているものだから、そのままクリックではうまくダウンロードできない。テストしてないのかあ。プロ...

2008/05/19(月) デコメ。auのContent-IDの制約。@はひとつだけ。

デコメはどうやって、画像を特定するのか

通常のhtmlメールで例えばgif画像を指定するには、次のようにする。
<img src="http://example.com/hoge/images/filename.gif">
このファイル名でどの画像ファイルを表示するか、一意に特定される。

では、デコメはどう指定するか。

続きを読む

2008/05/17(土) 10行で空メール処理を実現する

あるメールを受け取って、自動的に差出人に対してメールを返す、という動作の代表例として空メールがあるかと思います。
Qdmail,QdmailReceiverを利用すれば、たった10行で空メールを実現することができます。

続きを読む

QdmailReceiverについて

PHPで、日本語での空メールや多機能転送メールを簡単に実現したり、POPメールボックス操作でWEBメールを実現できたりします。主にメールのMIMEデコード機能、POP操作機能から成り立っています。その他、様々な用途が考えられるでしょう。
Pear::Mail,Pear:MIMEなどで同様の機能は実現できますが、メールの仕組みを理解していないと難しいです。Qdmailシリーズは、「初心者には簡単に、上級者には詳細に」のポリシーのもと、簡単使用方法と、詳細使用方法の両方を使うことができます。
簡単にメールのデコードができるので、例えば、取得したメールをヘッダーと本文まるごとデータベースに保存しても、すぐに内容を取り出すことができます。
gmailのようなWEBサービスも比較的簡単に実現できるでしょう。
というものです。

詳しくはこちらをどうぞ。
マルチバイトメール解析-QdmailReceiver POP付
  • CakePHPのシェルコマンドをさくらインターネットで使う CPA-LABテクニカル spok
    メール受信をきっかけにCakePHPコントローラーを起動する では、その名の通り、コントローラーをメール受信で起動させた。ここでは、CakePHP1.2で導入されたシェル機能(shell)を利用し、CakePHPのシェルをメール受信をきっかけに起動させてみ...

2008/05/15(木) 日本語文字列のバイト数取得にstrlenだけではダメな理由-PHP

日本語(マルチバイト)の処理において、その文字数ではなく、バイト数を取得したい場合があります。
マルチバイトは必ずしも1文字2バイトとは限らず、EUC-JPでは概ね2バイトだけど特殊文字で3バイトの場合があり、UTF-8では概ね3文字バイトで表されるけれども、そうでない場合もある。
マルチバイト文字はエスケープシーケンス等様々な理由で、日本語の文字数×nでは答えがでないのです。
もっと単純な話でいえば、シングルバイト文字とマルチバイト文字が混ざった文字列のバイト数は、もちろん文字数×nでは求めることができません。

まず現状での最善策をご紹介

続きを読む

  • CakePHP(RC1.2)のemailコンポーネントで日本語はまだ厳しい CPA-LABテクニカル spok
    ■CakePHP(1.2RC2)のemailコンポーネント評価CakePHP 1.2 RC2 がリリースされたので、新しいemailコンポーネントを評価してみた。全般的に言えば、改行コード&英文周りはかなり改善されており、英語メールを送る分には、大丈夫かと...

2008/05/15(木) CakePHPコントローラーをメール受信をきっかけに起動する

はてなブックマークの情報 はてなブックマークに登録 はてなブックマーク数 cakephpspok

CakePHPシェル機能を使用せずに、空メールを実現する-さくらインターネット編

CakePHPにはシェル機能というものがあり、コマンドラインからCakePHPを利用できる。
この機能を利用して、CakePHPをメール受信をきっかけにリアルタイム処理することもできる。
例えばこちらの記事はそう。Writing Some Code-メール受信からのシェル機能実行
しかし、学習の量は少なければ少ないほど効率がいい。
あることを実現するのに、別の事柄を学ぶよりも、これまでの延長線上で可能な方がいい。
(ただし、WEBブラウザから直接叩かれることも想定されるのでご注意を 参考:CakePHPシェルの使い方)
というわけでここでは、CakePHPのシェル機能は使わずに、普通のControllerを、メール受信をきっかけに起動することをやってみたい。
1.2betaで動作確認をしていますが、1.1でも動作するはずです。
これはさくらインターネットで試していますが、".mailfilter"の部分さえ、ご自分の環境に合わせて設定できれば、後は同じです。さくらインターネットと同じ環境ではない人は、こちらの阿部辰也のブログ――人生はひまつぶし。-メール受信時に perl スクリプトを起動して自動処理させる方法が参考になるでしょう*1

続きを読む

  • CakePHPのシェルコマンドをさくらインターネットで使う CPA-LABテクニカル spok
    メール受信をきっかけにCakePHPコントローラーを起動する では、その名の通り、コントローラーをメール受信で起動させた。ここでは、CakePHP1.2で導入されたシェル機能(shell)を利用し、CakePHPのシェルをメール受信をきっかけに起動させてみ...

2008/05/13(火) さくらインターネットでリアルタイムメール処理

空メールや転送メールなどで、メールの受信をきっかけにPHPプログラムを実行させたいときがあるかと思います。
メールサーバーによって設定が異なるので、ここでは、さくらインターネット(sakura internet)での設定を覚書。

続きを読む

  • CakePHPコントローラーをメール受信をきっかけに起動する CPA-LABテクニカル spok
    ■CakePHPシェル機能を使用せずに、空メールを実現するCakePHPにはシェル機能というものがあり、コマンドラインからCakePHPを利用できる。この機能を利用して、CakePHPをメール受信をきっかけにリアルタイム処理することもできる。例えばこちらの...
  • 10行で空メール処理を実現する CPA-LABテクニカル spok
    あるメールを受け取って、自動的に差出人に対してメールを返す、という動作の代表例として空メールがあるかと思います。Qdmail,QdmailReceiverを利用すれば、たった10行で空メールを実現することができます。#!/usr/local/php-5.2...
  • CakePHPのシェルコマンドをさくらインターネットで使う CPA-LABテクニカル spok
    メール受信をきっかけにCakePHPコントローラーを起動する では、その名の通り、コントローラーをメール受信で起動させた。ここでは、CakePHP1.2で導入されたシェル機能(shell)を利用し、CakePHPのシェルをメール受信をきっかけに起動させてみ...

2008/05/12(月) デコメはQuoted-Printableエンコードで送られてくる。

Eメールのエンコード方式にはいくつかある。
7bit,8bit,Base64,Quoted-Printableと、主だったもので4種類。
この中で、Quoted-Printableは、日本ではあまりポピュラーでなく*1未対応のメーラーもあるようだ。
しかし、、、

続きを読む

2008/05/01(木) さくらインターネットでCakePHPコンソール

はてなブックマークの情報 はてなブックマークに登録 はてなブックマーク数 cakephpspok
CakePHP1.2のconsole機能については、マニュアルにこう書いています。
[http://manual.cakephp.org/ja/view/108/the-cakephp-console]
$ ./cake/console/cake
で、起動するはずです。
cakeという拡張子もなにもついていないファイルですが、これはunix系OSのシェルスクリプトになります。
しかし

続きを読む

  • CakePHPのシェルコマンドをさくらインターネットで使う CPA-LABテクニカル spok
    メール受信をきっかけにCakePHPコントローラーを起動する では、その名の通り、コントローラーをメール受信で起動させた。ここでは、CakePHP1.2で導入されたシェル機能(shell)を利用し、CakePHPのシェルをメール受信をきっかけに起動させてみ...

2008/05/01(木) PHP:mail関数が使えない環境でSMTP送信するライブラリ

はてなブックマークの情報 はてなブックマークに登録 はてなブックマーク数 qdmailspok

PHPで簡単にSMTP送信

環境によっては、同じサーバーにメールサーバーが同居しておらず、PHPのmail関数が使えない人もいるでしょう。
mail関数は遅いから、SMTPでメール送信したいという人もいるでしょう。
Pear::Mailは設定が面倒で、もっと簡単にSMTP送信できないものか、とお考えの人もいるでしょう。
CakePHPからSMTP送信したい?

そんなあなたのために。

続きを読む

2008/04/30(水) Qdmailの構造-環境に応じて承継クラスを変更する

はてなブックマークの情報 はてなブックマークに登録 はてなブックマーク数 qdmailspok
高機能日本語PHPメールライブラリ-Qdmailは、ひとつのファイルで、通常の関数、クラスライブラリ、CakePHPコンポーネントの3種類を使い分けることができる、ハイブリッド型になっています。

クラスの構成としてはこんな感じ。
qdmail_uml.jpg

CakePHPの定数が定義されているかどうかによって、CakePHPの存在を認知しています。
CakePHPのコンポーネントとして読み込まれていれば、CakephpのObjectクラスを承継するようにしています。
(それ以外の時に、Objectクラスを承継しようとしても、Objectクラスが存在しないためエラーとなる。)

ただ、いきあたりばったりで作った面もあり、QdmailBaseの中身はもっと、OOP的な方法で出来たような気がします。
いずれ時間があったら、リファクタリングなるもので、もっとスマートに作り替えてみたいと思います*1

*1 : いつになることやら

2008/04/28(月) ウィルコムのデコメは、SoftbankMobileと同じ

こちらで、デコメール携帯4社MIMEマルチパート比較においてウィルコム等のデコメ*1の情報を求めていたけれども、ありがたいことに情報をいただいた。
WX330Kの実機から、デコメを送っていただき、その解析結果をここに書きたいと思う。
(情報提供:悩める技術者さん)

続きを読む

2008/04/24(木) CakePHP高機能メールコンポーネント-Qdmail

はてなブックマークの情報 はてなブックマークに登録 はてなブックマーク数 qdmailspok
QdmailをCakePHP対応にしてみました。

特徴

  • CakePHP1.1 & 1.2 の両方に対応
  • ひとつのファイルで、通常の使い方もCakePHPのコンポーネントとしても動作可能
  • CakePHPのビュー機構を利用可能
  • CakePHP1.2デフォルトのemailコンポーネントに比べ、マルチバイト処理に優れている
  • Semailコンポーネントに比べ、汎用性が高い
  • インラインHTMLメール機能があり、デコメも送信可能

余談

意外にすんなりとCakePHP対応ができたような気がします。
ただ、1.1は使ったことがなかったので、ちょっと戸惑いました。1.2と微妙に違うんですよね。
CakePHPと通常ライブラリの共用ファイルにできたのでほっとしています*1
普通のライブラリとしても使えるので、他のフレームワークでも問題なく使えると思います。

Semailは、emailコンポーネントの改良版でしたが、Qdmailは、すべてゼロからのコード書き下ろしです。
ライセンスについては迷いましたが、AGPLv3です。CakePHPのライセンスとは異なりますので、ご留意ください。(追記:ライセンスはMITライセンスに変更しました。CakePHPと同じです。)
個人的には、もはやSemailを使う理由はないような気がします。実行速度以外のすべての面においてQdmailが勝ります。(単純なテキストメールだけであれば、Semailの方が軽くていいかも知れない)
SemailとQdmailを立て続けにリリースし、メールオタクのようになってしまいました*2
もう疲れたので、今後はゆっくりペースにします*3
コメントいただいた方にはすごく感謝しております。
アクセス数はそれなりにあるのですが、あまりリアクションもないので、まあ、そんなに需要はなかったということなのでしょう。自己満足ですが、ただ単に「簡単にメールを送りたい」というだけだったんですけどね。

*1 : 2つにしたら、今後それぞれのお守りをしなくちゃいけなくなるので

*2 : もともとさして詳しくなかったのですが

*3 : 本業もありますので

2008/04/23(水) PHP-mail関数よりSMTP送信の方が高速

はてなブックマークの情報 はてなブックマークに登録 はてなブックマーク数 qdmailspok
現在、QdmailのSMTP対応の作業中です。
ちまたでは、mail関数は、ソケット通信をその都度、ONOFFするので、SMTP送信の方が早い、と言われているようです。

Qdmailで100通のメールを自分あてに送ってみると以下のような結果になりました。

続きを読む

  • SMTP送信を使うべき3つの理由-PHP CPA-LABテクニカル spok
    ■さらば、mail,mb_send_mail関数SMTP送信を使うべし!mail,mb_send_mailはトラブルの元改行コードこちらmail関数のハマりどころ でも書いたように、mail関数は、改行コードが難解である。mb_send_mailも、文字化...

2008/04/17(木) PHP日本語高機能メールライブラリ-Qdmail-デコメ対応-文字化けフリー

はてなブックマークの情報 はてなブックマークに登録 はてなブックマーク数 qdmailspok

Qdmailとは

Qdmailとは、PHPのマルチバイト環境(特に日本語)にて、「文字化けしない」「簡単に"デコメ"(デコメール)やHTMLメール等の電子メールを送信することができる」メールクラスライブラリです。(PHP4,PHP5の両方対応)
「初心者には簡単に、上級者には多彩に」のポリシーのもとに開発しました。
設定次第では、日本語だけでなく各国語対応ができる(はず)。
PHPには、"mb_send_mail"というメール関数もありますが、残念ながら、機能が限定的です。多くのマルチバイト圏言語の人々は、自国語でメールを送ることに、かなり苦労しているようです。

Qdmial-PHP日本語マルチバイトメールクラスライブラリ(別サイトです。)

参考:携帯4社デコメ・マルチパート比較

開発の背景

mb_send_mail
PHPには、mb_send_mail というマルチバイト用のメール関数がありますが、使い勝手が悪く、利用している人は少数かと思います。
かといって、Pear::Mailは仰々しいし、自分で英語圏用mail関数を使いこなすのも面倒だ。。。特に、ヘッダーのMIMEエンコード処理は間違いがちで、知らず知らずのうちに文字化けメールを送っていることも。。。。
CakePHPでの経験
CakePHPで遊んでいるうちに、CakePHP1.2ベータのe-mailコンポーネントに出会いました。
しかし、これもマルチバイトに弱く、文字化け多発です。しょうがないので、自分でe-mailコンポーネントを改良し、Semailというものを作りました。
しかし、もともとのe-mailコンポーネントの実装が柔軟性に欠ける感じだったので、限界がありました。
また、当然のことですが、CakePHPのコンポーネントであるため、CakePHPを使うまでもない時や、ちょこっと日本語メールを送りたい時には、不便です。
そこで一般的なWEBアプリケーションでも使えるような、本当のmb_send_mailが欲しいな、と思っていました。
現在のQdmailは、そのままではCakePHPのコンポーネントとしては動作しませんが、コントローラーの中でインクルードして、viewの出力を突っ込めば、使えるはずです。それはCakePHPのみならず、他のフレームワークでも同じです。

簡単にメールを送りたい
そもそもメール機能なんて、「使う側からみれば」、当たり前の機能なのに、なんでこんなに大変な思いをしなければならないのか。
(技術的にはいろいろあって大変なのはわかるけど)
携帯にデコメを送りたい
ふと携帯にデコメを送るには、を調べていると、インラインHTMLメールというものの存在を知りました。恥ずかしながら、それまでよく知りませんでした。
調べると、htmlとmhtlのあいのこのようなもので、なかなかおもしろい構造でした。
しかし、Semailではもう限界であり、新たなメールクラスライブラリを作ろうと思い立ったのです。
まあしかし
どこまで需要があるのかわかりませんが、一応、AGPLv3というFSF(フリーソフトウエア財団)のライセンスを適用して公開してみました。(追記:もっと緩やかなMITライセンスに変更しました。)
手間はむちゃくちゃかかった
コアの部分は、2日間の休みをつぶして、すぐにできたのですが、ユーザーインターフェイスで苦しみました。コードの半分は、ユーザーインターフェイスです。
かつての私のように、オブジェクト指向って何?の状態の人でも使えるようにするためには、どうすればいいのか、という点に悩みました。
ファイル1個にこだわった。
Pearもそうですが、初心者にとって、たくさんのファイルを適切な場所に配置し、適切にインクルードして使うのは、結構たいへんです。
なので、「ファイルは1個だけ」、ということにこだわりました。
これは上級者にとってみても、手間がかからない、という点で利点だと思っています。
コードが2000行を超え、決してスマートではありませんが、これからもできるだけファイル1個に納めたいです。
PHP4対応は異常に大変
当初PHP5でコードを書いていたせいもあるのですが、PHP5のオブジェクト指向的書き方に慣れてしまうと、もうPHP4には戻りたくありません。
途中からPHP4にして開発しましたが、「あ、これもダメなんだっけ。あれもダメなんだっけ。」とイライラがつのるばかり。
しかし、未だPHP5に切り替わっていないレンタルサーバーもあるようなので、ふんばってみました。PHP5だけの対応なら、コードの量は、2/3になっていたでしょう。
個人的に気に入っているのは。
デコメ対応と、インテリジェントワードラップ、simpleReplace*1です。
おいおい、あちらのサイトで説明を書いていこうと思います。(その前に、バグ出まくりだったりして。)
あと、送信ログ、エラーログ機能もあるので、万が一、外部からスパムなどに使われても、ログをチェックすれば、すぐにわかるようになっています。


本業が繁忙期に入っており、今後、どこまで使い方の説明やら、保守ができるかどうかわかりませんが。。。。

*1 : 簡易テンプレート機能

Qdmailの特徴(機能)Feature

  • PHPの対応バージョン
    • PHP4,PHP5の両方に対応
  • 簡単にできること
    • 日本語メール(日本語本文、日本語ヘッダー)
    • 日本語以外のマルチバイト各国語メール
    • 添付ファイル(日本語添付ファイル名OK)
    • 携帯デコレーションメール対応(携帯4社自動判別対応。たぶん)(日本のみ)
    • インテリジェント・ワードラップ(http://の列は、折り返しをしない等が指定できる)(文字数でなく、文字幅での折り返しも可能。英数字と日本語が混ざっても綺麗!)
    • 簡易テンプレート機能(名前やアドレス等の置き換えが可能)
    • オブジェクト指向がわからなくても、関数ライクに各種設定可能(配列地獄形式)

  • 自動でやってくれること
    • 文字コード判別
    • MIME判定
    • HTMLメール時の代替テキスト文生成機能
    • 様々な指定省略時のデフォルト設定
  • 多彩にできること
    • 宛先分離機能(複数宛先に1通づつ送付する機能)
    • 複雑なMIMEタイプ指定
    • 複雑なマルチパート構成
    • 複雑なワードラップ
    • 多彩な指定方法
    • 常に管理者にBCC可能
    • iso-2022-jp以外にも、utf-8,Shift-JIS等の文字セット可能
    • ヘッダー、本文、添付ファイルの文字コードをそれぞれ別に指定可能
    • 本文base64エンコードの指定可能
    • 本文Quoted-printableエンコード指定可能
    • 送信ログ、エラーログ作成機能
    • 不具合時のデバッグログ作成機能
    • 新たな方式のデコメ対応機種がでても簡単に追加可能
    • 独自のメールアドレスチェック(バリデーション)関数を指定可能
    • デコメ、インラインHTMLメール時のContent-Idを任意に指定可能
    • sendmailへのオプション渡し可能

  • デフォルト設定(変更可能です)
項目設定値
文字コードiso-2022-jp(jis)
エンコード7bitノーマル
自動MIME判定ON
インテリジェントワードラップON
簡易テンプレート機能OFF
宛先分離機能OFF
HTMLメール時の代替テキスト文生成ON
デコメ自動判定ON
  • 今後の課題
    • SMTP送信
    • CakePHP対応
    • デコメ・テンプレート解析機能
    • PGP対応
Qdmial-PHP日本語マルチバイトメールクラスライブラリ(別サイトです。)
  • デコメ。auのContent-IDの制約。@はひとつだけ。 CPA-LABテクニカル spok
    ■デコメはどうやって、画像を特定するのか通常のhtmlメールで例えばgif画像を指定するには、次のようにする。<img src="http://example.com/hoge/images/filename.gif">このファイル名でどの画像...
  • 弘法もメールの誤り? CPA-LABテクニカル spok
    とある、逆引き~PHPをWEBで発売している会社さんから、改訂版のお知らせが届いた。~がバージョンアップいたしましたので、ご連絡申し上げます。最新版は下記 URL よりダウンロードください。http://www.example.com/hogehoge/数...

2008/04/12(土) デコメール携帯4社MIMEマルチパート比較

デコメールの仕様の違いを明らかにする

携帯端末でのメールにデコメールなるものがある。
会社によって、デコレーションメール(au,EM)やら、デコレメール(SB)やら、デコラティブメール(WL)などの呼び名が違う。
呼び名が違えど、規格はいっしょ。ならば話は簡単なのだけど、そうは問屋がおろさない。
技術的に微妙に違う部分があり、現在開発中のメールラッパーも苦戦した。
デコメ対応高機能日本語メールライブラリQdmailとして公開しています。)
デコメールは、いわゆるHTMLメールの一類型といえるが、一般的なHTMLメールともMIMEのマルチパート構成が違うので、これもまたやっかいな問題であった。
せっかくなので、ここにまとめておく。

続きを読む

メールのマルチパートの構成

続きを読む

留意点

続きを読む

あなたの端末からデコメールを送って下さい!

続きを読む

  • ウィルコムのデコメは、SoftbankMobileと同じ CPA-LABテクニカル spok
    こちらで、デコメール携帯4社MIMEマルチパート比較においてウィルコム等のデコメ*1の情報を求めていたけれども、ありがたいことに情報をいただいた。WX330Kの実機から、デコメを送っていただき、その解析結果をここに書きたいと思う。(情報提供:悩める技術者さ...
  • デコメはQuoted-Printableエンコードで送られてくる。 CPA-LABテクニカル spok
    Eメールのエンコード方式にはいくつかある。7bit,8bit,Base64,Quoted-Printableと、主だったもので4種類。この中で、Quoted-Printableは、日本ではあまりポピュラーでなく*1未対応のメーラーもあるようだ。しかし、、、...

2008/04/09(水) 開発中・マルチバイト新メールライブラリ-PHP

はてなブックマークの情報 はてなブックマークに登録 はてなブックマーク数 qdmailspok
以前は、CakePHPのEmailコンポーネントを改造して、Semailを作ったけど、やはり、Emailコンポーネントの初期の実装に不満があるところがあり、ゼロから自分で、メールラッパーを作っている。
CakePHPに限らず、通常のPHPで使えるようにがんばっているけれど、意外にPHP4とPHP5の両方に対応させるのが大変。
最初からPHP4で作ればよかったのだけど、PHP5で作りはじめてしまったため、ダウングレード作業が思ったより手間がかかる。
また、「初心者には簡単に、上級者には詳細に」のコンセプトのため、入力されたパラメータの解析ルーチンが、大変面倒。たぶんコードの3分の2は、ユーザーインターフェース用で占められることになりそうだ。

開発状況

続きを読む

# 通りすがり 『かげながら応援しております。 頑張ってください! 』 (2008/04/22 13:43)

# spok 『ありがとうございます。なんとか形になってきたと思います。 http://www.cpa-lab.com/tech/0132』 (2008/04/24 23:52)