2015年10月17日

[linux]xfce4のシャットダウン時、セッションが保存される

VirtualBoxで、xubuntu14.04を使っている。
ウィンドウマネージャはxfce4だった(ウィンドウマネージャ、でよいのかな?)。

ウィンドウを開いたままログオフやシャットダウンするとき、「セッションを保存する」にしておくと、最後の状態を保存し、次回ログイン時に戻してくれる。

が、セッションを保存しないように設定画面でやってるのに、シャットダウンしたときに保存されているようなのだ。
ログオフの時は、たぶん保存されてない。

セッションの無効化というのがあったけど、etcの下にわざわざ作るのも嫌だったので、~/.cache/sessions/の下にできたキャッシュファイルを、chmod 0444にした。
が、だめで・・・。
じゃあ、と、0444にして、chown root.rootまでやった。
が、これでも書き換えられた・・・。

腹が立ってきたので、同じ名前でmkdirした。
そしたら、ようやくあきらめてくれた。

しかし、上記リンクをよく見ると、.cache/sessions自体をchmod 0500する、というのも書いてあった・・・。
そっちの方がスマートだったかしらね。

[caffe]自己符号化器だけやってみたい (2)

前回はサンプルのタイトルだけで終わってしまったので、実際にやってみよう。
Training LeNet on MNIST with Caffe

説明文を日本語訳されているところがあったので、不安があるときは読むとよさそうだ。
が、なるべく英文を読むためにがんばろう、私。
OpenCV 備忘録: CaffeによるMNISTのLeNetの学習を訳してみた

 

Prepare Datasets

これは、スクリプトを実行して、MNISTのデータを取得するのと、それを解凍するのと、convert_mnist_data.binというのを実行してmnist_train_lmdb/ と mnist_test_lmdb/ を作っている。
中を見ると、*.mdbのファイルができていた。
「えっ、MS Access?」と思ったが、Symas Lightning Memory-Mapped Databaseのことでよいのかな?
バイナリエディタで見たが、JET MDBのフォーマットとは違いそうだ。まあ、ファイルフォーマットを知ってもどうするつもりもないが。

これが準備段階なのだけど、もうtrainもtestもサイズが大きいのでデータが入ってるんじゃないかと思う。
「学習データが入っている」じゃなくて「学習用のデータが入っている」ということか。

 

Define the MNIST Network

ここからしばらく、lenet_train_test.prototxtの説明が続く。
「MNIST Network」ということで、これがニューラルネットワークの構築に当たるのだろう。

prototxt、という拡張子がニューラルネットワークの設計ファイルになるのか。
と思ったが、lenet_solver.prototxtは構造が全然違う。
こっちは、設定ファイルみたいに見える。
train_lenet.shで使っているのも、このsolver.prototxtだ。

Solverつき

lenet_adadelta_solver.prototxt
lenet_auto_solver.prototxt
lenet_consolidated_solver.prototxt
lenet_multistep_solver.prototxt
lenet_solver_adam.prototxt
lenet_solver.prototxt
lenet_solver_rmsprop.prototxt
lenet_stepearly_solver.prototxt
mnist_autoencoder_solver_adadelta.prototxt
mnist_autoencoder_solver_adagrad.prototxt
mnist_autoencoder_solver_nesterov.prototxt
mnist_autoencoder_solver.prototxt

Solverなし

lenet.prototxt
lenet_train_test.prototxt
mnist_autoencoder.prototxt

うーん。
全部のsolverが設定だけっぽいかというとそうでもなく、lenet_consolidated_solver.prototxtは設計っぽいのも載っている。

まあ、おいおい調べていくとするが、protobufというのに関係しそうなことはわかった。

 

わからんながら眺めると、

  • layerは11個
  • name
    1. mnist
    2. mnist
    3. conv1
    4. pool1
    5. conv2
    6. pool2
    7. ip1
    8. relu1
    9. ip2
    10. accuracy
    11. loss
  • type
    1. Data
    2. Data
    3. Convolution
    4. Polling
    5. Convolution
    6. Pooling
    7. InnerProduct
    8. ReLU
    9. InnerProduct
    10. Accuracy
    11. SoftmaxWithLoss

