対応言語数が47まで増えた「Geo3x3」、最近使われている言語で見るとどのくらいカバーできているか、 GitHubの言語別統計「GitHut」でチェックしました。
PUSH数(GitHubへのコードのアップロード)で見ると、JavaScriptが次点のPythonの倍以上と圧倒的!


6位のShell(シェルスクリプト)が気になりました。そもそもプログラミング言語としてカウントするもの!?くらいの認識でしたが、変数、繰り返し、関数があって一応プログラミングもできる様子。

geo3x3_encode() { local lat=$1 local lng=$2 local level=$3 local res= if [ $level -gt 0 ]; then if [ `echo "$lng>0" | bc` -eq 1 ]; then res=E else res=W lng=`echo "scale=16; $lng+180" | bc` fi lat=`echo "scale=16; $lat+90" | bc` unit=180 local i for ((i=1; i<$level; i++)) do unit=`echo "scale=16; $unit/3" | bc` local x=`echo "scale=0; $lng/$unit" | bc` local y=`echo "scale=0; $lat/$unit" | bc` res=$res$(($x+$y*3+1)) lng=`echo "scale=16; $lng-$x*$unit" | bc` lat=`echo "scale=16; $lat-$y*$unit" | bc` done fi echo $res }

ということで、Geo3x3のエンコードを移植してみたのがこちら(src on GitHub)。 if文やfor文の書き方にクセがあり、変数代入前後にスペースをいれてはいけなかったり、計算するときは$(())で囲む必要があったり、浮動小数には対応していないので、外部コマンドbcに頼ったりとなかなか大変ですが、ちゃんと動くようになりました。

$ bash geo3x3.sh encode 35.65858 139.745433 14 E9139659937288

LinuxやMacであれば何もインストールすることなく使えて、他のコマンドとの組み合わせも簡単なのがシェルスクリプトのいいところ。

ランキングで見るとC++よりは下ですが、C#やCと同じくらい使われています。 確かに、各種プロダクトでもセットアップや、起動スクリプトなどで使われているので、確かにPUSH数が伸びることにも納得です。 WindowsやDOSでいうバッチファイル(BAT)、深くやるかどうかは別として、エンジニアには必須技術ですね!


本日、日興証券オープンイノベーションラボの新企画「高専インカレチャレンジ」の北陸5高専向けトライアルの説明会!


一緒にメンターする、長岡高専出身、フラーの渋谷さんと共に高専生への応援演説!


今回のプラットフォームとして使用する、フランス生まれのイノベーションプラットフォーム「agorize」、日本法人の中澤社長からもメッセージ。

links
- SMBC日興証券がAgorizeオープンイノベーションプラットフォームにて「高専インカレチャレンジ」を開催|Agorize Japan株式会社のプレスリリース

3/6は、インターナショナルオープンデータの日!そのプレイベントとしても開催、オープンデータ勝手表彰!

最優秀賞は、シビックテックの火付け役、東京都コロナウイルス感染症対策サイト
Code for JapanのSlackへの参加呼びかけに応えるエンジニアがすごい勢いで伸び、3000人を突破!現在4,766人を数えます。 ここでの活動がきっかけで、COVID-19 Japan 新型コロナウイルス対策ダッシュボードは生まれました。


COVID-19 Japan 新型コロナウイルス対策ダッシュボード」も貢献賞!
まもなく運用開始から約1年、データが十分に揃っておらず、状況が日々変わる第一波の頃はかなりエキサイティグな日々を過ごしました。 オープンデータの力、多くの方に知っていただく機会になったことがうれしいです。表彰いただき、ありがとうございました。
オンライン開催 インターナショナル・オープンデータ・デイ 2021 in HOKURIKU」にて、舞台裏、紹介します!


我らが福井県、Code for Japanと共に受賞!
いち早く、推奨フォーマットに準拠したCSVオープンデータ化が評価されました。


石川県、静岡県、青森県、コンプリート賞!
オープンデータ都市状況はこちらのオープンデータとアプリでご覧いただけます
日本の市町村オープンデータ取組率ダッシュボード (カラム地図7x7 x 政府CIOポータルオープンデータ)
おや、青森県97%!?
青森県平川市のオープンデータが政府CIOポータルのデータに未反映のようでした。


ダッシュボード賞として「エレクトリカル・ジャパン - 発電所マップと夜景マップから考える日本の電力問題 | 東日本大震災アーカイブ - 国立情報学研究所」を選定させていただきました。 身近なで重要なインフラなのにまだまだデータ整備が足りていない発電所オープンデータを、民間運用でなんと10年、日本一のデータ量を誇ります! 手回し発電して無電源で無限にプログラミングできる、IchigoJam無電源セットを副賞としてご提供!

