![]()
| 1 弁護士の在不在を事務局に知らせたい 当事務所は、手狭のため、03年10月に2フロアに事務所を拡大しました。その結果、弁護士室を8階とし、7階の《事務局室ならびに相談室》とフロアが別々になることになりました。 これまでも、7階の二つの別々の部屋を使っていたことはいたのですが、今度は完全にフロアが分かれてしまいました。そこで困るのが、弁護士がいるのかいないのかが事務局に分からないこと。電話がかかってきたり、必要な連絡があるときに、弁護士の在不在をどのように確認するかが問題でした。 そこで作ったのが以下のシステムです。 2 パソコンをシンクロさせ弁護士の在室状況を知らせるシステム 8階弁護士室の入口に、いらなくなった古いパソコンを置き、弁護士室端末とする。7階の事務局室にもいらなくなった古いパソコンを置く。当事務所のすべてのパソコンは原則としてLANにつながっていますが、これらのパソコンもこのLANにつなぐのです。 これらのパソコンには、下のような画面が出てくるようにします。8階入口のパソコンが操作用。7階の事務局室のパソコンはその結果の表示用で、8階入口のパソコンの操作に連動して表示が変わるようにします。 ![]() 操作は次のようなものです。 各弁護士の名前入りのボタンをクリックすると、その周囲の枠の色が変わります。ここでは信号のような青、黄、赤としました。「在室」の際は青、「不在」は赤、在室だが起案などで「連絡不可」を黄色としました。 外から帰ってきた弁護士は、弁護士室入口のパソコンの自分のボタンをクリックして、青にしたり黄色にしたりします。出かけるときは同様に赤に変えるのです。 7階の事務局室のパソコンには、8階入口のパソコンと同じ画面が表示されるので、これで、事務局室から、弁護士室の出入りが分かることになります。 3 どんなソフトを使っているのか 実は、このシステムには二種のソフトが関わっています。 ひとつは、ボタンや色を表示させ、ボタンクリックで色を変えるというシステム自体を作るソフト。 もうひとつは、8階入口のパソコンでの操作を7階の事務局室のパソコンに表示させるソフトです。 後者は、ラップリンクという市販のソフトをそのまま使っています。これは、LANやインターネットでつながっている特定のパソコン同士を使い、1カ所の操作で他の場所のパソコンを操るという場合に使うものです。 事務所と自宅のパソコンをインターネット経由で常時接続しておき、自宅から事務所のパソコンを呼び出して事務所のパソコンを遠隔操作し、ファイルを取り出したり加工・プリントしたりなど、自宅のパソコンのように扱うことも可能です(どれだけの必要性があるかはともかく)。 本システムでは、LANでつながっている7階と8階の2台のパソコン同士をリンクさせ、7階の事務局室のパソコン画面に、8階入口のパソコンの画面を映し出すような設定を行います。これによって、8階での操作の内容が常時7階のパソコン上に表示されるようにしたのです。 ではもう一つの、三色のボタン表示システムはどうするか。 これは、表計算ソフト(ロータス123)を使用しています。 表計算ソフトといえば、表の数字を自動的に合計したり、グラフ化したりするために通常は使用されています。千葉県弁護士会では、リーガルサービスの割振を、このロータス123を使って自動化していることは、『槇』(03年3月発行)でご紹介しました。このロータス123のマクロを、ここでも活用したのです。 4 マクロ概要 プログラムに相当するマクロは以下のようなものです。 A柴田 {IF @CELL("BACKGROUNDCOLOR",SHIBA)=50}{x} {IF @CELL("BACKGROUNDCOLOR",SHIBA)=54}{y} {IF @CELL("BACKGROUNDCOLOR",SHIBA)=96}{z} {IF 色="黄"}{style-interior 96,,,,,SHIBA} {IF 色="赤"}{style-interior 54,,,,,SHIBA} {IF 色="青"}{style-interior 50,,,,,SHIBA} B石井 {IF @CELL("BACKGROUNDCOLOR",ISHI)=50}{x} {IF @CELL("BACKGROUNDCOLOR",ISHI)=54}{y} {IF @CELL("BACKGROUNDCOLOR",ISHI)=96}{z} {IF 色="黄"}{style-interior 96,,,,,ISHI} {IF 色="赤"}{style-interior 54,,,,,ISHI} {IF 色="青"}{style-interior 50,,,,,ISHI} C鈴木 {IF @CELL("BACKGROUNDCOLOR",SUZU)=50}{x} {IF @CELL("BACKGROUNDCOLOR",SUZU)=54}{y} {IF @CELL("BACKGROUNDCOLOR",SUZU)=96}{z} {IF 色="黄"}{style-interior 96,,,,,SUZU} {IF 色="赤"}{style-interior 54,,,,,SUZU} ,"{IF 色="青"}{style-interior 50,,,,,SUZU} ごらんの通り、一部を除いて同様の内容のプログラムの繰り返しなので、以下は省略。 これらのプログラムの他に、 /c黄~色~ /c青~色~ /c赤~色~ という3行だけのプログラムも使用します(行間が1行ずつ空いているのは、それぞれの行が別のプログラムであることを示しています。空けないと、まとめて実行されてしまいます)。 また、これらを支えるものとして、以下のような「範囲名」がつけられています。左側が範囲名、その右側が範囲名のつけられている場所(範囲)を示しています。 \A B:B1..B:B1 \B B:B8..B:B8 \C B:B15..B:B \D B:B22..B:B \E B:B29..B:B \F B:B36..B:B \G B:B43..B:B \H B:B50..B:B \I B:B57..B:B \J B:B64..B:B \K B:B71..B:B \L B:B78..B:B AKI A:J9..A:J9 BATA A:F9..A:F9 ICHI A:L7..A:L7 ISHI A:D7..A:D7 KAWA A:H7..A:H7 KOU A:H9..A:H9 SHIBA A:B7..A:B7 SUYA A:D9..A:D9 SUZU A:F7..A:F7 SYUU A:L9..A:L9 UTSU A:B9..A:B9 YAMA A:J7..A:J7 X B:G1..B:G1 Y B:G3..B:G3 Z B:G6..B:G6 色 B:J1..B:J1 黄 B:I1..B:I1 青 B:I3..B:I3 赤 B:I5..B:I5 以上です。 ちょっとマニアックになりますが、それぞれのマクロの意味を簡単に説明してみましょう。案外簡単だ、自分にも・・・、と思われるのではないでしょうか。 5 マクロの具体的な説明 以下のひとかたまりのマクロは、ボタン『柴田』を操作する際のマクロです。 A柴田 {IF @CELL("BACKGROUNDCOLOR",SHIBA)=50}{x} {IF @CELL("BACKGROUNDCOLOR",SHIBA)=54}{y} {IF @CELL("BACKGROUNDCOLOR",SHIBA)=96}{z} {IF 色="黄"}{style-interior 96,,,,,SHIBA} {IF 色="赤"}{style-interior 54,,,,,SHIBA} {IF 色="青"}{style-interior 50,,,,,SHIBA} 実は、この2行目の場所に¥Aというマクロの名前をつけたので、わかりやすくするために「A柴田」の表示を最初に置きました。柴田先生用のボタンのマクロで名前は¥A だよ、という意味です。 同様にボタン『石井』用のマクロには¥Bと名前をつけたのでB石井です。 つまり実質的なマクロは次の行(2行目)からです。 6行ありますが、これも上の3行の固まりと下の3行の固まりとで、各々、別の仕事をしています。 {IF・・・}{x} というのは、文字通り、もし、前の括弧内の条件が成立したら、後ろの括弧内の命令を実行せよというものです。このようなものを三行用意し、三つの場合のそれぞれの処理内容を変えています(こういう使用法を分岐処理といいます)。 ここでの条件は、まず「 @CELL("BACKGROUNDCOLOR",SHIBA)=50」と記載しましたが、これは、SHIBAという名称の範囲(柴田ボタンの周囲の色の変わる部分にこの名を付しました)の背景色(BACKGROUNDCOLOR)が「50」(これは色を番号で表したもので、黄色に相当します)かどうかという条件です。 つまり、柴田先生のボタンの周りの色が何色かを調べさせ、黄色なら{x}を実行しろという命令です。 同じように、{IF @CELL("BACKGROUNDCOLOR",SHIBA)=54}{y}は、柴田ボタンの周りの色が「54」(青)なら、{y}を実行しろという命令。 {IF @CELL("BACKGROUNDCOLOR",SHIBA)=96}{z}は、「96」(赤)なら{z}を実行しろという命令です。 柴田先生のボタンが押された時に、まず、押された際のボタンの周りの色がどうなっているのかが分からなければ、色をどのように変えるのかが決まりません。ここでは、青なら黄色に変えよう、黄色なら赤に変えよう、赤なら青に変えようと言う順序(つまり交通信号と一緒です)で、順次変わるようにしたいと考えたので、まず、ボタンを押す際の色がどうなっているのかを確認する作業が先行するという訳です。 そして、ここで出てきた{x}{y}{z}という命令というのは、先ほど出てきた、1行だけの命令です。すなわち、{x}というのが、「/c黄~色~」、{y}というのが「/c青~色~」、{z}というのが、「/c赤~色~」です。これらは、「色」という場所に「黄」と書き込みなさい(「黄」の場所のデータである「黄」をコピーしなさい)、「青」と書き込みなさい、「赤」と書き込みなさいという命令です。 つまり、何色になっているのか調べた結果を、「色」という場所に書き込む訳です。 さて、このようにして現状が把握できましたので、次は、「色」の場所が「青」なのか、「黄」なのか「赤」なのかによって、それぞれに対応した次の仕事に移ります。これが下の三行です。 {IF 色="黄"}{style-interior 96,,,,,SHIBA} {IF 色="赤"}{style-interior 54,,,,,SHIBA} {IF 色="青"}{style-interior 50,,,,,SHIBA} この1行目は、「色」が「黄」ならという条件を与え、SHIBAという範囲の色を赤に変えなさいという命令を出しています。style-interiorという命令は、いろいろ細かい指示を出すことのできる命令のようで、この細かい命令用の引数(ひきすう、細かい条件の指示データ)を使えますが、ここではこれらの引数は不要として、本来引数が入る場所を省略して「,,,,,」などとしています。カンマが5個ありますが、中身は省略しても個数分はきちんと書かないと動いてくれません(プログラムのわがままなところです)。 このようにして、黄色なら赤にさせ、赤なら青にさせ、青なら黄色にさせる訳です。 6 疑問が出てきましたか 以上の説明を聞くと、次のような疑問を抱かれた方も多いと思います。 上の三行で、現在の色を調べたら、直ちに、色を変えてしまえば良いではないか、どうしてわざわざ現在の色を別の場所に書き込んで、書き込んだ色をまた調べて色を変えさせるような二度手間を取るのか、と。 つまり、{x}とか{y}とか{z}とかの命令をやめ、その代わりに行の後半に{style-interior 96,,,,,SHIBA}などの命令を直ちに書いてしまえば良いではないかという指摘です。 これは私もそう考えたのですが、実はこれではマクロは正しく動いてくれません。その理由は、マクロの仕組みにあります。 マクロは、プログラムの書かれている場所を順次左から右へ命令を読みながら実行し、命令が無くなったら、下の行に移動し、改めて左から右へ命令を読み込んでいくという仕組みで動いています(下の行もなくなれば、実行終了です)。 先の分岐処理の場合、3行の{IF @CELL("・・・}がありましたが、これは、青か、赤か、黄かを調べるプログラムで、該当した行の後半の命令を実行しますが、該当しない行の命令は(該当しないのですから)そのまま通過して無視されます。 つまり、調べた結果が青なら、「色」に「青」と記入しますが、赤や黄なら、妥当しないということで、何もされません。同様に赤なら「赤」、黄なら「黄」と記入しますが、それ以外の行の命令は無視されて実行されないのです。 ところが、せっかくこういう仕組みを持っているのに、これらの行の後半に、色を変える命令を直接書いてしまうと、次のような不都合が発生します。 たとえば1行目が実行され、条件が成立している(黄色だと判断される)ことが分かった段階で、後半の命令で色が書き換えられてしまうと(赤になってしまうことになります)、次の行に進んだ際に、この変わってしまった色(赤)が審査の対象となって、赤なら青にしろという命令が実行されてしまうことになるのです。つまり、1回のボタン押しで、黄色だったのが赤に変わりさらに青に変わってしまうことになります。 このような不都合を避けるために置いたのが、「色」ボックスに、調べた結果の色を書き込むという手順です。 これだと、調査対象自体には触らずに調査結果だけを残すことができますので、後の行での調査に影響を与える心配がなくなります。その上で、最後の3行で、処理内容を改めて指示するということにしているものです。 実は、このようなことは、マクロの教科書には記載されていません。マクロを書いている内に、おかしなマクロの動きの原因を究明して行く中で、一種のノウハウのようにして体得されたものです(あるいは、他の一般的なプログラムの教科書では、当たり前のルールとしてスキル化されているのではないかと想像しています。マクロの教科書には、最小限のことしか書かれていないので、実際に使いながら不都合を解消していくような迂遠な作業を強要されている気がしますが)。 7 応用自在です ここでは、赤青黄の三色を順次表示させるようにしました。しかし、以上の説明を見ると、こんなことなら他にもいろいろやりようがある、たとえば、4色にしても良いし5色も可能であるということに気づかれたことでしょう。 もとより、色の変化だけでは分かりにくければ、同時に文字が出るようにして、「在室」、「資料室」、「会議室」など、具体的にどういう状態かが分かるように文字を表示させるようにもできます。 さらに、事務局は、常時画面を見張っている訳ではないので、ボタンがクリックされたときには、誰かが帰ってきた(出て行った)ということを知らせるために、「ピンポン」などの効果音などを流すようにすることも可能です。 さらには、弁護士毎にこの効果音を変えることも可能です(A弁護士はおどろおどろしい効果音、B弁護士は豪快なファンファーレ、C弁護士はかわいらしい効果音などという風に)。 このような使い方は、当事務所のような複数フロアにまたがるような事務所で有効ですが、似たような条件のところでも応用できるのではないでしょうか。 たとえば、弁護士会などでは、執行部室が3階なので、事務局室と執行部室とをこのようなシステムでつなぎ、執行部室に在室しているか、会館内の他の会議室にいるか、すでに外に出かけてしまったか、などの区分けによって表示させることが可能です。 工夫次第では、いろいろな使い道のアイディアがあるかもしれません。 LANが当たり前となり、パソコンの買い換えで古いパソコンが不要になる昨今、「工夫次第で不要パソコンもまだまだ使い道あり」、というところでしょうか。 追伸 このシステムを使ってみたいという方、マクロをご提供します。内容についてもご相談に応じますので、ご一報ください。 (千葉県弁護士会会報『槇』2005年3月発行所収) |