並べてみたら何かわかるかと思ったが、全然わからん。
畳み込み(Convolution)とかプーリング層(Pooling)とかの言葉は聞いたことがあるから、typeは層の種類なのだろう。
Dataが入力で、SoftmaxWithLossは出力なのかな(ソフトマックス関数は、クラス数分の出力を持っていて、そのクラスに属する確率、みたいなものを表す。総和は1)。
LeNet-5は入力層を除いて7層と書いてあったから、「少し変えている」というのはこの辺なのかもしれない(lecun-01a.pdfのp.7の図みたいなのがあるといいのだが・・・)。

 

と、説明を読み飛ばしていたのだが、prototxtの書き方だけじゃなくてlayerの説明が書いてあった。

  • Data layer
    • lmdbからデータを読み込む
    • 値のレンジは[0, 1)。1.0未満なんだ。。
    • 0.00390625 = 1 / 256
      • ということは、画素値は0~255のグレースケールということか。
      • 255 * 0.00390625 = 0.99609375。ということで、1.0にはならない。
  • Convolution layer
  • Pooling layer
    • まだ勉強してないから、省略
    • bottomは入力で、topは出力だと思うけど、再帰するのかな?
      • 「深層学習」のp.82の図を見ると、再帰はしないけどconvolutionが2つ並んでいた。
      • 6.2章を見ると、畳み込み層とプーリング層はセットだけど、畳み込み層だけ繰り返すこともあるらしい。
  • Connected layer
    • 「深層学習」では、全結合層
  • ReLU layer
    • Rectified Linear Unitらしい
      • rectified : 整流した
      • linear : 線形の
      • unit : ユニット
    • 「深層学習」のp.150に、「正規化線形ユニット」とあった。
    • よくわからんが、ボルツマンマシンの章にあるので、後回し
  • Loss layer
    • 最後!
    • ここにSoftmaxが出てくる

 

図にするほどでもないが、こういうことのようだ。

image

accuracy layerはTESTの時だけらしい。
prototxtにincludeが書いてあるものは、そのフェーズでしか使わない、という意味なのだろう。
だから、mnistが2つあっても、phaseに"TRAIN"と"TEST"があるから使い分けられるのだ。
なお「accuracy」は「正確さ」で、100回実施したときの結果になるらしい。
lenet_solver.prototxtに書いてあるらしいが、これか?

test_iter: 100

 

Training and Testing the Model

lenet_solver.prototxtのsolver_modeをCPUにして、実行。

$ ./examples/mnist/train_lenet.sh

timeコマンドで時間を計ったが、うちの環境では26分くらいかかった。

real    25m52.729s
user    25m44.793s
sys    0m2.958s

うちの環境というのをどう説明したらよいのかわからんが、こんな感じだ。

マシン:AMD Phenom(tm)2 X4 955  3.20GHz  RAM:6.00GB

VirtualBox 4.3.30
Host OS : Windows 7 SP1 64bit
Guest OS : Xubuntu 14.04 64bit
メインメモリー:2048MB
プロセッサー数:1
使用率制限:100

lrはleaning rate、lossはtraining function。ふーん。
よくわからんが、最後の方の出力は、こうだった。