受賞いただいた、Nii 北本朝展さんが提供する多数のデータは、電力以外にも興味深いものがたくさんあります。 気になる地震のデータ、気象庁XMLを使った表示はじめのいっぽ、試してみました。

震源・震度に関する情報 - 気象庁XML
気象庁 | 気象庁防災情報XMLフォーマット形式電文(PULL型)」こちらの情報をブラウザでダイレクトに取得することはCORS設定されていないのでできないので、中継サービス「proxy for Deno」を作って、自前サーバーで運用して対応。


Geo3x3」zoom設定可能になったGeo3x3-map
取得した震源地の緯度経度をproj4をESモジュール化し、緯度経度を日本測地系を世界測地系に変換しつつ、Geo3x3でコード化して、地図表示へのリンクを追加しました。 ただ、この気象庁XMLでは、電力会社の停電情報同様、一定時間で消えていってしまうので、別途アーカイブ化する必要があります。データ活用の余地、大きいですね!

勝手表彰、受賞いただいたみなさま、ありがとうございました!

jigインターン2021冬、Cチームの作品「登下校タイムアタック!!」は、退屈な毎日の登下校をゲームに変えて、ヒーローになろうというサービス。

いいフォント!


ターゲットは学生!遅刻常習犯にこそ使ってほしい!?


設定画面、勝手にGeo3x3対応してみたバージョン。住所入力面倒ですよね?Geo3x3なら1コードで楽々。サービス側もジオコーディングいらずで楽々。 (住所を入力した場合、APIでジオコーディング対応)


登校手段を設定して、いざスタート!


プレイ画面、スタート、ゴール、現在位置がマーカー表示されます。区間タイムが出るとうれしいというコメントもありました。


本日のスコア!が表示されおつかれさまでした!スコアがサーバーに保存されるまでが実装されています。(ゴール判定、ランキング、ユーザー管理は未実装)


Geo3x3
40言語に対応した、Geo3x3、コード体系を変更しました(全言語更新済み!)。
いままで左上から123と並んでいたものを、左下から123、中段が456中段、上段が789とキーボードのテンキーの並びに合わせる形に変更した、v1.05をリリース。

