2017年10月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

最近のトラックバック

無料ブログはココログ

2017年4月15日 (土)

OuDiaSecondが公開されました

OuDiaの改造版ソフトである、OuDiaSecond が公開されました。

http://oudiasecond.seesaa.net/article/448961169.html

2009年7月にOuDiaをオープンソースソフトウエアに移行してから8年、ようやく他の方の手による、機能追加版OuDiaが出現しました。
これ以外には、2012年5月に、韓国語対応のOuDiaUが登場していますが、これは、機能追加はありませんでした。

OuDiaSecondには、時刻表ビューへの秒単位表示をはじめとした、時刻を秒単位で編集する機能と、基準運転時分機能が追加されています。より精密なダイヤにこだわった機能という印象です。

今後も機能追加が予定されているようですので、架空鉄道などで精密なダイヤを志向される方にとっては、待望のプロジェクトになりそうです。

2017年2月11日 (土)

WinDIAファイル出力機能の今後

ユーザーの方から、

  • OuDiaでWinDIA形式の時刻表データを出力する際に、WinDIA.exeとは若干異なる動作をしているようです。

とのご連絡を頂きました。OuDiaが生成したWinDIAファイルをWinDIAで読み込ませる分には問題ないが、WinDIA以外のソフトに読み込ませると正しく動作しない、とのことでした。

しかし、大変申し訳ありませんが、僕のほうでは、今後、WinDIAファイル出力機能のプログラムを変更する予定はありません。

理由は、僕自身の開発用PCが64ビットになり、WinDIAが使用できなくなったためです。WinDIAファイル出力機能のプログラムを修正したとしても、「その出力結果の.diaファイルがWinDIAで正しく読めることを確認する」という、最も基本的な動作確認ができません。こんな状態では、ソフトは公開できません。

  近い将来の予定はありませんが、今後、.oudファイルの拡張が必要になるようなバージョンアップを行うときには、WinDIAファイル出力機能は存続できないかもしれません。この場合は、機能廃止もいたしかたありません。

OuDiaは、オープンソースソフトウエアです。誰でも、OuDiaの改造を行い、それを公開することができます。WinDIAファイルの出力機能の開発については、その機能を必要とする方に委ねるべきなのだと、今は思っています。

2017年1月22日 (日)

OuDia Ver.1.02.05 を公開しました

  OuDia Ver.1.02.05 を公開しました。
変更点は、以下のバグ修正のみです。

  • 列車種別ビューで、[編集]-[上へ]・[編集]-[下へ]を行うと、アプリケーションエラーになる問題を修正

問題箇所の修正は、ほんの数行でした。
しかし、こういう小修正の場合は、ソフトをWebに公開するまでの手間が高くつきます。
今回のリリースの場合は特に、前回のリリースとは年が変わります。このため、著作権表示の年を-2016 から -2017 に変える必要がありました。この、著作権表示を持つファイルが、結構多いのです。

  • ソース .zip に含まれるReadMe.txt
  • すべてのソースファイル
  • すべてのマニュアルの .html ファイル
  • マニュアルの「この文書の著作権表示 」
  • バージョンリソース(バージョン情報ダイアログボックス)
  • インストーラのプロパティ(インストール後に、コントロールパネルに表示される)
  • インストーラの開始時に表示される、使用許諾契約書

この、ソフトの動作に関係の無い修正点の多さは何とかならないものか・・・と思ってしまいました。

2017年1月16日 (月)

列車種別ビューでの[上へ][下へ]操作が正しく動作しない問題

  OuDia Ver.1.02.04 で、不具合のご連絡を頂きました。

列車種別ビューでの[上へ][下へ]操作を行うと、Runtime Error でプログラムが強制終了になるというものです。

手元の環境でも、現象を再現させることができました。現在、原因を調査中です。

2016年12月24日 (土)

Androidアプリ AOdia

.oud ファイルのダイヤデータを閲覧できるAndroidアプリ AOdia が公開されました。
作者は KameLong 様です。

