minofoto and miscellaneous notes

個人的な備忘録ですが、たまに広く読んでもらいたい記事を書くこともあります。記事は随時修正したり追記したりすることがあります。

とりとめもない話についての、とりとめもない話

これまでの職場などで、様々な発達障害スペクトラムだろうな、と思われる方々と接してきました。ASD も AHDH も人口の数パーセントから10%を超えるくらいはいるようなので、大抵の方はそういう方がクラスメイトに居たといった経験があるだろうと思います。症状は、はっきりと生活に支障が出るレベルから、一見わからないけど本人はコミニュケーションに違和感があるといったレベルまで、様々なスペクトラム状の分布をしているようなので、意識せずにそういう方と接している人もいるでしょう。

ちなみに自分の話をしておくと、診断を受けたことはなく自己診断ですが、様々な自己診断やら本を読んで勉強した限りでは、私は ASD 傾向も ADHD 傾向もほとんどないようです。そういう人間がこういうデリケートな話題に口を挟むのは、正直ちょっと勇気がいることです。もしも失礼なことがあれば遠慮なくコメントをどうぞ。


最初に書いたような、発達障害スペクトラムの方々と接した経験はあっても、親しく接したり職場で一緒に仕事をするという関係はまたちょっと異なります。職場で一緒に仕事をする同僚、または上司や部下といった関係であったり、もしくは恋人や夫婦といった関係の場合は、コミニュケーションの密度が濃くなるだけでなく、意図を正しく伝えることが重要になりますが、ここで意思疎通がうまくできないと、どちらかが疲弊したり、ハラスメントの原因となったり、人事評価に影響したり、家庭内トラブルなどの原因にもなります。具体的なことは書きませんが、そういう苦労は人並み(か、それ以上?)にしてきています。

そういう文脈で以下のツイートを見て、なるほど、と思いました。

これまで読んだものの中で、ADHD 傾向と話のとりとめもなさ、の間の関係をきちんと説明したものはありませんでした。しかし自分の経験では ADHD 傾向のある方は皆ではありませんが、特に仕事に関係するような重要な場面で、話が長い、とりとめもない、結論がない、なぜか話の前後で謝罪される、という違和感を覚えることが多かったので、自分の経験とは合致しているように思えました。

一方で、この話にはわからない点もあります。
「話がとりとめもない」「あちこちに飛ぶ」というのはよく「女性の会話の特徴」とも言われています。自分の経験でも、「で、結局何が言いたいの?」というのをぐっとこらえて話を聞くという場面はたくさんありました。でも、そういう「女の会話」と「ADHD 特性は似たようで違うな、と感じたので以下のようなツイートをしました。


「女性の会話は共感を求める、一方男性の会話は結論を求める」とよく言われます。共感を求めるがゆえに、話の筋道や結論にはこだわらず、話をして共感し合うことを楽しむ、と解釈しています。
一方で、ADHD の特性が強く前面に出ていると感じるのが男性に多いからかもしれませんが、ADHD 傾向を感じる方と話して、共感を求められているんだな、と感じたことがあまりありません。両者は似ているようで違う脳の特性によるのかな、となんとなく思います。

でも、よくよく考えてみると、これは私の偏見によるものかもしれません。女性にも発達障害スペクトラムは存在するのに、女性の特性からコミニュケーションに適応できてしまうため、本人は苦労するけれども周りからはわかりにくい、という話を聞きます。つまり、私自身が女性の ADHD 傾向に鈍感なだけで、女性の中でも特にとりとめもない話を好む方は ADHD 傾向が濃厚、という可能性もありますね。性別による違いと、ADHD 傾向はちょっと角度が違う別のベクトルだけど、実は似たメカニズムを共有しているのかもしれません。
そもそも同性であってもそういう傾向を判別するのは簡単ではありません。男性の友人から「実は自分は ASD/ADHDなんだ」とカミングアウトされて、それまで接していて全く気付かず驚いたことも複数回あるので、勝手に外見で判断することはできないし、ましてやそういう偏見を元に考察するのは意味がないかもしれませんね。

とりとめもない話について書こうとして、結局自分の話がとりとめもなくなってしまいましたので、この辺でやめておきます。

十分長く生きてきて、いろんな人と出会いましたが、まだまだ他人のことは全然わからないし、出会う人みんなそれぞれ異なる個性があって理解するのは難しい。人間ってつくづく奥深いものですね。

連休の雌阿寒岳

5月の連休は、北見に泊まって雌阿寒岳に登ってきました。