I1017 13:41:36.143224 10438 solver.cpp:590] Iteration 9700, lr = 0.00601382
I1017 13:41:50.156757 10438 solver.cpp:243] Iteration 9800, loss = 0.0120732
I1017 13:41:50.157027 10438 solver.cpp:259]     Train net output #0: loss = 0.0120734 (* 1 = 0.0120734 loss)
I1017 13:41:50.157097 10438 solver.cpp:590] Iteration 9800, lr = 0.00599102
I1017 13:42:03.945916 10438 solver.cpp:243] Iteration 9900, loss = 0.00437907
I1017 13:42:03.946504 10438 solver.cpp:259]     Train net output #0: loss = 0.0043792 (* 1 = 0.0043792 loss)
I1017 13:42:03.946665 10438 solver.cpp:590] Iteration 9900, lr = 0.00596843
I1017 13:42:17.699626 10438 solver.cpp:468] Snapshotting to binary proto file examples/mnist/lenet_iter_10000.caffemodel
I1017 13:42:17.714552 10438 solver.cpp:753] Snapshotting solver state to binary proto file examples/mnist/lenet_iter_10000.solverstate
I1017 13:42:17.780030 10438 solver.cpp:327] Iteration 10000, loss = 0.0033141
I1017 13:42:17.780444 10438 solver.cpp:347] Iteration 10000, Testing net (#0)
I1017 13:42:26.025928 10438 solver.cpp:415]     Test net output #0: accuracy = 0.9921
I1017 13:42:26.026139 10438 solver.cpp:415]     Test net output #1: loss = 0.0274125 (* 1 = 0.0274125 loss)
I1017 13:42:26.026231 10438 solver.cpp:332] Optimization Done.
I1017 13:42:26.026285 10438 caffe.cpp:215] Optimization Done.

"after a few minits, you are done!"って書いてあるけど・・・これって最初のログを吐き始めてから数分ってことかしら。
だったら・・・どんだけ速いんですか・・・。
せめて、VirtualBoxじゃなくて、普通に立ち上げたLinuxじゃないとわからんですな。

最終モデルは、lenet_iter_10000、というprotobufファイルに書き込まれるらしい。
うーん、「lenet_iter_10000.caffemodel」のことかな?
同じような名前で「lenet_iter_10000.solverstate」もある。
そして、10000じゃなくて、5000のファイルもある。

https://gist.github.com/rezoo/a1c8d1459b222fc5658f
こちらの「CNNの学習」に、反復回数ごとのスナップショットを撮る、とあった(画像じゃないけど、撮る、でいいや)。
で、solverstateがついている方は学習の再開で使えるらしい。
学習の再開ってなんじゃ?と思ったが、imagenetの学習が3~5日かかる、という恐ろしいことが書かれているので、何かあった場合に再開できるのだろう、きっと。

最終モデルはよいとして、TESTした結果は最後のログでよいのかな?
これだと、accuracyが0.9921なので、認識に99.21%成功した、ということだろうか。

 

さて、これで畳み込みニューラルネットでやった結果はわかったが、自己符号化器もやっておかねばタイトルから逸れてしまう。

$ time ./examples/mnist/train_mnist_autoencoder.sh

・・・終わらない。
最初にだーっとログが出た後、「data -> data」と出たまま止まっている。
CPU使用率も上がってない。
GPUからCPUには変更してるから、そういうのでもないし。
VirtualBoxを再起動させたが、変わらん。
これかいな?
MNIST Autoencoder Example hangs on data layer lock · Issue #3037 · BVLC/caffe

疲れたから、今回はここまでだ。


ニューラルネットワークの構成をExcelに描いたんだけど、caffe+pythonで出力させることができるらしい。

ノート/Caffeのデモプログラムを試してみる (2014-12-24) - 東邦大学理学部情報科学科 山内のサイト

ほへー。

[caffe]自己符号化器だけやってみたい (1)

「深層学習」が自己符号化器まで読んで止まっている。
飽きかけているのがわかるので、ちょっと目先を変えてみよう。
きっと、caffeにも自己符号化器で学習することができるだろうから、それだけやってみよう。


Training LeNet on MNIST with Caffe
検索したら、これが出てきた。
はて・・・。
mnist_autoencoder、というファイルがいくつもあるな。

 

