著者アーカイブ 杉浦

著者:杉浦

ウィキメディア・コモンズの紹介

 ウィキメディア・コモンズはコモンな素材を集めたサイトです。少なくとも公的な立場で何かを書くことになり、そのために使う画像を集めるに際し、権利関係で悩むのが面倒な人(私とか)の役に立ちます。(最近フリー素材でググっても大勢のおもちゃにされているだけで、全然フリーじゃない素材がけっこうでてきて厄介です)
 ウィキメディア・コモンズは一見、創造的であったりなんだりで著作権が付随していそうな硬いメディアが多岐にわたり豊富なことが他のフリー素材集との大きい違いです。ポップなアイコンなら、いらすとや、ピクトグラムなんかもおすすめできます。また、このメディアがどのくらいの範囲で、どういう理由でフリーなのかの説明も付随してくるというのも権利関係にお手軽に安心できて良いです。
 ウィキメディア財団はウィキペディア、ウィキメディア・コモンズのみならず様々な活動活動を行っています。英語版wiki関係の充実っぷりはとんでもない(wikipediaは500万を超える記事、10万人以上のアクティブな編集者)のでいろいろ探してみるのも面白いです。

著者:杉浦

量子三目並べの紹介

 三目並べは〇×ゲームとして知られています。私の地元では〇×ゲームと呼ばれていました。googleで三目並べと検索すれば検索結果画面で三目並べを遊ぶこともできます。お互いが最善の行動をした〇×ゲームが引き分けで終わることは簡単にわかると思います。単純な三目並べの手筋は探索アルゴリズムを考えるより、総当たりをした方が早いぐらいの探索範囲で済みますしね。この記事では三目並べに量子力学の発想を加えた量子三目並べの紹介をします。
 量子力学の世界では量子重ね合わせ(複数の状態を同時に持つ。ビットは0と1を同時に取れる)、量子もつれ(他の量子の状態の確定によって他の量子の状態も確定した状態になる)という法則が存在します。量子三目並べはこの量子重ね合わせ、量子もつれらしいものを導入した〇×ゲームです。量子三目並べはQuantum Tic-Tac-Toeというタイトルでiphone、android両方でアプリとしてプレイすることが可能です。石関匠, & 松浦昭洋. (2010). 量子三目並べの必勝法解析.なんて論文もあります。
 ルール(wikipediaより引用。図は石関・松浦(2010)より引用)

盤は通常の三目並べと同様に3×3の9つのマスを使用する。マークは先手を○、後手を×として、順に○1、×2、○3、…、×8、○9とする。
各手番でプレイヤーは、9つのマスのうちの2つに確定していないマーク(石関・松浦(2010)では量子マークと呼んでいるのでここではこれに倣う)を置く。マークした時点ではこのマークは確定せず、ゲームの進行によって後から確定することになる。量子マークは他の量子マークがすでに置かれているマスにも置くことができる。特例として、○9の手番ですでに他の8マスが確定している場合のみ、残りの1マスを即座に○に確定させる。

プレイヤーの新たな量子マークによって、同じ番号の2つずつ量子マークをそれぞれ結んだときに輪ができる状態になったとき(これを「”cyclic entanglement”が発生した」と言う。)、この輪を完成させた方ではない方のプレイヤーが、この輪に関わるマークの確定のしかたを選ぶ。なお、cyclic entanglementが発生したとき、この輪を形成するいずれかの番号の量子マークをどちらかのマスに確定させると、連鎖的にこの輪に関わる全てのマークが確定するため、有りうる確定の結果は2通りである。ここで、「この輪に関わるマーク」とは、直接に輪を形成しているマークのみでなく、ペアのうち一方が輪の上あり、もう一方が輪に関係ないマスにある量子マークのペアも含む(このようなペアの量子マークは、輪に関係ない方のマスに確定する。)。

通常の三目並べと同様に、確定した自分のマークを一列に3つ並べたプレイヤーが勝利である。しかし、量子三目並べでは、cyclic entanglementを確定させた結果、先手と後手が同時にラインを完成させる場合がある。この場合は、ラインを形成する確定したマークの番号のそれぞれの最大値を比べて、これが小さい方が優位であるとされる。

 図3の(b)は7対6で×が勝ちです。このゲームは既に必勝法を解析されてしまいしたが、常人の頭の許容量を超える程度には深く、十分楽しむ余地がありお勧めできるゲームです。余談ですが英語wikipediaの目並べ系項目は異様に充実しています。目並べ研究会でもあるのでしょうか。

著者:杉浦

国土地理院サイトの便利な機能