登山口の阿寒温泉に駐車。針葉樹林帯から登り始めます。
https://photos.smugmug.com/Mountains/i-cN3ZPQh/0/534fb8b8/M/DSCF5710-M.jpg
地図には「急坂」と記載されている割には、割と穏やかな登りでどんどん登れます。
針葉樹林帯を抜け、ハイマツ帯に出ると一気に展望が広がります。快晴で背後の大雪山系が美しい。
https://photos.smugmug.com/Mountains/i-XX6nkS7/0/a6a05038/M/DSCF5711-M.jpg
活動している火山だけあって、噴火に注意するよう看板が立てられています。注意内容も場所ごとに変えてあって手が込んでいます。
https://photos.smugmug.com/Mountains/i-3j79Dpb/0/836b8757/M/DSCF5725-M.jpg

https://photos.smugmug.com/Mountains/i-fdqDKC5/0/5f672355/M/DSCF5732-M.jpg
今年は雪解けが早いのではないかと思いますが、所々に残雪が。アイゼンが必要なほどではなく、しっかりした靴があれば登れます。雪解けでドロドロのところがあるのでスパッツがあると安心です。また、私は使いませんが、ストックがあれば安心ですね。

活動中の火山だけあって、山頂付近は植物もなく、余計なところに立ち入ると岩ごと火口に滑落しかねない、かなりの迫力です。
https://photos.smugmug.com/Mountains/i-gZgtF7Q/0/494bacbf/M/DSCF5734-M.jpg
https://photos.smugmug.com/Mountains/i-TSZpBRj/0/5588253b/M/DSCF5741-M.jpg
色とりどりの地層も印象的。そして火口を見下ろすと神秘的な青沼の姿も。
https://photos.smugmug.com/Mountains/i-hGQw8SG/0/37c3fd31/M/DSCF5752-M.jpg

山頂からの展望は素晴らしく、阿寒湖、雄阿寒岳の向こうに知床半島羅臼岳も白く見えています。
https://photos.smugmug.com/Mountains/i-Nr2wB5T/0/f38596a2/M/DSCF5739-M.jpg

次に雌阿寒岳から少し下り、お隣の「阿寒富士」に登ります。雌阿寒岳と阿寒富士の間の鞍部から見上げると、こんなところ登れるのか、という絶望的な気分にもなります。
https://photos.smugmug.com/Mountains/i-Lkw7VfQ/0/59b1a108/M/DSCF5754-M.jpg
https://photos.smugmug.com/Mountains/i-M4V2k69/0/d1e213b2/M/DSCF5755-M.jpg
振り返った雌阿寒岳は、火口の荒々しい姿から一転して優しげな姿に見えます。

阿寒富士は登るのは修行のようですが、下りは礫を踏みしめながらサクサクと降りられました。
https://photos.smugmug.com/Mountains/i-tPWGM68/0/5fd8b908/M/DSCF5770-M.jpg
https://photos.smugmug.com/Mountains/i-NN4k4Tg/0/fde47fea/M/DSCF5773-M.jpg
下りはオンネトーのキャンプ場の方へ下りました。オンネトーの幻想的な青い水面をみて、ハイキングコースに沿って駐車場まで戻ります。
https://photos.smugmug.com/Mountains/i-sB7dJVK/0/06a8f152/M/DSCF5779-M.jpg
https://photos.smugmug.com/Mountains/i-kK4Pt3F/0/59bf17fc/M/DSCF5780-M.jpg
ちょうど水芭蕉の季節でした。

天候にも恵まれ、最高の山旅でした。

MISTEL BAROCCO キーボードの設定メモ(親指シフト用)

この分割型キーボード、かなり前から気になってはいたのですが、店頭で触ってみたかぎりでは、茶軸の音が心地よく、赤軸は今ひとつピンときませんでした。それもあって購入をずっと迷っていました。

最近肩こりがひどくなり、痛みまで出てきたので診てもらったら「姿勢が悪い」と言われ、それを口実にこの MD600 キーボードを買ってみました。いろんなレビューを読んで、静かなオフィスで使うときっとうるさいに違いないと、静音赤軸にしました。前の職場でうるさいメカニカルキーボードのENTERキーを叩きつけるように打つ人がいて、それが大嫌いだったという理由も大きいかも。実際使ってみると気持ちよく打てるので、これが正解かと思います。
これで肩こりが少しでも良くなるといいなあ。

自分のメモを兼ねて、Windows での設定を書いておきます。
親指シフト用以外に、FN キーが右側にあると指がつりそうなので、左CTRL に移動。CTRL はレジストリを書き換えて CAPS LOCK にしています。

レイヤーの選択
  • layer 1 : FN + , (赤 LED)
  • layer 2 : FN + . (緑 LED)
  • layer 3 : FN + / (青 LED)
左スペースを無変換に割り当て

レイヤーを選んでからプログラミングモードへ
FN + 右CTRL
これで右 LED が青点灯。

左スペースを無変換に
左 space 無変換 の順にタイプ(LED青点滅)
PNキーを押して青点滅から青点灯へ。

FN + 右CTRL でプログラミングモード終了

英数と ESC を反転