まず、MNISTとはなにか?
Caffeで手書き数字(MNIST)の認識学習をする - Qiita
Mixed National Institute of Standards and Technologyの略とのこと。
手書き数字のサンプルがたくさん入っているので学習に使っているようだ。
MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges
こちらがデータ元だが、タイトルは「THE MNIST DATABASE of handwritten digits」とあるから、他にもデータがあるのかと思ったのだけど、ディレクトリもmnistだし、Wikipediaも手書き数字のことしか書いてない。
なので、MNIST=手書き数字画像データ集、と思っててよさそうだ。
こういう地道なものが役立っているんだ、というのはしみじみしてしまうな。

 

多層のニューラルネットワークを効率よく学習させる手法として自己符号化器などの「事前学習」を必ずやるものだと思っていたのだが、画像なんかでは「たたみ込みニューラルネットワーク」が主流で、事前学習はあまりやらないらしい。
まだ「深層学習」の畳み込みニューラルネットの章は読み進んでないけど、画像っぽく2次元にニューロンを配置してフィルタを作るみたいだ。

フェーズで考えると、

  1. ニューラルネットワークの構築
  2. 事前学習(やらない場合もある)
  3. 学習
  4. 実践

みたいな分け方になるのかな。
そして、画像の場合にはニューラルネットワークの構築の際に「畳み込みニューラルネットワーク」で構成することが多いし、音声学習の場合には事前学習することが多い、と。
まだ言葉が身についていないので、本で読んだことがどう使われるのかわかってないのよねぇ。

自己符号化器は「事前学習」のフェーズで使うもので、事前学習は自己符号化器だけじゃなくて制約ボルツマンマシンというものもあるようなので、「caffe 自己符号化器」で探してもあまり見つからないのはそういう理由かもしれない。

 

もう1つ、LeNet、という言葉が出てきた。
リンク先(pdf)は、論文だ。
"Gradient-Based Learning Applied to Document Recognition"。
「勾配に基づく学習を文書認識に適用した」というところか。
ここの「文書」は、OCRとかそっち系の話で、データもMNISTを使っていることから文字認識のようだ。
Character Recognition、じゃないんですな。

この論文は、手書き数字の認識をいくつかの手法で実験したものだ。
けど「CNNはそれ以外の技法よりも2D図形でoutperformだ」と書いてある。
"outperform"は、「性能が優れている」もあるけど「効率がよい」という訳もあるので、他よりも処理が速かった、と考えられなくもないけど、まあここでは性能がよかったと読むのが正しいだろうな。

LeNetは、"LeNet-1"とか"LeNet-5"とか出てくるので、構築したニューラルネットの種類か何かか?
ここを見ると、「Convolution Neural Networks(LeNet)」とある。
でも、CNNって畳み込みニューラルネットのことだから、事前学習とかしないんじゃないの?
このサンプルって、自己符号化器のところはおまけで、畳み込みニューラルネットの方がメインなのか??

先の論文でもLeNetの説明があり、LeNet-5は「CNN。入力層を除いて7層。入力は32x32pix。」とのこと。
caffeサンプルでも、AutoEncoderが出てくるのはファイルのところだけだし。
なので、論文に書いてあるように「CNNの方がいいぜ!」という比較のために事前学習での例も作った、ということなのかな。
train_lenet.shと、train_mnist_autoencoder.shがあるけど、説明にはtrain_lenet.shしかないしね。

 

話を戻すと、Training LeNet on MNIST with Caffeは、

  • MNISTの手書きデータを学習データとして使う。
  • ニューラルネットワークとしては畳み込みニューラルネットのLeNetを使う。
  • 事前学習として自己符号化器を用いた場合のスクリプトもあるが、そっちはメインじゃない。

だろう。


ここまでで疲れたので、実践は次回で。

2015年10月16日

[nrf51]SoftDeviceとmbed

BLE Nanoという、mbedにもなるnRF51822が載ったチップがうちに来るというのは、いろいろと想像が膨らみますな。
nRF52832もmbedなのだけど、サンプルに書いてある手順以外で試したことがない。