僕はスマホは持っていないので、タブレットで試用してみました。
使い方は簡単で、すぐ使えるようになりました。
動作は軽快で、ビューアーとして十分だと思います。

現在も開発途中とのことですので、今後もバージョンアップが期待されます。

AOdiaのホームページ:http://kamelong.web.fc2.com/aodia/index.html
上記ページに、Google Play へのリンクがあります。

2016年11月24日 (木)

OuDia 1.02.03 を公開しました

OuDia.1.02.03 を公開しました。2年3ヶ月ぶりのバージョンアップとなりました。
変更内容は、以下の通りです。

1.Windows10で、時刻表ビューの縦書き表示が正しく表示されない問題を修正

2.時刻表ビューの罫線の描画を修正

3. OuDiaのホームページ のURLを変更

1. と 2. は、このブログの 「Windows10では、時刻表ビューの縦書き表示が正しく表示されない問題」 と、「時刻表ビューをPDFファイルへ出力すると、そのPDFでは時刻表の罫線が見えない」 問題を解消したものです。
3.は、マニュアル・ヘルプの修正箇所です。 OuDiaのホームページが移転した ため、修正が必要になりました。

時刻表ビューをPDFファイルへ出力すると、そのPDFでは時刻表の罫線が見えない-2

「PDF出力の場合だけ時刻表の罫線が見えなくなる」という問題の原因を思いつくまでには、時間がかかりました。
原因は、「アプリケーションソフトから長方形を描画したとき、出力先がPDFだと、他の出力先(ディスプレーやプリンター)に比べて、長方形のサイズが大きくなる」ということでした。(ここでの『出力先』は、Windows GDI を指します)。

時刻表ビューをはじめとした「グリッド形式ビュー」は、以下の順序で描画を行っています。

1.グリッドの罫線を描画する
2.各セルに、背景色で長方形を描画する
3.セル内のテキストを描画する

出力先がPDFの場合、2.の処理において描画する長方形が大きく、罫線に乗り上げてしまいます。このため、罫線が覆われて見えなくなってしまうのです。

oudia_1.01.02_pdf

この問題の解決策は、以下のように描画の順番を変えることしか思いつきませんでした。

1.各セルに、背景色で長方形を描画する
2.セル内のテキストを描画する
3.グリッドの罫線を描画する

しかし、これは、結合セルがある場合に、少々面倒な処理が必要になりました。今までは、罫線の後にセルの背景やテキストを描画していたため、結合セルの上を通る罫線は、結合セルの背景色に塗りつぶされて見えなくなっていました。しかし、罫線をセルの後に描画するとなると、結合セルの上に罫線が重なってしまいます。

このため、罫線を描画する処理に、結合セルを避けて線を引くような仕組みを追加しました。

こうして何とか、PDFへの時刻表ビューの出力を改善することができました。

oudia_1.01.03_pdf

2016年11月20日 (日)

時刻表ビューをPDFファイルへ出力すると、そのPDFでは時刻表の罫線が見えない

Windows10では、時刻表ビューの縦書き表示が正しく表示されない問題 で記しました通り、このたび時刻表ビューを修正することになりました。

時刻表ビューには、これとは別に、かなり前から気づいていた問題点があります。それは、

  • PrimoPDF  などを利用して、時刻表ビューを、『印刷』機能でPDFファイルへ出力すると、出力結果のPDFでは時刻表の罫線が見えなくなる

というものです。

実は、この問題についてユーザーの方から初めて連絡を頂いたのは、2007年のことでした。しかし、このときの連絡は「いきなりPDF」という有償ソフトを使った出力結果でした。僕は「いきなりPDF」を持っていなかったので、問題を再現させることができませんでした。また、僕の手持ちのプリンタ(EPSON PM-670C)では時刻表ビューの正しい出力ができていました。このため、当時は「いきなりPDF側の問題では?」と思っていました。
このようなことから、連絡を下さった方には

「OuDiaでは、製作に当たって『いきなりPDF』への対応は想定していませんでした。また、僕自身が『いきなりPDF』を保有していません。このため、問題点を実際にこの目で見ることもできず、手も足も出せません」