FN + \
英数/ESCキー下の青色LEDが点灯する。

FN キーを左 CTRL に移動

適切なレイヤーでプログラミングモードへ(FN + 右CTRL)
FN + 左shift 3秒間押す(LED赤点滅)
FN 左CTRL の順番に押す。

カーソルキーの設定(右下のFN, PN, CTRL, \ キーをカーソルキーに)

左WIN + 右space + KANA 同時押し

やまぶきRの設定

f:id:Room-B:20180321164601p:plain

Google IME の設定

f:id:Room-B:20180321160947p:plain

これで、左スペースが左親指とスペース兼用にできるはずですが、どうもうまく動作しません。右スペースしか使えないのがちょっと面倒。なぜでしょうか?

雪の三角山ハイキング

札幌市内にある三角山、標高 311 m の小さな山ですが、雪の中登ると楽しいです。


地図に道が描いてあるからと、南から登ろうとしたら、どうやらこの道は登れなくなっていたらしく、踏み跡もなく GPS だけを頼りにラッセルすることになってしまい、深山幽谷の雰囲気を味わうことになってしまいました。(OpenStreetMap の道は、あとでちゃんと消しておきました。)


これはハシブトガラかな?コガラかもしれません。(Twitter で教えてもらいました。)


雪の札幌の景色はなかなか綺麗です。


まともな登山道の方から降りると、結構たくさんの人が歩いていて踏み跡もしっかりしており安心でした。やや滑るのでアイゼンがあったほうが良いですね。こんなお地蔵さんを見ると、どうしても雪を払って褌を掛けてあげたくなります。残念ながら褌もなく、金銀財宝ももらえませんでしたが...


山を下りたところの北海道神宮には、雪をついばんで遊ぶカラスもいました。





別の日に改めて三角山に行ったときは、日差しもあり暖かな散歩日和でした。

Windows10 でも「変換」「無変換」で日本語、英語入力を切り替え

MacOS親指シフトを使うために、Lacaille が快適に使えるのですが、Windows10 では DvorakJ が突然使えなくなって困ってしまいました。
どうやら Windows10 のアップデートが原因のようです。

いろいろ試した結果、やまぶきR が一番うまく使えるようですが、MacOS と同じように、変換キーを押して日本語入力モードにし、無変換キーを押して英語入力モードに切り替える方法が使えなくなってしまいました。いちいち左手小指で「全角半角」キーを押すというインターフェイスには耐えられないので、いろいろ悩んだのですが、やまぶきRではなく、Google日本語入力で設定できることが分かったので、そのメモです。

Google 日本語入力のプロパティを開きます。
f:id:Room-B:20171229171824j:plain
キー選択の設定で編集を選択。

f:id:Room-B:20171229171919j:plain
直接入力→IMEを有効化の入力キーを Henkan (「変換」)にする。
入力文字なし→IMEを無効化の入力キーを Muhenkan (無変換)にする。

これで、再起動すれば快適に日本語英語交じりの文章を書けるようになりました。

晩秋のマッカリヌプリ(羊蹄山)

久しぶりの更新です。

北海道はそろそろ秋から冬へと季節が移ろいつつあります。時間を見つけてマッカリヌプリに登ってきました。
一般には略称の羊蹄山(ようていざん)と呼ばれるようですが、深田久弥の「日本百名山」には、「後方羊蹄山(しりべしやま)」という呼び名を大切にしたいということが書かれています。アイヌ語だとマッカリヌプリだそうです。

富士山型の火山のため、単調な登りが予想されますが、真狩村から登るルートがまだしも変化のあるルートだということで、真狩村のキャンプ場にもなっている登山口から登りました。
札幌からは自動車で2時間ほど、朝8時前には既にたくさんの車が登山用の駐車場を埋めていました。

登山口で登山届けを出して入山。麓は既に紅葉の盛りです。

しばらくはガス(霧)の中を登りましたが、山の中腹のガスを抜けると、展望が広がります。森林限界を超えるとようやく高い山らしくなりました。

秋も終わりということで、動物たちも冬ごもりの準備でしょうか、エゾシマリスが盛んにエサ集めをしている姿をあちこちで見かけました。遠くにキタキツネも見かけましたが、さすがに望遠 + トリミングでもこのくらいです。声が聞こえたのか、こちらを振り返っていますね。


シマリスはあまり人を怖がることがなく、手を差し出すと寄ってきました。ひょっとすると食べ物を与える登山者がいるのかもしれません。(ちょっと問題ですね。)

お鉢巡りをすると、山頂付近はかなり鋭い岩尾根です。


下山後は夕暮れのマッカリヌプリを眺めながら真狩温泉につかり、疲れをほぐしました。

カメラの新調?しないかも