国土地理院(こくどちりいん、英語:Geospatial Information Authority of Japan)は、国土交通省設置法及び測量法に基づいて測量行政を行う、国土交通省に置かれる特別の機関である wikipediaより(2018/04/18)

 国土地理院は日本の測量関係全般に広く深く関わっています。そのためか国土地理院のサイトはぱっと見に何があるのかわからないくらい価値の高い情報が山積みにされています。その中でも自分が使った、使っている即物的な部分を紹介します。

地理院ホーム > 刊行物・資料 > 国土地理院技術資料とその提供について > 技術資料リスト -n

 その名の通り国土地理院の技術資料のリストです。古い統計資料、基本的な技術から最近のGNSS関係まで広く保存されています。中でも”国土地理院のウェブサイトに掲載されているもの”は簡単にアクセスでき、利用範囲も広く便利です。

地理院ホーム > 基準点・測地観測データ > 便利なプログラム・データ

 その名の通り国土地理院の開示しているプログラム・データです。プログラムの比率が多めです。複数の機能がありますが特におすすめなのが”測量計算サイト”です。この機能は楕円体である地球の測量をお手軽に高精度に行えます。APIにも対応しているためそれなりの量の計算もこの機能だけで行えます。一部機能は計算方法も掲載されているため、これを参考にプログラムを用意すればビッグデータの様な大量の計算もできます。”測量計算サイト”は”公共測量での利用”を筆頭に公的に使用するには手続きが必要ですが、そのための公共測量か否かの判断チャート、手続き案内も国土地理院のサイトには備えてあります。

著者:杉浦

NMEAについてざっくり

NMEAを詳しく知りたい方のための資料として私がおすすめする資料はu-bloxの公開しているu-blox 8 / u-blox M8 Receiver Description Including Protocol Specificationのpp.105~127あたりです。このふんわりした小話よりもそちらでがっつり読み込んだ方がためになると思います。私は検索がうまくできませんでしたがtrimbleのhelpなども詳しいです。
NMEAとはGNSSの受信したデータを出力する複数のプロトコルをまとめた呼称です。NMEAは正式にはNMEA0183といい、団体であるNMEA(この記事中に出てくるこれ以外のNMEAはプロトコルNMEA0183のことを指した語です)が制定したプロトコルです。GNSS受信機はGNSS衛星から送られてきた信号を元に自らの位置などを推定しています。この推定された位置などの便利そうな情報をいい感じにまとめるプロトコルがNMEAになるわけです。ほとんどのGNSS受信機はこのNMEAに従ってデータを出力します。このNMEAには様々な種類があります。その中でも使われる頻度の高いGGA、GSA、GSV、RMCについてほんのり紹介します。実際に受信機から送られてくるデータを読んだことがある人はGGA、GSAでなく$GPGGA、$GNGSAなどの頭文字を持ってデータが送られてくることを知っているでしょう。NMEAは受信機によってGPGGA、GNGGAと頭文字が変わります。この頭文字は受信機が対応する衛星に従って付けられています。
GGAはざっくりと今の受信機の状態が分かるプロトコルです。位置、使用衛星数、精度低下率などがわかります。

$xxGGA,time,lat,NS,long,EW,quality,numSV,HDOP,alt,M,sep,M,diffAge,diffStation*cs<CR><LF>

GSAは誤差について詳しく記述されたプロトコルです。使用衛星、精度低下率について詳しく記述されています。

$xxGSA,opMode,navMode{,sv},PDOP,HDOP,VDOP,systemId*cs

GSVはGNSS Satellites in Viewの略称であり可視状態にある衛星について詳しく記述されています。

$xxGSV,numMsg,msgNum,numSV,{,sv,elv,az,cno},signalId*cs

RMCはRecommended Minimum dataとされています。RMCに大体のGPSに時刻、位置、速度といったGNSSに要求されている結果が記されています。

$xxRMC,time,status,lat,NS,long,EW,spd,cog,date,mv,mvEW,posMode,navStatus*cs
著者:杉浦

screenとshutdown

 2018/4/16本日、screenからexitするつもりがscreen中でshutdownコマンドを実行してサーバを落とす事故を起こしてしまいました。そんなわけでlinuxのscreenコマンドとshutdownコマンドについて書くことにしました。screenについてはこちらの記事こちらの記事で詳しく話されています。
screen
 screenは端的に言えば別画面を作るコマンドです。ターミナルと同じ機能を持つ別のプロセスが走り出すような感じです。
参照:SCREEN Quick Reference
よく使う操作