そもそも、nRF5xはSoftDeviceありきだと思っている。
そこにmbedがあると、どうなるのだろうか?


BluetoothSMARTデバイスをmbed で開発する(2) ~ BRILLIANTSERVICE TECHNICAL BLOG

こちらを読むと、mbedで生成されるバイナリにSoftDeviceが入ってる、とある。
そうか、純正だから、そういうサイズでも問題ないんだ(Keilの無償版はリンクサイズが32KBまでなので)。

ということは、mbedのバイナリは、ARMの0x0000_0000から焼くようにできている、ということだろうか。
などと思ってHEXファイルを見たら・・・ああ、普通のIntel Hex形式じゃないか。
ということは、mbed用のマイコンが載っているというのは、

  • USB接続でFAT形式のファイルシステムに見える
  • Intel Hex形式のファイルをコピー?すると、解釈してARM側にそのまま焼いてくれる

というしくみになっているのか。
であれば、SoftDeviceはいつも通り焼いて、GCCでビルドしてHexファイルを作って、そのファイルだけmbedマイコン(と呼ぶのか?)に任せればよいはず。
それだけだったら・・・mbed関係なく、MK20を購入しなくてもよかったことになる。
そ、それは・・・私の知識が招いた散財ということになるではないか・・・。

[hw]ARMのSWD自体の予習もする

SWD, SWDと呼んではいるものの、いつも「SingleのSじゃなかった気がするが忘れた」レベルだ。
なので、もう少しちゃんと調べておこう。

ARM Information Center

ARMもNordicもだけど、開いたページのタイトルが同じだから、何のリンクかわからんのよね。。
これは、SWD接続のページだ。

image

SWDIOとSWCLKとSWO。
プルアップはされているけど、これはI2Cみたいな意味ではなく、デバッグ接続していないときの安定のためだとのこと。

ちょっと気になるのが、うちで使っているnRF51822のボードには、SWOがないのだ。
ARMの「SWDのタイミング要件」にも、2ラインしか使わないと書かれている。
そして、そこにSWOはない。
彼は一体なんなのだ?

検索したら、これっぽい。
ARM Information Center
こっちは、JTAG and SWD interfaceの章だ。英語。
SWDモードの時は、TDOピンはSWOとして使われることを期待する、でよいのかな。
TDOとかは、確かJTAGの名前だったと思う。
互換性とか、そういう話だろうか(全部読んでない。。)?

IAR JTAGエミュレータ(ICE)
こちらのIARさんのデバッガの説明では「マンチェスタおよびUARTモード」という言葉が出てきた。
もしかすると、デバッグ出力用に使えるということなのか?
ARM KEIL開発システム JTAG ICE ULINKpro <MDK-ARM 正規代理店>|横河ディジタルコンピュータ株式会社
こちらも、シリアルワイヤートレース、という名前で、マンチェスタモードとなっている。
AN706-00062-1v1-J - MB9BF506RB-AN706-00062.pdf
こちらはSpansionさん、ということは前の富士通さんの部門だったのかな、では、SWOをprintf専用にするため~とあるので、そういう用途なのだろう。
ないならないで、SWDIOでやることもできるんだろうが、専用で使えるとそれはそれでうれしいな。

SEGGERでは使えるんだろうか?
SEGGER - The Embedded Experts for RTOS and Middleware, Debug Probes and Production Programmers - J-Link SWO Viewer
SWO Viewerなるツールがある。
GDBやeclipseはSWOの出力に対応してないけど、このツールがあるよ、ということなのか。
Windowsのスタートメニューにはなかったけど、Program Filesの下を見るとJLinkSWOViewer.exeというのがあった。
どのJ-Linkでも使えるらしいから、SWOが使えるARMが来たら試してみよう。

[ble nano]BLE NanoのI2CとUARTは重なっているが、それは外的要因のせいだろう

BLE Nanoについて、こういうのも教えていただいた。

ドモホルンリンクルIPv4さん: "@hiro99ma I2C とUARTが被ってるのに注意して下さい。"