ずっと RICOH GXR を使っています。これはこれで孤高のカメラですし、まだまだ使えそうですが、A16 ユニットの AF の遅さとか、起動時や撮影後の遅さなど、いろいろ気になるようになってきました。AFでもサクサク撮れる新しいカメラが欲しいところです。
RICOH の操作性は気に入っているですか、RICOH から新型が出る気配もなさそうですし、他を考えないといけませんね。

フィルム時代はミノルタニコンの一眼レフを使っていましたが、大きくて重い一眼レフは、どうしても持ち運びするのが億劫になってしまうので、どうしても小さいカメラに目がいってしまいます。ミラーレスということからすると、孤高の存在がオリンパスマイクロフォーサーズですね。手振れ補正の技術もトップだと思いますし、フォーサーズ時代からずっと気になっているカメラです。防塵防滴機能も良いレンズもあり、登山に良さそうですね。なぜかこれまで縁がありません。

良いレンズを出している富士フィルムですが、ネットで作例を見るとなんとなく「ピン」と来ないのです。「ベルビア」調のこってりした写真が多いせいでしょうか? 彩度を落とす設定はできるようですが...山の風景を撮ることが多いのですが、レビューで「人物撮影には最高、風景にはちょっと...」というようなことが書かれていることが多いのも気になる点です。

ソニーは、NEX-5 を持ってはいるのですが、買った当初、良いレンズがなくてがっかりしました。今は ZEISS ネームを付した良いレンズが出ているようですが、デカくて重いようですね。とはいえフルサイズのα7はなかなか悩ましい存在です。


GXR を気に入っている理由の一つが、A12 MOUNT の存在です。COSINA-VOIKTLÄNDER のレンズはなかなか他にない味わいがあるので、次もこれらのレンズが使えれば嬉しいところです。

NOKTON classic 40 mm F1.4 はポートレートに最高です。ややクセのあるレンズですが、うまく使えると最高の描写をしてくれます。やや浅い色乗りが上品で、フォーカスがシャープでかつボケが繊細で柔らかい。絞って風景を撮るのもなかなか良いです。


コンパクトな Color-Skopar 21 mm F4 はシャープで色乗りが良いレンズです。陰影描写を上手にすると、人物撮影にもよい雰囲気が出せます。気軽に持ち歩いてスナップ撮影によいですね。



Heliar classic 75 mm F1.8 も NOKTON classic と似た雰囲気の望遠レンズです。この味わいは好きですが、やはり大きくて重いので、持ち出す機会は少なめですね。

宮崎光学の PERAR 28 mm F4 は「ぺら〜る」という名前の薄いレンズです。驚きの薄さですが、ちゃんと写ります。ただ、フードも小さすぎるせいかモヤっと写ることか多いです。ハレ切り必須です。

このレンズたちを生かすとすると、やはり SONY α7II ですかね。ちょっと高いし重そうですね。お金持ちならばオリンパスソニーと両方買っちゃうのにな、と思いながら、結局迷うならどちらも買わないとなりそうな早春の1日です。

Processing3 用の BINGO プログラム

先日なぜか結婚パーティーとやらをやったのですが、まあこんな歳で結婚するからには、友達同士の縁ができるとしてもどちらかというと異業種交流会だよね、という話になり、異業種交流になるようなビンゴゲームを考えました。

参加者それぞれに番号を割り当て、割り当てられた番号が書かれたシールのシートを配ります。話をした人同士シールを交換して、白紙のビンゴカードに貼ってもらい、そのカードでビンゴゲームに参加してもらいました。いろんな人と交流を持ってもらえるきっかけを作るためです。

更に、グループで来ている友人と、ひとりで来てくれた友人が交流できるように、一人できている人には「レアカード」の番号を割り当てました。また、知り合いが1人しかいない人には「準レアカード」を割り当てました。レアカードの番号は、普通の人に比べて7倍出現しやすくしました。準レアカードの番号は、倍率3倍です。これで、レアカードを持っている人と話をするモチベーションが生まれるかと...

そして、倍率可変のビンゴをするために、オリジナルのビンゴプログラムを書きました。
素人でもちょっと凝ったグラフィックが作れるように、Java ベースの Processing という言語で作成しました。

f:id:Room-B:20170303232617j:plain
起動画面。ちょっと楽しい雰囲気にするため、半透明のカラーボールがランダムウォークします。

f:id:Room-B:20170303232637j:plain
番号が出ているところ。既に出た数字は上にリストされます。レアカードは赤で、準レアカードは黄色で表示されます。


プログラムは以下に示します。パラメーターとしてbiased1 にレアカードの番号を割り当て、biased2 に準レアカードを割り当てます。出現レートは bias_rate1, bias_rate2 で設定できます。また、人数に合わせて max_num を設定します。

//BINGO for processing
// 800x600 pixel にも対応する。

// parameters
int max_num = 75;        // max number of bingo