新たにscreenを作る screen
名前を付けてscreenを作る screen -S <name>
現在存在しているscreenをリストアップ screen -ls
指定した<id|name>のscreenに移動 screen -rx <id|name>
screenを動作させたまま抜け出す screen中でCtrl-a d
screenを消して抜け出す screen中でexit

 
shutdown
 シャットダウンを行うコマンドです。ただ命令するだけでも問答無用でshutdownコマンドが実行され出しますがコンピュータのシャットダウンが行われるまで多少猶予があります。CentOS7.4.1708のデフォルト設定におけるオプションなしの猶予は1分でした。特に覚えておきたい大事な操作は’shutdown -c’で実行できるshutdown処理の中断命令です。shutdownはCtrl+zやCtrl+cを打ち込んでも走り続けるため、シャットダウンを中止するためにはshutdown -cを入力する必要があります。一応shutdownを実行した際に「use ‘shutdown -c’ to cancel」と文面がでますが、焦り出す上に英語に親しくない私みたいな人は読み取れないことがあると思います。気を付けましょう。

著者:杉浦

アプリGNSS Viewについて

GNSS Viewは、指定した時間や場所におけるみちびきやGPS、GLONASSなどの測位衛星の位置を知ることができるWebアプリです。(みちびきより)
GNSS Viewというアプリを見つけましたが、技術者以外の人も対象にしているような作りのサイトで説明がろくになかったのでざっくりと機能と使えそうな用途の例の説明させてもらいます。
web版GNSSViewの全体図が下図です。

 BASE CONDITIONについてはほぼ割愛。英語が読めれば多分大丈夫です。GPS/QZSS WeeksもMaskAngle操作してみればわかるでしょう。 レーダ部を飛ばしてSELECT SATELLITE部。これはBASE CONDITIONとSELECT SATELLITEの設定でレーダー部をいじるためです。チェックボックスは衛星の種類です。自分の知りたい受信機に対応する衛星を選ぶとよいです。GPSはほぼすべての受信機で対応しています。ついでGLONASSです。GNSSを謳う受信機でしたらすべてに対応していることもあります。ラジオボタンは発信している信号の種類です。下の方ほど多種で精度の良い信号を持つ衛星になります。
 レーダー部は先に述べた通りBASE CONDITIONとSELECT SATELLITEの設定で動きます。上部のレーダは見たまま設定時点で見える衛星の配置です。色が衛星の種類を区別しています。TimeLine、Visible GNSSも見たままです。HDOP、VDOP。これはGNSSの精度低下率です。もしこの条件でGNSSによる測位を行ったら、という時の精度の目安になります。これらが0に近づくほど良好な受信環境になると予想できるわけです。なぜ実際に受信を行っていないのに、精度低下率が出せるのかというと衛星の散らばり具合によって算出しているからです。最近、3DMAPによる工事などが話題に上ったりもします。3DMAPによってマルチパス、可視衛星の精密な予測ができることによってより優れたHDOPに成り代わるものが現れるかもしれません。

著者:杉浦

組み合わせ爆発の話

 巨大な数を表す方法にはいろいろあります。掛け算、乗数、n乗のn乗の…数(乗数に乗数が含まれている)と順に大きくなっていきます。この中で2番目の乗数なんかは組み合わせ爆発と合わせてプログラマに縁があると思います。組み合わせ爆発とは機械学習などのアルゴリズムを考える時に考える必要のあることであり、碁や将棋のコンピュータが強くなることが難しいとされていた理由の一つです。多数の項目を組み合わせることで組み合わせ爆発を起こせます。[a-z]と[A-Z]と[0-9]を組み合わせれば26*26*10になります。雑に作ったアルゴリズムになんかはループ中ループ中を含み、こんなことになります。
 囲碁や将棋の手を進めることはどうしようもなく組み合わせ爆発になります。このため良い手を見つけることはとても難しいとされていました。組み合わせ爆発が起きるか否かはアルゴリズムを図示する際、フローチャートか状態遷移図かの基準なんかにもできます。

著者:杉浦

