カタツムリ2007年09月09日

『プログラミング作法について・・・(b)ファイルロック』

user_20070909a.jpg

昨日に引き続き、ファイルロックについて説明して行きたいと思います。

早速ですが、図を見て下さい。

目的のファイルがあり、それを2人が編集する場合に必ず起こる問題です。

ここで時系列に沿って、シミレートしてみます。

①→Aさんが、ファイルを取り出し編集します。

②→続いて、Bさんが、ファイルを取り出し編集します。

③→Aさんが、編集したファイルを保存します。

④→Bさんが、編集したファイルを保存します。

この④の処理で、不具合が発生してしまいます。

つまり、Aさんの編集内容が、反映されません。Bさんによって、上書きされてしまうからです。

従って、これを防ぐには、2人の間で、最初にルールを決める必要がありますね。

皆さんも、どんなルールがあるか、少し想像してみて下さい。

そんなに難しい話ではありませんね。また答えは、ひとつではありません。

人数が多い場合など、実際の環境によって変わることも想像してみて下さい。


まず一番確実で強力な方法は、完全なファイルロックです。【排他ロック】ともいいます。

つまりAさんが、ファイルを編集しようと瞬間「①」に、

Bさんが、そのファイルに対して触れなくしてしまいます。

「②」の動作で、エラーになることです。

これによって、①→③→②→④ の処理になって問題が解決します。

でも、このルールでは、少々使い勝手が悪いことが起こります。

仮にAさんが、ファイルを一日中編集している場合は、Bさんはそのファイルすら見れません。

編集しないまでも、ファイルを見たいときも起こるでしょう。

2つめの方法は、編集はできないが、読み込むことができるルールです。

こちらは、【共有ロック】などと呼ばれています。

前者と後者、どちらが良いかは、いろいろな状況によって選択の余地があります。

大切なことは、1つの物を、2人以上で利用することに起きる不具合です。

この現象は、プログラムのほか、データーベースなどでも起こりますし、現実の社会の中でも、沢山ありますね。

例えば、『私のはさみがない』『ボールペンがない』、誰か使った?・・・とかとか?(^^;;

結局、隣の人の引き出しの中に、入っていたりとか?

その結果、『使ったものは、もとの場所に戻そう。』なんて、はりがみ貼られていたりなどなど・・・

つまり現実も、プログラムも一緒です。現実を仮装的にシミレートすることが、プログラミング作成になるのです。

実は、プログラムを作るときに重要なことは、現実の仕組みを理解すること、つまり仕事の仕組みを理解する事なのです。

ゲームの場合でいえば、オセロを作ろうとすれば、オセロをマスターして、上手でなければ、よいソフトは、できません。

話を戻しますと、現実に起こっている問題を、正しく動作するように、ルール化すること。

これがまさに、SEの仕事であり、システム設計です。

そしてそれを、コンピューターで処理するようにプログラムに変えていくことが、プログラマーの仕事です。

ゲームの場合は、ゲームについて、システムの場合は、サービスや業務についての全てを知らなければなりません。

例をあげますと、弊社で、アパレルのPOSレジシステムを、ゼロから構築した時、

2名のエンジニアが実際の業務を、最低半年間、体験しました。

そして現状に合わせた仕様を作成し、また更に業務改善も含めて設計したのです。

このことから想像できるように、皆さんは、普段からの業務の中に、このSEとしての視点を持って、働く必要があります。

どうすれば、もっと効率的に作業ができるだろうか?

作業スピード、作業の品質など、改善点を考えられるか?

この視点を常にもって、経験を積めば、必ずSEになれます。

プログラマーを目指す人は、SEの視点で、もっと現実の仕組みを理解するように努めていけば、プログラムも自然と書けるようになります。


話が長くなり恐縮ですが、一つのものを複数で使用するときの問題はどこにでも発生します。

ルールをしっかり決める事が、解決の第一歩ですが、それを、いろいろなことに応用して下さい。

現実の中に問題は沢山あります。物事の本質を見抜けるようになるまで、深く考えて見ましょう。


ツイッターはじめました~フォロー待ってま~す!!
↓↓↓下記の3つのバナーをクリックして下さい。ランキングUPにご協力をお願いします。↓↓↓

にほんブログ村 経営ブログへランキングUP!

ランキングUP!

banner2.gif 人気blogランキング!

投稿者 shiozumi : 11:48 | トラックバック (0)

このエントリーのトラックバックURL

http://blog.e-smile.ne.jp/cgi-bin/mt/mt-tb.cgi/48