レアもの2015年09月15日 06:40

レアもの


CCRって、やっぱ流行ってないんだ・・・。

全世界を見た時には、レクリエーショナルレベルのリブリーザーの普及は、当初PADIが目論んだ規模より、桁違いに少ないらしい。

浮沈子は、PADIがCCRに手を出したというので、いよいよ本格的な普及期に入るのかと、大いに期待してたんだがな。

弘法にも筆の誤り・・・。

徹底した市場調査と、的確な指導教材の開発で、ここ一発の大逆転をしているのかと思っていたら、どうもそうではないらしい・・・。

まあ、単なる噂かもしれないが、2012年にリリースされたタイプRも、それ程売れてはいないようだ。

もちろん、PADIの規模にとってということではある。

浮沈子的には、少しでも売れ続けて、普及していけばいいので、それでもいいんだが、大金を投じたPADIとしてはそうはいかないだろう。

そう、ビジネスにはならない。

道楽である。

好事家(こうずか)の嗜み。

しかし、理にかなった潜水器で、高品位のダイビングを楽しむことが出来るのだから、それを求める人は一定以上いると信じている。

何億円もする個人用潜水艇で、ガラス越し(アクリル樹脂越し?)に水中世界を楽しむことは出来るが、それは観光であってダイビングではない。

高圧の環境に生身を晒して潜る環境圧潜水こそ、道楽として相応しい。

ゴルフクラブや盆栽や茶器や絵画に、莫大な金を払うのに比べれば、遥かに実用性が高いといえよう(うーん、そうかなあ?)。

オープンサーキットのシングルタンクで潜るダイビングとは、似て非なるものである(うーん、そうかなあ?)。

まあいい。

だから、CCRのインストラクターを目指す浮沈子にとっては、それは習い事のお師匠さんのイメージなのだ。

かつて三味線を習っていた浮沈子は、あんな感じでCCRと向き合っている。

芸の世界、技や匠の世界であって、スポーツと業務、作業といったイメージはない。

同じCCRに向き合うにも、いろいろなスタンスがあっていいのだ。

水中写真家にとっては、陸上の脚立や三脚みたいなもんかもな。

浮沈子は、道楽である。

だから、道楽を始めたいと思っている方がいれば、少しでもお手伝いをして、楽しく始められるようにして差し上げたいという程度だ。

PADIは、そうではない。

あくまでもビジネスである。

儲かるかどうか。

それが全てだ。

それは、別に悪い考えではない。

短期的な収益が上がらなければ、撤収することも有り得る。

まあ、細々とでも続いていれば、コースを維持するのに、さほどのコストは掛からないだろうから、直ちに撤収ということはないだろう。

SCRだって、未だにスペシャルティとして残ってるくらいだ(日本では宣伝してませんが、基準にはあります)。

リブリーザーの日本語マニュアルなんて、永久にできない(断言!?)。

ビジネス的にはネガな状況だが、浮沈子的には、レアな価値が持続するということであって、悪いことばかりではない。

認知度が上がっても、やってる人が少ないというのは、供給側にとっては面白くないだろうが、需要側にとっては目立ち度が上がるわけだな。

暫くは、そういう状況なんだろう。

それはそれで、仕方がない。

100年待つしかない。

そんなには待てないので、今日から石垣へ行ってくる。

もっと酸素を!。

プロトタイプ2015年09月15日 16:13

プロトタイプ


減圧プログラムの作成にチャレンジしている。

などと書くと、たいそうな話に聞こえるが、プログラミングの学習を兼ねて、厚生労働省が公開している減圧式を元ネタにして、法が定める最低限の減圧スケジュールを気軽に計算するというのが趣旨だ。

電卓代わりに書いているに過ぎない。

それでも、素人が減圧表を理論式から計算するとなると、電卓を叩くのは骨だ(やる気も起きないしな)。

表計算では作ってみたが、ベタなプログラムで書いた方が手軽に使えるし、手順も明快になる。

前回までは、いきなりコードを書いてみたが、浮上に伴うロジックの回し方はいささか複雑なので、簡単な演算と少ない要素を元に、プロトタイプを作ってみて、動作を確認してから実際に使用するコードを書くことにした。

プログラミングに慣れている方から見れば、これしきのことにプロトタイプもくそもあるまいと思われるかもしれないが、素人なので勘弁してほしい。

で、書いてみたのがこれ。

「プロトタイプ:
10 dim a(3)
20 a(1) = 100
30 a(2) = 200
40 a(3) = 300
50 dim b(3)
60 b(1) = 80
70 b(2) = 170
80 b(3) = 252
90 dim c(3)
100 j = 0
110 while j < 20
120 for i = 1 to 3
130 if a(i)-3*j > b(i) then c(i) = 1 else c(i) = 0
140 next i
150 if c(1)+c(2)+c(3) = 0 then exit while
160 j = j+1
170 wend
180 for i = 1 to 3
190 print a(i),b(i),c(i),a(i)-3*j,j
200 next i
210 end」