nRF51822はほぼ全部のGPIOがプログラマブルなんだけど、どういうことだろうか?

と思って回路図(PDF)を見てみると、nRF51822そのものじゃなかった。

今使っているのはBVMCN5102(PDF)なのだが、BLE NanoにはMDBT40(PDF)というチップが載っている。
そのチップが、そういう作りになっているということだろう。
が・・・S1~S5と、S6~S10という、スイッチというか0Ω抵抗で切り替えるようになっているだけみたい。
PDFを見ても、ピンはGPIOがそのまま出てるだけに見える。

なので、単にMK20という焼くためのボードと意識を合わせるために、そういう割り付けにして下さいね、ということが書いてあるのだろう。
もしかすると、MK20じゃなくて、Arduinoとかmbedとかかもしれんけど、とにかくそういう外回りの人々のために。

 

というところで、@tw_hoehoeさんからも同じような返事をいただいたし、@nakatafuさんからもいただいた。
「じゃあMK20買わんでもよかったやん」と思わなくもないが、まあせっかくmbed生活も味わえるようだから、損はなかろう。

[hw]BLE NanoのSWD予習

BLE Nanoという、nRF51822が載ったボードを注文した。

BLE Nano — RedBearLab

普通にNordicのSDKを使う以外にも、mbedやArduino Libraryがあるらしい。
(そういえばnRF52832のボードもmbed対応なんだけど、あれもいけるんだろうか?)

いろいろ教えてもらいつつ調べたところでは、こんな接続になるみたい。
黒文字がBLE Nanoのピンで、青文字がMK20という焼き用ボードのピン。
素のnRF51822ではなく、BLE Nano用にMDBT40というチップを起こしているようだ。

image

うちにあるSEGGERのJ-Link LITE CortexMの狭い9ピンとは互換がないので、SWCLK/SWDIOとVDD, GNDあたりを直接つないであげればよいのだろう。

ハンダ付けまではせずに済みそうなので、よかった。

固定するのは難しい

とりあえずnRF51822からADCしてNotifyを投げられることが確認できたので、実際に装着してみた。
装着と言っても、足に固定すればいいや、くらいのものだったが・・・

image

難しい。
実に難しいのだ。

机に置いているときは小さいと思っていたブレッドボードも、足にしてみれば大きい。
足の甲にでも載せればいいやと考えていたけど、とても無理だ。
それに、載ったとしても歩きづらいだろう。
なんとなくわかっていたつもりだったけど、全然わかっていなかったねぇ。

ブレッドボードを外せば小さくなるけど、そもそもこのnRF51822が載ったボードはブレッドボードで使いやすいようにしたものなので、あまりそれはしたくない。
えいっ!

RedBearLab BLE Nanoキット--在庫限り - スイッチサイエンス

こちらもnRF51822のRAMが16kBなので注文した。
ああ、こんなに簡単に買ってしまっていいのだろうか。。。

[nrf51]相手がNotifyを受け付ける準備をしていないとNRF_ERROR_INVALID_STATEが返る

タイトル通りだ。

ADC変換完了割込みの優先度を下げて、完了時にsd_ble_gatts_hvx()でNotifyを投げられるようになった。
最初は10秒間隔にしていたのだけど、もう少し早い間隔にしたいと2秒くらいに縮めたところ、sd_ble_gatts_hvx()がNRF_ERROR_INVALID_STATEを返すようになった。

理由をあれこれ考えたのだが、時間を短くしたので、スマホ側をNotify可にする操作が間に合わないままになっているためだろう。
こちらにも、Notify/Indicateできないときに呼ぶとINVALID_STATEになる、と書かれている。
How to know if the Notification/Indication of a Characteristic is enabled? - Nordic Developer Zone

いま作っているようなアプリは、Client側がNotifyを受けることを前提に作っている。
だから、上記リンクの2番目にあるように、CCCDへの書き込みを受けとるようにしてからADCを開始するようにした方がよいかもしれない。