とお答えするしかありませんでした。

しかし、時が経つにつれて、使用していたプリンタは老朽化して動作しなくなり、すでに修理対応期限も過ぎて、使いようがなくなりました。また、最近では、

  • コンビニのプリンタで、PDFファイルを安価で印刷できるようになった
  • 印刷機能を使ってPDFを生成するソフトが多数現れた(http://freesoft-100.com/pasokon/pdf_maker.html)
  • PDFファイルなら、タブレットでの閲覧もできる

といった要因で、PDFファイルの利用度が向上しました。

このため、僕自身のためにも、時刻表ビューのPDF出力を改善することが必要になってきました。

2016年11月19日 (土)

Windows10では、時刻表ビューの縦書き表示が正しく表示されない問題

2016日6月26日の記事でお話しましたとおり、Windows10では、OuDiaの時刻表ビューの縦書き表示が正しく表示されません。

  • 縦書きセル中の横書き半角数字が、正しい位置に表示されず、真下の文字と重なる
  • 縦書きのセルの高さが、今までの2倍ほどの大きさになる

Windows10_2

  Widnows10では他にも問題があったので、僕のPCはWindows7に戻してしまいました。このため、この問題を再現させることができなくなりました。

そこで、Windows10の動くPCを借りてきて、リモートデバッグで原因調査をすることにしました。リモートデバッグを使うことにより、Windows10上でOuDiaを動作させて、その動作をWindows7のデバッガーで解析することができます。

その結果明らかになった原因は、

Windows7とWindows10とでは、GetTextMetrics() 関数によって得られる TEXTMETRIC::tmMaxCharWidth  の値が異なる。

ということでした。 "@MS ゴシック" の9ポイントのフォントの場合、TEXTMETRIC::tmMaxCharWidth の値は、

  • Windows7では 13
  • Windows10 では 24

となります。
OuDiaの時刻表ビューは、TEXTMETRIC::tmMaxCharWidth  を使って、縦書きセルの高さや、文字の位置を計算しています。このため、Windows7 と Windows10 とで、時刻表ビューの表示が全く違ってしまうのです。

文字の高さを示す TEXTMETRIC::tmHeight は、Windows7、Windows10 のどちらでも12 です。Windows10の返す 24 という値は、一般的な文字を考えると、おかしな値です。高さ12ピクセル・幅24ピクセルの文字とは、一体どんな文字のことなのでしょう?

というわけで、縦書きセルの描画は、OSの違いの影響を受けない TEXTMETRIC::tmHeight を使って行うことにしました。

Windows10_161119

この変更を行ったOuDiaは、なるべく早くリリースしたいと思います。

2016年8月28日 (日)

OuDiaのホームページは移転しました

本年2月にご案内したとおり、OuDiaのホームページは、移転しました。

http://take-okm.a.la9.jp/oudia/

本年2月にも記しましたとおり、これまで利用していた @nifty の『@homepage』サービスが終了することになったためです。

http://oudiary.cocolog-nifty.com/blog/2016/02/oudia-adfc.html

移転先では当初、CGIがうまく動かなくて苦労しました。OuDiaのホームページでは、ファイルのダウンロード回数を数えるのにPerlによるCGIを使っています。しかし、いまではPerlを使う機会が全く無くなったため、うまく動かないときの問題の切り分け方法が思い出せなくなっていました。CGIは2006年に作り、2014年に一度手直ししただけですので。

2005年ごろには、動的なWebサイトを作る方法としてPerlのCGIは良く使われていましたが、今ではあまり使われなくなったようですね。本屋での入門書が昔よりも減ったことが、これを示していると思います。

もっとも、入門書が減って新規の習得が難しくなっているという傾向は、OuDiaで使用しているMFCにも顕著です。今後、OuDiaのソースコードが読める人間はどんどん減っていくと思われます。そろそろ、より現代的な言語・フレームワークによって作り直された、新たなダイヤグラムソフトの出現が待たれるようになってきています。

より以前の記事一覧