こんにちは、株式会社ZeroDivideの倉橋です。
2021年4月9日にTrinityのバージョン10.00をリリースしました。詳細については以下のアドレスにまとめがありますので、興味のある方は参照して下さい。
https://www.zerodivide.co.jp/trinity/trinity4r.html
このコラムでは普段はあまりお話しする機会のない実装の背景について、トピックごとに5回に分けてお話ししていきたいと思います。最後は、「ファイル処理の見直し」についてです。
「ミリ秒のファイルのロック」に着目
今回のバージョンアップでは、ファイル処理の見直しを行うことで、偶発的に発生するエラーに対応しています。
詳細はリリースノートに詳しく書いてありますが、ここでは環境の変化が既存のソフトウェアに与える影響について少し掘り下げていきたいと思います。
今回の見直しで注目したのが、「ミリ秒のファイルのロック」です。
たとえばプログラムで保管したファイルを直後に読み込もうとした時、すでにファイルを「別の何か」がロックして読めない状態が発生することがあります。
一般的に、プログラムは記述された順番でシーケンシャルに実行されていきます。つまりファイルの保管が完了した直後、ファイルはその時点で私の手を離れたと同時に、誰の手にも委ねられていないのが本来の姿です。しかし、そのファイルを「何か」が読み書きできないようにロックしてしまうわけです。
プログラムは読めることを前提に書かれているので、結果的にエラーが発生しますが、こうした事案が以前はまったく発生していないかというと、必ずしもそうではありません。ただ、やはり以前よりも目にする機会は増えているように感じます。
あるお客様で、ファイルの保管後に「何か」がごく短い時間だけファイルをロックすることが原因で、特定の処理が終わった後に、極まれにファイルの削除に失敗する事案が発生したことがあります。結果的にゴミファイルが溜まって、不具合の原因になっていました。
その時はロジックを整理することで、そもそもファイルを保管しないように変更したのですが、今回の見直しも、背景として同じような問題に起因するのではないかと推測しています。具体的には、時代とともに厳しくなっているセキュリティ系プログラムや監視プログラムなどが原因ではないかと考えています。
ただし、「これらの仕組みがあるからTrinityが使用できない」では、企業で安心して利用いただくことはできません。
今後も同じように、「従来は問題がなかったのに、時代が進むことで発生する問題」が出てくると思いますが、常にTrinityを刷新し続けることで、お客様が安心して利用できる製品作りを目指していければと考えています。
以上、5回にわたってリリースノートのトピックスについてお話をしていきました。
プログラムの機能追加は、思い付きやひらめきで行われる側面もあります。あまり先のことを考えずに、必要な機能をその時できる方法で実装するので、「この機能ってよく見ると、昔実装した機能に似てるな」とか、「新しい機能はこんな使い方ができるけど、それだと昔実装したこの機能が不要になるな」とか、いろいろ出てきます。
しかしそうした事態を恐れずに、製品が少しでもよくなるならどんどん作り込んでいくことが、結局のところよりよい製品に行きつく近道なんじゃないかと思っています。
まずは、作って動かす。そこから問題点や次につながるひらめきを得る。そうした繰り返しで手と頭を動かし続けることが、よりよい製品作りには必要じゃないかと思っています。
今後も、「こんなことができるようになったんだ!」と驚かれるような製品作りを目指していきます。
気づきをもらい、コツコツ実装
第2回 開発した「日本語機能」への反応に開発者として思うこと
第3回 「ツールと設計書」の関係は「カーナビと地図」に似ている
第5回 Trinityリリースノート・トピックス❶ ~「ソース検索辞書」の検索で利用できる「条件式」の追加
第6回 Trinityリリースノート・トピックス❷ ~「簡易問い合わせサーバー」のサンプルサイトの機能強化