今回は、めんどうなので、INVALID_STATEはスルーするようにした。

[勉]OpenEL

家にいる時間が多くなるので、知らないことを調べたり、新しく調べ直したりしよう、というシリーズ。
今回は「OpenEL」。


OpenELでETロボコンにチャレンジ - ロボット - 日経テクノロジーオンライン

「日経テクノロジーオンライン通信」というメールマガジンに出てきたので、興味を引かれた。
だいたい「OpenXXX」というと、OpenGLみたいなKhronosの標準化とかそんなのが思いつく。
OpenGL|ES、とか、そんなものの一環だと思ったのだが、これは違うようだ。


Main Page/ja - OpenEL Wiki

Open Embedded  Libraryの略。
図を見ると、なんかよくあるもののように見える(などと言うと怒られそうだが)。
OSを提供するところも、だいたい同じような図があるはずだ。

  • 下層が変わってもドライバのインターフェースは共通なので、アプリはそのまま使える
  • 別製品を作るときも水平展開しやすい

OSとの違いは、どちらかといえばOSは「買うもの」な感じだけど、こちらは単なるインターフェースの決めごとだけを標準化して提供するから、ハードだけじゃなくてOSが変わったとしても吸収できる、というところか。

 

そうなると「本当に標準化できるの?」というところが気になる。
こういうのの標準と言えば、ITRONが思い出されるではないか。
ITRONはOSではあるけれども、仕様の標準化だけ行って、あとはその標準化にならって各社なり団体なりがOSを作る、というものだと思っている。
いろいろあった結果だが、ITRONは日本では比較的使われているものの、世界標準とまでは言えないんじゃないかと思う。
TOPPERS/SSPなんかは小さくてよいと思うのだけど、あまり海外で使われていない気がするから、それだったらFreeRTOSとかの方が探しやすいかもしれん、などと考えてしまうのだ。
ネットで探すのが普通になった時代、せっかく標準になったとしても使ってくれる人がいないとあまり意味がなさそうだ。

OpenELのWikiでは、国際標準化の予定が2013年までしか書かれていないが、最初の記事を読んだところではOMGにドメイン会員として入会し、ワーキンググループで仕様策定中とのこと。
そして記事を最後の方まで読むと、やはり使う人が増えてほしそうな感じがうかがえる。

応援はしたいのだが、使うだけの身からすると「標準になってからでいいや」と思ってしまう。
フリーランスになってお金とか税金とかが身近になってきたせいか、こういう団体があると「税金でやってるんじゃないの?」を先に考えてしまうようになってしまった。
いや、こういう分野にお金を使うのは大切だとは思うのだけど、気にはなるじゃ無いか。
http://jasa.or.jp/TOP/download/annualreport/h27plan.pdf
啓発事業収益と会員費がほとんどの収入源なんだ。
あら、補助金がなくなったのね、とか、昨年から全体的に減らしてあるのね、とか、心配になってしまった。
あんまりお金の話はわからないので、深い考察ができないのが残念だ。

関係ないけど、組込みシステム業における高齢者雇用の現状(pdf)なんていう資料もあり、なかなか面白い。


私が何を「標準化」と思っているかが気になってきた。
FeliCaだって、ISOにもNFC Forumにも規格で入っているものの、世界的に使われているとまでは言えなさそうだ。
だから、人口に膾炙しているというか、デファクトスタンダードというか、日本の人とそうでない人が候補をいくつか出して一致するもの、くらいなのが「標準化」だろうか。

書いていて、条件が厳しすぎると思った・・・。
それは無理だ。
だから、もうちょっと広く考えよう。
日本では使われるけど、海外でほとんど使われていない、というのは、標準と言うには難しい。
日本発だから日本の人は知っているけど、海外の人はまったく知らない、とかもだ。
じゃあ、知名度だけなのか。。。

こうやって考えると、標準になるというのはただごとではないのだな。
反省した。
ごめんなさい。