いままでの地図アプリへのリンク(#E379)は、新地図アプリ(#913)へリダイレクトするように変更しました。 今までのコードを使っている方は、v1.05系への移行がおすすめです。

今後実アプリにどんどん活用していきたいと思います!

無限に作成できるチラシとも言える、web。HTMLが書けてGitHubのアカウントがあればいくらでもサイトづくりできます。
じぶんのウェブサイトをつくろう! 13才以上なら誰でも無料で持てるホームページ&HTMLとCSSはじめのいっぽ

HTMLの基本要素、タグ。JavaScriptを使えば自分で好きなタグを作ることができちゃいます。


geo3x3-map (src on GitHub)」
作ったタグは、こんな感じで使えます。

<script type="module" src="https://code4sabae.github.io/geo3x3-map/geo3x3-map.mjs"></script> <geo3x3-map code="E3793653391822"></geo3x3-map>

ハイフン付きのタグが独自タグの印。Vue.jsでのv-タグなど、HTMLを拡張するのに使われている標準機能です。


Haxe
Geo3x3のHaxe版、作ってみました。 コンパイラが高速なのがうれしい、マルチプラットフォーム言語、Haxe(ヘックス)。 JavaScriptにもコンパイル可能! ES6モジュール化して、既存のwebアプリと簡単につながれば強力そうなので、うまい方法模索中。

LISPを代表とする、関数型言語。 順に実行が基本のBASIC、C、Java、Pythonに代表される手続き型プログラミング言語と違って、関数型プログラミング言語は純粋に計算する世界。 必要になものだけ計算するので効率が良く、時間軸による副作用をないためマルチコア時代の並列実行に有利です。

多言語サポートを進めるGeo3x3は、いろいろなプログラミング言語に触れる良い機会。 実装して貢献してもらった、関数型言語 HaskellElixirRacket(LISP系) をベースに学び、OCamlErlang版を作りました。

下記はOCaml(オーキャムル)で作った、Geo3x3のエンコードとデコードです。手続き型言語からの移行用の優しさか、関数型っぽくない記述もありますが、ひとまず動作したので登録しています。 関数型言語、関数型的思考がだんだん掴めてくる間隔が楽しいので、何かの機会に遊んでみることをオススメします。大容量データ時代、超並列時代に使い所がありそうです!

open String;; let encode lat lng level = if level < 1 then "" else let (res, lng1) = if lng >= 0.0 then ("E", lng) else ("W", lng +. 180.0) in let lng2 = lng1 in let lat2 = (90.0 -. lat) in (* 0:the North Pole, 180:the South Pole *) let rec loop i lat lng unit = if i >= level then "" else let x = int_of_float (lng /. unit) in let y = int_of_float (lat /. unit) in let n = x + y * 3 + 1 in let lng2 = lng -. (float_of_int x) *. unit in let lat2 = lat -. (float_of_int y) *. unit in (string_of_int n) ^ (loop (i + 1) lat2 lng2 (unit /. 3.0)) in res ^ (loop 1 lat2 lng2 (180.0 /. 3.0));; let decode code = (* (35., 135., 14, 0.1);; *) let clen = String.length code in if clen < 1 then (0.0, 0.0, 0, 180.0) (* err *) else let c = code.[0] in let (flg, beg) = if c = '-' || c == 'W' then (true, 1) else if c == '+' || c == 'E' then (false, 1) else (false, 0) in let rec loop i lat lng level unit = if i >= clen then (lat, lng, level, unit) else let unit2 = unit /. 3.0 in let n = (int_of_char code.[i]) - 49 in (* ignore err check *) let lat2 = lat +. (float_of_int (n / 3)) *. unit2 in let lng2 = lng +. (float_of_int (n mod 3)) *. unit2 in loop (i + 1) lat2 lng2 (level + 1) unit2 in let (lat, lng, level, unit) = loop beg 0.0 0.0 1 180.0 in let lat2 = lat +. (unit /. 2.0) in let lng2 = lng +. (unit /. 2.0) in let lat3 = 90.0 -. lat2 in let lng3 = if flg then lng2 -. 180.0 else lng2 in (lat3, lng3, level, unit);;

29言語サポートまで増えた「Geo3x3」ですが、まだまだおもしろいプログラミング言語がいっぱいあります。 古の言語を使ってみたり、新しいプログラミング言語の使い心地を見てみるのにも活用できそう!

いろんなプログラミング言語で試しに作ってみるのがマイブーム。Geo3x3の対応言語が26まで増えました。 (Elixirユーザーによる貢献、感謝!


Geo3x3 Programming Language List
3進法で緯度経度を統合するコード体系、Geo3x3の対応プログラミング言語一覧をCSVオープンデータ(ライセンス、CC0)として、作成しました。 名前、拡張子、構造記述スタイル(カッコ or begin/end系)、変数、定数の書き方、種類(スクリプト型かコンパイル型か)、Geo3x3のencode/decodeのプログラムへのサンプルだけをひとまずまとめました。

新対応の各言語、雑感
Nim、変数をちゃんと宣言できてコンパイルしてくれ高速なPython風、*を付けてexportというのがユニーク。
Lua、コンパクトで有名なインタプリタ、++、+=が使えないのが不便。
Perl、ひさびさPerl、モジュール化のためにいろいろと拡張されてる様子!
Elixir、創ってもらったもの、関数型言語っぽい書き方、LISPへの移植にもいいかも?
Groovy、シンプルに書けるJavaとしておもしろい。
D言語、少し豪華なC言語?文字列の扱いがちょっと面倒。
Julia、ブロックをendで区切るタイプの変数宣言不要なかわいい言語。

お気に入りの言語を探そう!
気に入ったものがなければ、創ってしまうのもいいですよ。

求む、COBOLFortranプログラマー!

links
- Geo3x3

日本語も話しながら覚えたように、プログラミング言語もまずは作ってみることからトライするのが近道です。

Geo3x3(ジオスリーバイスリー)のプロモーションのため、無料で使える様々なプログラミング言語を巡り。OpenVBS、Scala、R、GAS、Nimに対応、サポート言語は合計20になりました。

R言語Scalaの比較。だいたい同じような感じであることが分かると思います。 たくさんあるプログラミング言語ですが、コンピューターにやってほしいことを書くという本質は一緒です。

RubyHaskellは、プルリクいただいたもの! ご貢献、ありがとうございます!ぜひお気に入りの言語、気になる言語が無いなーって方、奮ってご参加ください。テストコード追加、ライブラリとしての登録なども大歓迎です。 CC0のパブリックドメイン、お好きなようにご活用ください!

Geo3x3 言語対応の仕方
1. ターゲットとなる言語を決める
2. 似た言語のプログラムをコピーして拡張子だけ変える(ファイル名規約をチェックし大文字小文字合わせる)
3. encodeとdecodeを移植する(セミコロンありなし、カッコかbegin/endか、変数と定数、整数と小数変換、文字と整数変換、まとめかたを検索して解決する)
4. 実行方法をドキュメントに記述して完了!

それぞれの言語の特徴を体感できて楽しいですよ!


天気のいい日は、外でプログラミング!


ステキにリニューアルした、鯖江商工会議所地下1F


大きなスクリーン&プロジェクターが使えます!


配信スタジオもあります!

2021.2.26(金)18:30- Cyber Friday @ 鯖江商工会議所 地下1Fへ、ぜひどうぞ!
コンピューター好きな方、ぜひお話しましょう!
Geo3x3:E3792198838339


Geo3x3コードを入力するたびにズームするようにしてみました。こちらの使い勝手もどんどん上げていくと良さそうです。

CC0にしたGeo3x3、より使ってもらえるためには、いろいろなプログラミングへのサポートが大事かも? サポート言語を一気に14言語まで増やしました!

JavaScript / TypeScript / C / C++ / C# / Swift / Java / Python / Ruby / PHP/ Go / Kotlin / Dart / Rust で、使えます!
それぞれの言語の学習サンプルとしてもご活用ください。


Geo3x3 - src on GitHub


CyberValley サイバーバレー は、E379219
2.26金曜日18:30-、サイバーフライデーとして、鯖江商工会議所 SCC B1Fでミートアップ
コンピューター好きのみなさん、ぜひどうぞ!

日本の住所には現在、住居表示住所(丁目、番、号)と地番表示(番地)の2種類あります。 ただ、どちらもオープンデータの整備は不十分、いっそ緯度経度で指定したいくらいです。

緯度経度は2つの小数で表すので扱うのが少し面倒です。その解決、位置をコード化する Geo3x3(ジオスリーバイスリー)。 2012年に考案し、2013年にCC BYへとライセンスを変更。 この度、webアプリや、Deno や Node.js で使いやすいよう整えて、ライセンスをCC0(パブリックドメイン)へと変更しました。


Geo3x3:E5
Geo3x3は、東経と西経に分かれる経度に合わせてEまたはWではじめ、そのエリア内を3x3の9分割した位置を1から9の数字で十分な細かさになるまで繰り返すというシンプルなアルゴリズムです。


例えば、ざっくり日本の位置を示すなら、E379でOK。福井県はE37924、鯖江市のめがね会館はE379219895244という感じです。 コードを長くするほどにメッシュが細かくなり、長さ20でのメッシュは2cm角にまでなるので緯度経度代わりにも使用可能です(例、E3792198952444375954)。

緯度経度は、2進法化すると正確性が失われますが、Geo3x3はその心配はありません。
緯度経度は、何桁までが有効なのかを別途記録しておく必要がありますが、Geo3x3は長さがそのまま精度となります。

Geo3x3のもうひとつのいいところは、コピペが簡単なところです。緯度と経度を逆にしてしまったり、区切りの文字をどうするかを考えることも必要ありません。

E37924

西経をマイナス表記で表記する数値としても扱えるよう変更した Geo3x3 ver 1.03
ご活用ください!(src on GitHub

地球上の地点を表す緯度経度、もはや誰もが持つようになったGPSと合わせて使うことで、簡単に目的にたどり着けるようになりました。住所や、建物名よりも、緯度経度を教えてもらいたいくらいですよね。

ただ緯度経度が、それほど気軽に使われていません。問題は、緯度と経度の2つの小数点を使う数値を使うために長くなることにあるのではないでしょうか?

そこで考案したのがGeo3x3(ジオスリーバイスリー)という緯度経度、正確には4点の角度が同じ正方形によって囲まれたエリアを一連の数値に変換する方式です。例えば、日本付近は「E37」、福井県付近は「E379219」、鯖江駅付近は「E379219894」というように、荒く指定するときには短く、細かく指定するほど長くなります。長くても電話番号くらいなので、覚えられなくもない桁数になっています。

いままでJavaScriptのコードはありましたが、今回Javaに移植してみました。また、ライセンスも移植可能で、使いやすい CC BY(クリエイティブコモンズ、表示)に変更しました。githubにアップしてあるので、どうぞご活用ください! (追記、2021.2.20 CC0化しました

geo3x3 - 2012 一日一創
taisukef/Geo3x3 · GitHub
緯度経度に代わる位置をシンプルに表す Geo3x3(ジオスリーバイスリー) パブリックドメイン化!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / RSS