【日記】プログラミング
もう十年以上前に志して少し技術をつけたけれども本格的にはできないと悟り、しいてやめると決意したわけでもないが、目的もないので多少ゲームや数学の問題を解くくらいのことは出来るようになったにもかかわらず途絶してしまったプログラミングの練習を、何を思ってか再開することにした。
実際、そういう興味圏からもう飛び出してしまって、長く経つので新しい目的がたまってきたとかでもない。だが、日常的にほんの少しでもその需要があったら、たとえアプリで用意されているとかだったとしても、それをあえて自分の手で作る、結局は完全に自分好みの形になっているアプリやらソフトなんてないんだから、何かしら利益はあるはずだと思って自分の興味の赴くままに、試しに実用的なものを一つ書いている。
それは、今書いている文章、期日と分量が決まっているとして、一日にどれくらい書かなければいけないものか算出するというものだ。
この肝は、一つは、英語圏等の文章量の計測の仕方である、何文字、キャラクターというカウントの仕方が、日本では余り使わない、少なくとも近日に至るまでは、その代わりに使用しているのが、デファクトスタンダードではあるにしても、あまりにデメリットが多いように見える、あの原稿用紙枚数換算ということをしていること、それに合わせて自分の方でもカウントしてみようということで、この原稿用紙枚数換算ということ自体をするソフトウェアは、たとえばウェブ上で稼働するプログラムも開発されているくらい、ある所にはあると言えるのではあるが、それでもその数値をさらに日割りでどれくらい必要であるかとか自分に向けて表示するという機能までもつものは、今のところ見かけたことがない。
それから、その日毎に書く分量について計算するうえで、自分の場合は、仕事をしている日はほとんど何かをするというわけにはいかない。なので、自分の休日数に合わせて、その日に仮に制作に取り掛かったとして、期間までの休日数何日分の中で、その一日で作らなければならないものはどれくらいであるのか、ということについて算出する、という所がきわめて自分なりのカスタマイズが必要になるところだ。
そして、これを作ってみて一つ発見したところは、よく原稿用紙枚数と言って、ついでのように何行と足されることのあるこの分量の数値化だが、本質的なのは枚数自体ではなく、行数の方にあるということがわかった所だ。
行数さえ判明してしまえば、それを二十で整数的に割れば、枚数は出る。また、今回のように日割りでどのくらいの分量なのか、と出すには、枚数での換算はむしろ大ざっぱに過ぎるので、全てを行数で管理し、その分量を割って、最後に表示する段階でそれぞれ枚数単位で割る、という手順を取った。
この辺りは、自分で作成してみなければわからない点だったのではないかと思う。
原稿用紙枚数とは、本当に厳密に算出しなければならない場合には、けっこう難しくて、行末に来てはいけない文字(たとえば始まり括弧系など)、行頭に来てはいけない文字(終わり括弧と拗音、撥音など)があるので、それらを避ける禁則処理というのをしなければいけない。その場合、一文字ずつずれるのであるが、それが文章全体にわたった時には、立派に一枚分とかずれたりするのである。
それを細かく処理するには、例外的な分岐を作って一つ一つ書くとかしなければいけないのだが、この場合、単に日割りの分量とか、おおよそこれで足りるであろう目標の枚数とかしか相手にしていないので、そんな細かい所は無視する、という所で妥協できるのである。
しかも、今一文字分ずつずれると書いたが、もし、たとえばちょうど行末に来る文字の手前で、行末に来てはいけない文字が連続してしまった場合、ずれるのは一文字だけではなく、その連続した数だけになるし、自然な文章ではあり得ない事ではあるが、それが何文字も何文字も連続するとすると、奇妙なことに、その行に文字を表示することはできない、などという無茶なことも起きるのである。
その場合、例外の例外みたいな事態についても構えていなければならず、それは例外好きな人間であれば作っていて楽しいのであるが、その間に、貴重な書き得べき時間を例外の例外を考えて潰すことになるのである。
その、いくつかのやなこったを個人的用途だといって避けることが出来るのが、日曜プログラマーの良い所であるのではないか。