int decorate_num = 20;   // number of balls
int decorate_speed = 30; // speed of ball movements

int font_size = 0;       // display font size; if 0, size is set to defalt depending on the screen size;


// Rare characters  set empty ({}) for both biased1 and biased2 for normal BINGO
int bias_rate1 = 7;        // bias rate of most rare characters
int[] biased1 = {1,2,3};  // most rare characters
//int[] biased1 = {};  // most rare characters
int bias_rate2 = 3;        // bias rate of relatively rare characters
int[] biased2 = {4,5,6,7,8};  // relatively rate characters
//int[] biased2 = {};  /A/ relatively rate characters


// global variables
int mode = 0;    // mode 0: screen intialization; mode 1: BINGO started
int count = 0;   // counter to count until max_num
int current_num = -1;  // number to remember the last number
//boolean[] done = new boolean[max_num+1];

int transition = 0;
int num_display_max;

  boolean overBox;


// objects
class _Ball {
  int x, y;
  int radius;
  color c;
  int margin_x = 0;
  int margin_y = 0;
  int speed;
  
  _Ball() {
    init();
  }
  
  void init() {
    c = color(int(random(30, 145)), int(random(10, 105)), int(random(10, 105)), 105);
    x = int(random(width - margin_x*2) + margin_x);
    y = int(random(height - margin_y*2) + margin_y);
    speed = round(random(decorate_speed/1.2,decorate_speed*1.2));
    radius = round(width/25);
  }
  
  void update() {
    x += int(random(-speed, speed));
    y += int(random(-speed, speed));
    if (x > (width - margin_x)) {
      x -= width - margin_x*2;
    }
    if (y > height - margin_y) {
      y -= height - margin_y*2;
    }
    if (x < margin_x) {
      x += width - margin_x*2;
    }
    if (y < margin_y) {
      y += height - margin_y*2;
    }
  }

  void display() {
    noStroke();
    fill(c);
    ellipse(x,y,radius,radius);
  }
}

_Ball[] balls = new _Ball[decorate_num];


class _BingoTitle {
  String name;
  int size;
  int transition_density;
  
  _BingoTitle() {
    name = "BINGO";
    transition_density = 10;
  }
  
  void init() {
    if (font_size < 1) {
      size = round(width/5);
    } else {
      size = font_size;
    }
  }
  
  void display() {
    textSize(size);
    textAlign(CENTER,CENTER);
    fill(color(transition_density,transition_density,transition_density));
    text(name, 50,100,width-100, height-200);
    transition_density += 5;
    if (transition_density >= 255) {
      transition_density = 255;
      status.stat="press key to start";
    }
  }
}
_BingoTitle title = new _BingoTitle();


// 
class _MainNumber {
  int size;
  int transition_density;
  int N;
  
  _MainNumber() {
  }
  
  void init() {
    int i;
    transition_density = 12;
    
    if (font_size < 1) {
      size = round(width/5);
    } else {
      size = font_size;
    }

    //reset done counter
    //for (i=0; i<=max_num; i++) done[i] = false;
    ShownNumbers.init();
  }
  
  
  void update() {
    transition_density = 12;
    N = biased_random(max_num+1);
    while (ShownNumbers.isshown[N]) {
      N = biased_random(max_num+1);
    }
    //done[N] = true;
    ShownNumbers.add(N);
    display();
  }

  void display() {
    textSize(size);
    textAlign(CENTER,CENTER);  
    fill(color(transition_density,transition_density,transition_density));    

    text(str(N), 50,100, width-100, height-200);
 
    transition_density += 12;
    if (transition_density >= 255) {
      transition_density = 255;
    }
  }
  
} 
_MainNumber MainNumber = new _MainNumber();


// 画面の上
class _ShownNumbers {
  boolean[] isshown = new boolean[max_num+1];
  int size;
  int margin_x = 10;
  
  _ShownNumbers() {
  }
  
  void init() {
    int i;
    
    for (i=0; i<=max_num; i++) isshown[i] = false;
    
    num_display_max = 20;
    if (font_size < 1) {
      size = round(width/30);
    } else {
      size = 40;  //default value;
    }

  }
  
  void add(int num) {
    isshown[num] = true;
  }
  