配列a(3)は、窒素分圧のイメージ(コンパートメント3つかあ?)。

ということは当然、配列b(3)がその深度におけるM値ということになる。

チップマンクベーシックでは、配列の要素(配列変数というらしい)の番地は0から始まるらしいので、4つの配列変数をもつ配列を定義してしまっているのだが、まあ、そこんとこは分かりやすければいいということで・・・。

90行目では、判定用の配列を用意した。

もっとうまいやり方があるかもしれないが、表計算ソフトで使った方式を準用して、1または0のフラグを立てることにした。

分圧がM値より等しいか小さくなったら0、そうでなければ1を立てる。

本当は、初期値として全部1を立ててから計算するのがいいのだが、130行目の条件分岐は排他的に定義しているので、例外なく切り分けられるために、初期値の設定は省略した。

ちなみに、チップマンクベーシックでは、未定義の配列変数は0になるようである。

ここでは、簡単に繰り返し変数jを3倍してaから引くという計算をしている。

jは、深度の段階に対応させるつもりなので、while文で回している(最大値は20未満としているが、もっと少なくてもいい:そんなに多段階の減圧停止はない)。

110行目だが、初期値はその前(100行目)で定義しないといけない。

浅はかな浮沈子は、while文の後に書いてしまったので、無限ループになった・・・。

コントロール+Cボタンでぶった切ること3回!!!(←3回)。

原因が分かるまで、それだけ回数が掛かったということだな(学習能力、無いんで・・・)。

別に、for文で回して条件分岐はgoto書いて抜けてもいいんだが、なるべく使いたくなかったのでwhile文にチャレンジした。

150行目がそれで、判定用の配列cの各配列変数を足しあげて、全ての分圧がM値を下回ったことを確認している。

なんか、もっとうまいやり方があるに違いない。

足しあげる際にも、要素をずらずら書き並べるのではなく、for文で回すとか。

「配列a(2)に入っている配列変数を順に足しあげる。
10 dim a(2)
20 a(0) = 7
30 a(1) = 8
40 a(2) = 9
50 a = 0
60 for i = 0 to 2
70 a = a+a(i)
80 next i
90 print a
100 end
>run
24
>」

この例で分かるように、チップマンクベーシックでは、配列は0番目から始まる。

また、変数aと配列a(2)は区別されている。

変数は、本来letを付けて定義してから使うのが礼儀らしいが、いきなり値を代入してしまっても問題ない(礼儀知らずなので)。

3つくらいの配列変数を足すなら、直接書いてもいいが、1000個あったら回した方がいいだろう(根性で、直接書いてもいいですが!)。

プロトタイプに戻ろう。

160行目でインクリメントしている(1増やすことを、そう呼ぶんだそうだ)。

あとは、確認のために画面に表示して終わり。

初回の停止深度を確定するには、この程度でいいが、減圧停止時間を算出するには、1分刻みで停止+浮上(3m)の手順を繰り返し、次の深度に浮上した時点での分圧とM値の比較を行わなければならないから、少し複雑になる。

しかし、判定のロジックはこれでいい。

思いのほか、すんなりいったので、気分がいいな。

旨いやり方、資源を無駄遣いしない書き方、その他いろいろあるんだろうが、大事なのはちゃんと動くこと、想定外の動きをしないこと、見通しがいいこと、何をしているかがわかりやすいこと・・・。

実行するとこうなる。

「>run
100 80 0 52 16
200 170 0 152 16
300 252 0 252 16
>」

左から配列a、配列b、配列c、計算した値、jとなっている。

3つ目は、同じ値になるようにして、判定が正確に行われているかを見ている。

分圧がM値と等しいなら、その深度まで浮上できるということなので、そういう判定にしたいから。

一番右のjの値が欲しい値だ。

水面からj番目の減圧深度ということになる。

通常は3m刻みで深くするから、この例だと48mということになる(水面を0番目としているため)。

実際には、そんなに深いのはない。

あくまでも、プロトタイプということで。

ジャバスクリプトとか、他言語で書くときは、それぞれの言語の仕様に従って書かなければならないが、ベーシックは柔軟性がある言語で、何でもOKみたいなところがある。

インタープリター言語なので、基本的には上から順番に逐次実行する。

サブルーチンに飛ばしたり、for文やwhile文で回したり、if文で分岐させたりもするが、それらは実行の順序を指定しているだけで、実際の処理はズラズラと続けて行われているに過ぎない。

プログラミングの「記述の手間」を省いているだけ。

1000回書かなくてもいいだけ。

コンピューターは、律儀に計算を繰り返している。

1000回足しているのだ。

有り難い話であるな。

配列cの配列変数の合計を出すところは、石垣に向かう飛行機の中で書いた。

パソコンがあれば、ちょろっと書けるのが嬉しい。

少し長くなったので、続きは別稿で。