主成分分析について具体的な過程抜きでざっくり

 少し前に話題になっており、今も存在感のあるビッグデータという言葉があります。この記事ではビッグデータの解析等で役に立っている統計学の技術である主成分分析の紹介をします。
 大量のデータはその大きさに違わず大量の重複した情報をはらんでいることがあります。主成分分析とは重複した情報をまとめ、計算効率よく処理することを可能にする方法です。この重複した情報には似た意味を持つ情報というのは異なる項目成れど、片方が分かればもう片方もほとんどわかるような密接な関係にある情報のことも含みます。完全に重複した情報の例にはある物体中に含まれる分子の数と原子の数、似た情報の例には身長と体重が挙げられます。主成分分析はこの重複した情報を一つの情報としてまとめる方法です。項目数を減らすことは計算量の減少に大きく貢献します。例えば、8つの選択肢のある項目が3つあった場合、すべてのパターンを網羅するには8^3=512個の処理が必要ですが、主成分分析によって項目を2つに減らした場合、8^2=64個の処理で済むことになります。単純なやり方はある項目Aとある項目Bを最小二乗法で一次式を引き、一次式がよく当てはまれば、その一次式の傾きに合わせて次元を削減、というものです。下図なんかがわかりやすいです。三項目のデータを二項目で表しています。

 この手法の応用のために使われる関連技術には、平面でなくもっと複雑な面にまとめるカーネルやスカスカなデータは不要と判断するスパース性なんかがあります。

著者:杉浦

texで論文を書く人向けのツールの紹介

特にtex(きれいに数式を書ける論文向け言語)を使って論文の制作する人の役に立ちそうな道具の紹介になります。
Math – MyScript Webdemo:https://webdemo.myscript.com/views/math.html
手書きで書いた数式をtex形式にするページです。分数を書くたびにいちいち\frac{}{}、ギリシャ文字を書くためにいちいち\alphaなんか書く必要があって手間なtexの数式制作を楽にしてくれます。
CSV2TeX:https://www.quark.kj.yamagata-u.ac.jp/~genki/omake/csv2tex_kai_v1.html
csv形式のデータをtexの表にしてくれるページです。これまた区切りが七面倒くさいtexの表の制作を楽にしてくれます。
smallpdf:https://smallpdf.com/jp
pdfを大きく圧縮するアプリの紹介です。経験談では20MB越えのpdfファイルが数MBになりました。
メールに添付するには大きすぎるpdfを作りがちな、修士論文、卒業論文をメールで提出しないといけない大学生なんかには特に役に立つと思います。

著者:杉浦

GNSSの測定する位置と速度

 前情報としてAccuracy(正確さ)、Precision(精度)の話を挟ませていただきます。誤差はランダムな誤差と規則的な誤差の二種類に分けることができます。計測、予測の世界においては下図の様にランダムな誤差の大きさをAccuracy(正確さ)、規則的な誤差の大きさをPrecision(精度)と呼びます。

 GNSSの測定する位置と速度の精度の話に入らせていただきます。GNSSから得られる情報には様々なものがあります。この中で容易に得られる成形された情報としてNMEAというフォーマットに沿った情報があります。このフォーマットの中には位置と速度が含まれています。しかしながらこの位置と速度を導き出される過程はとても異なるものとなっています。
 GNSSはGNSSはなぜ都心で精度が悪くなりやすいのかに書いた通りGNSS受信機の位置を、GNSS受信機一台と地球の衛星軌道上の人工衛星三基を結んでできる三角錐から受信機の位置を連立方程式によって解く手法によって測定しています。最近はRTK-GNSSによるcm級測位などが話題となっておりますが、この手法による誤差は10m~20mほどです。(受信環境、受信信号を用いた計算に対する工夫、他技術を交えることによって市販されている様々なGNSS受信機における実際の誤差はもっと少ないものが多いです)一方で、GNSS受信機の速度はドップラ効果から測定されます。これは信号を受け取った時点の波長と発信された時点の信号の波長のずれから速度を計算するという手法です。こちらの手法はとても精度がよく、水平速度精度0.36m/sec、垂直速度精度0.72m/secとなっています。RTK-GNSS以前からcm単位で語れる誤差があったわけです。
 一見、このドップラ効果を用いた測定された速度を積算することによって位置を推定したならばとても誤差の小さい位置の推定ができるように思えます。ここでAccuracy(正確さ)、Precision(精度)の話が出てきます。このドップラ効果によって測定された速度の誤差が小さいことは述べた通りです。しかしながら、積算のみによる位置の推定には完璧なAccuracy(正確さ)が求められてしまいます。これは上図の左下のような偏りがわずかでもあった場合、偏りが膨らみ続け大きな誤差を生むことになることが原因です。これによってドップラ効果から得られた速度の積算のみによる位置の推定には問題があるわけです。
 ネガティブな意見を述べましたが、現実にこのドップラ効果による速度は高精度であり、この高精度速度を利用して得られた位置の誤差はRTK-GNSSを用いずとも2、3m程度になります。この位置と速度を組み合わせてより正確な位置を求めることに使われている技術の主となるのがカルマンフィルタと呼ばれる技術です。カルマンフィルタはGNSSのみならず制御工学、宇宙工学、経済学などで広く使われる優れた技術です。