  void display() {
    int i,j;
    int numbox_size_x, numbox_size_y;
    int offset_x, offset_y;
  
    textSize(size);
    textAlign(CENTER,CENTER);
    numbox_size_x = floor((width - margin_x*2)/num_display_max);
    numbox_size_y = floor(height/10);
    for(i=1; i<=max_num; i++) {
      fill(#101010);
      offset_x = (i-1 - round((i-1)/num_display_max)*num_display_max)*numbox_size_x + margin_x;
      offset_y = int((i-1)/num_display_max)*numbox_size_y;
      text(str(i), offset_x, offset_y, numbox_size_x, numbox_size_y);

      if (isshown[i] && (i != MainNumber.N)) {  //show color for biased numbers
        fill(#B0A0D0);
        for (j=0; j<biased2.length; j++) {
          if (i == biased2[j]) {
            fill(#E8E8A0);
          }
        }
        for (j=0; j<biased1.length; j++) {
          if (i == biased1[j]) {
            fill(#F88090);
          }
        }
        text(str(i), offset_x, offset_y, numbox_size_x,numbox_size_y);
      }
    }
  }

}
_ShownNumbers ShownNumbers = new _ShownNumbers();

class _Status {
  String stat = "";
  int size;
  
  _Status() {
  }
  
  void display() {
    size = round(width/50);
    textSize(size);

    textAlign(CENTER,CENTER);
    fill(64,64,64);
    text(stat, width*2/3,height*4/5, width/3,height/5);
  }
}
_Status status = new _Status();



class _Config {
  int ButtonX0, ButtonX1, ButtonY0, ButtonY1;
  color col;
  
  _Config() {
  }
  
  void init() {
    ButtonX0 = 10;
    ButtonX1 = 30;
    ButtonY0 = 500;
    ButtonY1 = 530;
    col = color(255,255,255,128);
  }
  
  void pressed() {
    col = color(255,255,0,128);
    fill(col);
    rect(ButtonX0, ButtonY0, ButtonX1-ButtonX0, ButtonY1-ButtonY0);
  }
  
  void display() {
    fill(col);
    rect(ButtonX0, ButtonY0, ButtonX1-ButtonX0, ButtonY1-ButtonY0);
  }
}
_Config config = new _Config();





int biased_random(int max){
  int rand_number;
  int bias1_threshold = biased1.length*bias_rate1;
  int bias2_threshold = biased2.length*bias_rate2;

  rand_number = int(random(1, max+floor(bias1_threshold + bias2_threshold)));
  if (rand_number >= max + bias1_threshold) {
    rand_number = biased2[int((rand_number-max-bias1_threshold) / bias_rate2)];
  } else if (rand_number >= max) {
    rand_number = biased1[int((rand_number-max) / bias_rate1)];
  }
  return(rand_number);
}

void update_balls() {
  int i;

  fill(#000000);
  rect(0, 0, width, height);
  for(i=0; i<decorate_num; i++) {
    balls[i].update();
    balls[i].display();
  }
}


void keyReleased() {  
  //if (transition >= 255) {
    mode=1;
    if (count<max_num) {
      status.stat="";      
      update_balls();

      MainNumber.update();
      ShownNumbers.display();
      count++;
    } else {
      mode=2;
      status.stat="finished";
    }
  //} else {
  //  textSize(40);
  //  textAlign(CENTER,CENTER);
  //  text("wait", width/2,height-150,500,100);
  //}
}

void mousePressed() {
  if(overBox) { 
    config.pressed();
  } else {
  }
}

void draw() {
  update_balls();
  //config.display();
  if (mouseX > config.ButtonX0 && mouseX < config.ButtonX1 && 
      mouseY > config.ButtonY0 && mouseY < config.ButtonY1) {
    overBox = true;  
  }
    
  switch (mode) {
    case 0:
      title.display();
      break;
    case 1:
      MainNumber.display();
      ShownNumbers.display();
      break;
    case 2:
      MainNumber.display();
      ShownNumbers.display();
      //status.display();
      break;    
  }
  status.display();
}

void setup() {
  int i;
  
  // setting up the screen;
  fullScreen();
  //size(800, 600);
  frameRate(10);  // speed of the balls can be regulated by this parameter.
  background(#000000);
  
  count=0;
  
  //create and initialize balls
  for (i=0;i<decorate_num;i++) {
    balls[i] = new _Ball();
  }

  title.init();
  MainNumber.init();
  //ShownNumbers.init();
  config.init();
}

マウスで操作できるコントロールパネルも実装しようとしかけて挫折した痕跡がコードに残っていますが、気にしないでください(笑)。

感想を聞いていませんが、皆さん楽しんでくれたと信じています。
いろいろとありがとう!

大雪山白雲岳登山

今更ですが、写真をぼちぼち整理しています。

7月に北海道に来て、まずは大雪山後方羊蹄山に登りたいと思っていましたが、ヒグマの事情が分からないので、できれば地元の方に案内してもらいたいと思っていましたが、ちょうど、8月14日のお盆休みにちょうど地元の人に大雪山に連れて行ってもらうことができました。車で銀泉台まで行き、そこから赤岳、白雲岳と登りました。

今年は雪解けが遅かったらしく、8月にしては雪も多く、花も多かったようです。下の写真はウサギギク。南アルプスに昔登ったときに名前を覚えたかわいい花です。



雪渓とお花畑のコントラストや、たくさんのチングルマを楽しむことができました。


コマクサも、ややシーズンを過ぎた頃でしたが、まあまあ咲いていました。


こんな夏の稜線歩きは極楽ですね。


白雲岳山頂からは、雪をたたえたカール地形が圧巻です。雪渓というか、いわゆる氷河地形ですね。


アイヌの言葉ではカムイミンタラ(神々の遊ぶ庭)というのだそうです。なるほど、ですね。

天候にも恵まれた最高の山旅でした。下山後層雲峡で温泉を楽しみました。

中国

半年ほど経ってしまいましたが、中国出張は非常に興味深かったです。
若い学生のパワーとマナーの良い都会人が印象的な旅でした。
ようやく写真を少しだけ整理したので載せてみます。

もはや長征五号を打ち上げるような科学技術大国です。

OpenStreetMap の地図メモ (notes) に私が対応している方針

私が OpenStreetMap の地図メモに個人的にどう対応しているかの方針を書いてみます。あくまで趣味でやっているので、自分もこの方針をきちんと守れている保証はありません。また、このことについて、他の方とちゃんと話し合ったことはないので、異論反論、その他のご意見を頂けると嬉しいです。

(この記事は OpenStreetMap の編集をしている方、そして地図メモを書きたい方向けに書いています。)

  • 地図メモの中で明らかな間違いや意味がないものは削除
  • 現地確認できるものは、必ず現地を確認してから地図を編集する
  • 明らかな間違いという保証がないもの、かつ、現地確認できないものは放置
  • 例外もあり
地図メモの中で明らかな間違いや意味がないものは解決

地図メモには、"test"、何も記載されていない場所に作られた "間違いです"、"自宅"、"集合場所" といった明らかに意味のないものが非常にたくさんあります。 "test" だけのものはロシアの方が管理しているとおぼしき bot によって定期的に自動削除されますが、その他の明らかに意味のないメモは、気がついたら黙って「解決済み」としています。「自宅」「集合場所」などのメモは、おそらくそのメモが自分にしか見えないと誤解した方が作成しているのではないかと思っています。

また、すでに OpenStreetMap に POI が登録されているにもかかわらず、作られたメモも解決済みとしています。「入力済み」"Already entered" などとコメントして解決することも多いです。最近は MAPS.ME によって地図の編集に加えて地図メモも残される方が結構いるので、地図メモの方が完全に重複していて新たな意味がない場合は解決済みとしています。

ただし、ログインした状態で作られた(匿名でない)地図メモには、解決済みとする理由を説明するようにしています。できるだけコミニュケーションを取ることは、コミュ二ティのために大事ですからね。

現地確認できるものは、必ず現地を確認してから地図を編集する

OpenStreetMap の編集者はライセンス条項に同意しているという前提になっていますが、特に匿名の地図メモの作者は、ライセンスに同意している保障がありません。実際に多くの地図メモを見ていると、Google Map や Bing Map を見て引き写したと思われるものが多数存在しています。明らかにそう明記されているものは削除していますが、そうでないものでも、地図メモをそのまま地図に書き写すことは危険だと思っています。

少なくとも私自身は、現地確認できない地図メモは OpenStreetMap に引きうつさないようにしています。例外は、他国語表記で、その場所を知らなくても、外国人旅行者が書いたと思われる地物名の外国語表記は、翻訳を確認の上で name:xx="yyyyy" などと記載することがあります。

明らかな間違いという保証がないもの、かつ、現地確認できないものは放置

当たり前のことですが、自分が万能だとは思っていません。だから、わからないものはなるだけそのままにしておきます。わかる方がいつかどこかで解決してくれるはずです。

例外もあり

地図メモを作られた方が匿名でない時は、その方のプロフィールや編集履歴を見ることがあります。最近編集を始めた初心者っぽい方の場合、あえて地図を編集して修正したりせず、地図メモのコメントとして編集方法をさりげなく解説してみたりすることもあります。自分が編集を始めたときは、何もないに等しい状態だったので、いろいろ試行錯誤ができましたが、今編集を始める方にとって、編集したら厳しいツッコミが来る世界は何ともモチベーションを下げる原因となるだろうと思います。とりわけネット上での指摘は厳しくなりがちです。だから、さりげなく観察して、そおっとコメントするように心がけています。(それでも失礼に思われたらごめんなさい。)新しい方を育成できないコミュニティは潰れるだけですからね。

そういうメモに対して、わざわざ編集しないなんて、という意味のネガティブなコメントを返す方がたまにいます。心外ですけど、それもまたそおっと観察しておくことにしています。

私もbotではないので、気分で上記のような対応をしていないこともあります。すみません。



以上、ちょっと気になることがあったのでざっと書いてみました。こういうことは SotM などのイベントに行っていろんな方の意見を聞いたほうがいいんでしょうね。時間があったら参加してみたいです。とりあえず twitter やコメントなどでのご指摘歓迎します。


追記

とはいえ、最近地図メモが多すぎて、意味をなさないものが多いのは事実です。facebook などから流入しているとおもわれる住所だけを記入したメモもなんとかした方がいいのかもしれませんね。どのみち住所データついてはなんらかの公的データからのインポートがないと解決できなさそうですし。このあたりについては国際的な議論を追っていないので、私は静観しておきます。

山の日は近郊へ

山の日は、郊外の札幌岳に登ってみることにしました。
f:id:Room-B:20160813124823j:plain

市内から車で30分とのことですが、道が混んでいて、1時間くらいかかりました。
9時50分に冷水(ひやみず)登山口から登山開始。


最初は冷水谷の水音を聞きながら比較的平坦な道を歩きます。谷沿いで涼しいとはいえ、8月の低山は汗びっしょりです。


ダケカンバの林が美しい。


冷水谷は紫陽花が盛りでした。蜂が蜜を集めています。

1時間程度で冷水小屋へ。名前の通り、冷たい水が出ていますが、そのままでは飲めないようです。

そこから登りが始まり、1時間程度で山頂です。登山道はひたすら林の中を歩き、展望はほとんどありませんが、標高 1293 m の山頂からは展望が楽しめました。


左がニセコアンヌプリ、右が後方羊蹄山(しりべしやま)つまり良く羊蹄山(ようていざん)と呼称される山です。しりべしというのは、アイヌ語から来ているのかと思っていましたが、これは日本書紀に由来する日本語のようです。アイヌ語ではマッカリヌプリだとか。


山頂からは札幌市内が良く見渡せます。



森の中には、ほんのり色づきかけたナナカマドも。


下山後は温泉へ。こちらは温泉が豊富で、各地にいろんな温泉があります。源泉掛け流しの豊平峡温泉は、カルシウム成分が析出しているとろりとした感触の温泉で、ゆったりできました。

米国のような街

こちらに来て、碁盤目の街並み、広い道路、雪の対策がされた家々の入り口など、まるで米国のような街並みだと感じました。
それもそのはず、"Boys be ambitious" と言ったウィリアム・クラーク博士を始め、街づくりにかかわった多くの人が、米国人の知識人だったらしく、最初から米国風の街づくりがされたようです。気候も米国北部と似ていますし、なんだか懐かしい感じです。

車の運転もおおらかで、せかせかした東京とは違います。郊外だと雑然と花が咲いているのも良い感じです。

朝晩は風もあって肌寒いくらいですが、さすがに、昼はちょっと暑くなってきました。エアコンがない家に住んでいますが、温暖化の昨今、エアコンはあった方がいいのかもしれませんね。

恵那山(2)

f:id:Room-B:20160717100245j:plain
恵那山(1)の続きです。

神坂峠から恵那山への縦走路には、こんな紫の花がたくさん咲いていました。

調べたけど種類が分かりません。


鳥越峠を越えて、大判山に着く頃には、雲が厚くなってきました。晴れていたら眺めが良さそうな山頂ですが、天候が心配になってきました。


とはいえ、こういう湿っぽい雰囲気は好きな風景のひとつです。うっすらと雲海のようになっています。


岩質はややもろい火山岩風の岩石で、あまり見たことがない地質だな、と思って歩いていましたが、流紋岩や溶結凝灰岩という岩のようです。溶結凝灰岩というのは、火砕流が凝固した岩ですね。ところどころ崩れ落ちているので、結構怖い場所もあります。大雨が来たらいつ縦走路が崩れ落ちてもおかしくない感じ。ひょっとすると道が宙に浮いていて、足元の下はえぐれ落ちているのではと疑うくらい、崩れ落ちたガレ場のギリギリに道が付いている場所もありました。


山頂付近はこのような急登です。そして祠が現れます。この古くから登られてきた信仰の山であることが、深田久弥百名山に選んだ大きな理由の一つですね。


一ノ宮はこのルートではなく、途中で合流する別ルートにあるらしく、二ノ宮から始まり、三、四、と続きます。


中津川市が管理している山小屋が山頂付近にあります。結構立派な山小屋ですが、営業はしておらず避難小屋扱いです。

木花咲間姫が祀られた五ノ宮、一言主大神の祀られた六ノ宮に続いて、イザナギイザナミが祀られた山頂本社です。

とはいえ、信仰登山者でない現代の我々は、標高が書いてあるこちらに山頂らしさを感じてしまいますが。

雲も厚くなってきて、樹木も茂っているので、展望はあまり楽しめませんでしたが、久しぶりの二千メートル峰を満喫しました。

帰路は同じ道を帰りました。途中で雨も降り出し、ずぶ濡れになって温泉へ。前日宿泊したので、今日も無料で温泉に入ることができました。この山を最後に、しばらく本州の山々はお預けとなりました。