2012-01-29
第19回スマートフォン勉強会@関西に参加しました&LTしました
こんにちは。加藤です。
昨日、土曜日に開催された「第19回スマートフォン勉強会@関西」に参加しました。また、飛び入りでLT(ライトニングトーク)をしました。
LTではGeoDeltaの紹介をしました。LT用の資料は用意していなかったので、Webサイトをいくつか使いながら説明を行いました。以下、参考にリンクを張っておきます。
- Twitter - 那由多屋 @nayutaya
- 株式会社那由多屋
- Nayutaya Inc. 作成のアプリ - Android Market
- Googleマップ
- Wikipedia - 経緯度
- GeoHex V3公開しました。 | geogames.net
- 緯度経度を文字列で表すGeoHash - @masuidrive blog
- Wikipedia - メルカトル図法
- GeoDeltaというものを考えてみました - 那由多屋 開発日誌
- nayutaya/geodelta - GitHub
2012年もどんどん勉強会に参加していきたいと思います!
2012-01-11
那由多屋が設立5周年を迎えました
本日、2012年1月11日をもちまして、株式会社那由多屋は設立5周年を迎えました。
小さな節目ではありますが、無事、5周年という節目を迎えられたことを大変嬉しく思います。
昨年と同様、本年も那由多屋はAndroidアプリの開発に注力して参ります。
今後とも、どうぞよろしくお願い致します。
株式会社那由多屋
代表取締役 加藤勇也
2011-08-26
GeoDeltaというものを考えてみました
こんにちは。那由多屋の加藤です。
地球上の座標を示すためのコード「GeoDelta」というものを考えてみました。ちなみに考えてみただけです。実装求む!(笑)
概要
とても大雑把に言えばGeoHexの三角形バージョンです。世界を入れ子の三角形で分割し、それを符号化します。
特徴
GeoDeltaには下記のような特徴があります。たぶん。(なにぶん、まだ実装していないので本当かどうか・・・)
- メルカトル図法で描画された地図を正三角形で分割します。(Googleマップなど)
- 下位の領域(三角形)は上位の領域に包含されます。
- 比較的短いコードで領域(面積を持つ座標)を表現することができます。
- GeoDeltaコードの末尾を削ることで、1レベルまたは2レベル上位の領域を示すことができます。
- GeoDeltaコードは、口頭での伝達、手書きによる伝達で間違いが生じにくいように設計されています。
- 三角形を6つ組み合わせて六角形でビジュアライズするのが容易です。
- およそ北緯82.46度から南緯82.46度の領域を示すことができます。(南極観測隊のみなさん、ごめんなさい!)
開発者向けには以下のような特徴があります。
仕様
以下、具体的な仕様です。まだあまり検証されていません。
領域
GeoDeltaでは、領域のことを「デルタ」と呼びます。地球を8個に分割したデルタを「ワールドデルタ」、入れ子になったデルタを「サブデルタ」と呼びます。
ワールドデルタには0から7までの番号が振られています。北半球から南半球、西から東の順番で番号が振られます。
上図における経度0度の北半球に位置するのがデルタ0(ヨーロッパを含む領域)、そこから東方向にデルタ1(主にアジアを含む領域)、デルタ2(日付変更線を含む領域)、デルタ3(北アメリカを含む領域)とします。
南半球も同様に、経度0度がデルタ4(南極だけを含む領域)、デルタ5(オーストラリアを含む領域)、デルタ6(日付変更線を含む領域)、デルタ7(南アメリカを含む領域)とします。
ワールドデルタは4つの領域に分割されます。分割されたデルタが「サブデルタ」です。サブデルタを分割したデルタもまた「サブデルタ」です。
サブデルタには0から3までの番号が振られています。中心を0とし、時計回りに1、2、3とします。上向きの三角形と下向きの三角形があることに気をつけて下さい。
レベル
領域の大きさは「レベル」と呼ばれる数値で示されます。ワールドデルタがレベル1、それを4分割したサブデルタのそれぞれがレベル2、そのサブデルタをさらに分割したものがレベル3です。
レベルが1つ大きくなるにつれて、地図上での面積が4分の1になります。実際に表現される領域の面積が4分の1になるわけではないことに気をつけて下さい。
コード体系
GeoDeltaコードは、下記のような書式で構成されます。
WSSSS....
「W」は符号化されたワールドデルタ、「S」は符号化されたサブデルタを示します。
より大きいレベル(狭い面積)を示すGeoDeltaコードほど長くなります。
符号化
GeoDeltaコードは、数字とアルファベットで構成されます。アルファベットは大文字小文字を区別しませんが、大文字で表記することが推奨されます。
GeoDeltaコードでは、数字の「0」「1」「9」、アルファベットの「I」「L」「O」「Q」「U」を除く28文字で表現されます。これらの文字が除かれている理由は、下記の通りです。
- 「0」: アルファベットの「O」と間違える可能性があるため。
- 「1」: アルファベットの「I」「L」と間違える可能性があるため。特に「L」が小文字の場合。
- 「9」: アルファベットの「Q」、数字の「6」と間違える可能性があるため。「Q」については日本語特有。
- 「I」: 数字の「1」、アルファベットの「L」と間違える可能性があるため。特に「L」が小文字の場合。
- 「L」: 数字の「1」、アルファベットの「I」と間違える可能性があるため。特に「L」が小文字の場合。
- 「O」: 数字の「0」と間違える可能性があるため。
- 「Q」: 数字の「9」と間違える可能性があるため。日本語特有。
- 「U」: アルファベットの「V」と間違える可能性があるため。特に手書きの場合。
ワールドデルタは1文字に符号化されます。対応表は下記の通りです。
| デルタ0 | Z |
| デルタ1 | Y |
| デルタ2 | X |
| デルタ3 | W |
| デルタ4 | V |
| デルタ5 | T |
| デルタ6 | S |
| デルタ7 | R |
ワールドデルタに続くサブデルタは、レベルによって文字数が異なります。サブデルタの符号化は、下記の順序で行います。
- 4進数(0から3)のシーケンス(例えば0、1、2)を2進数のシーケンス(例えば00、01、10)に変換します。
- 2進数のシーケンスをレベルの小さな領域から順番に結合します。
- 下記の対応表に従い、4ビット、または2ビットを文字に変換します。
4ビット以上残っている場合は、下記の表で変換します。
| 0000 | 2 |
| 0001 | 3 |
| 0010 | 4 |
| 0011 | 5 |
| 0100 | 6 |
| 0101 | 7 |
| 0110 | 8 |
| 0111 | A |
| 1000 | B |
| 1001 | C |
| 1010 | D |
| 1011 | E |
| 1100 | F |
| 1101 | G |
| 1110 | H |
| 1111 | J |
2ビット残った場合、下記の表で変換します。
| 00 | K |
| 01 | M |
| 10 | N |
| 11 | P |
符号化の例
GeoDeltaコードの符号化の例を下記に示します。
・・・これ以上は実際に実装しないと無理そうです。
実装のお願い
ここまで考えたのはいいのですが、実装する元気と時間がありません(笑)。実装を求む!
できることならば、OSI(Open Source Initiative)が認めるオープンソース・ライセンス下での提供を望みます。
一番最初にエンコーダ、デコーダを実装してくれた方にラーメンを奢ります!(ただし、関西圏、東京23区内に限る)
参考情報
実装者の参考になるであろう情報を並べておきます。
- 六角形によるジオコーディング: GeoHex
- 矩形によるジオコーディング: GeoHash
- メルカトル図法の概要について: メルカトル図法 - Wikipedia日本語版
- メルカトル図法の具体的な座標変換について: Mercator projection - Wikipedia英語版
- 三角格子座標系の効率的な表現について: いろいろな画素形状での離散ボロノイ図
ライセンス
この仕様書(笑)のライセンスは、CCライセンスのBY-SA(表示-継承)2.1とします。名前は「Yuya Kato (Nayutaya Inc.)」としてください。
2011-08-25
GeoHexのライセンス
こんばんは。那由多屋の加藤です。
GeoHexのライセンスについて少し思うところがあったのでメモ。
twitterでの会話
先日、GeoHexに関して下記のようなツイートをしたら、作者の@sa2daさんよりツイートを頂きました。
#geohex を使ってみたいけれど、ライセンスがイマイチわからない。プログラムにCCを適用するとどうなるのだろう・・・?
このツイートに対する@sa2daさんからのツイートは下記の通り。
@nayutaya geogames.net をご覧ください。簡単にお伝えしますと、コンテンツ全体にかかるGPLとご理解下さい。
せっかくツイート頂いたので、疑問をぶつけてみた。
@sa2da ご返信ありがとうございます!お教え頂いたページは一通り目を通していたのですが、それでも理解できなかったのです…
http://twitter.com/#!/nayutaya/status/106180769281605632
@sa2da 疑問1:CCライセンスのオブジェクト(例えば*.so)と非CCライセンスのオブジェクトをリンクすると、生成物はCCライセンスになるのでしょうか?
http://twitter.com/#!/nayutaya/status/106181523983695872
@sa2da 疑問2:CCライセンスの創作物1から派生した創作物2(非公開)があり、創作物2から派生した創作物3を公開した場合、創作物2に公開義務が生じるのでしょうか?
http://twitter.com/#!/nayutaya/status/106182415961161728
@sa2da 疑問1が真(CCライセンスになる)ならば、CCライセンス以外のものと混ぜることはできなくなり、一般的なソフトウェア開発ではすべてライセンス違反になりそうです。
http://twitter.com/#!/nayutaya/status/106183116829360129
@sa2da 疑問2が真(創作物2に公開義務が生じる)ならば、中間生成物をすべて公開しないといけないことになり、CCというライセンス自体に不具合が内在している気がします。(こちらはちょっと調べてみます)
http://twitter.com/#!/nayutaya/status/106183773372162048
@sa2da お暇な時にでも、考えをお聞かせ願えると幸いです。
http://twitter.com/#!/nayutaya/status/106184148871430145
@sa2da 言い忘れていましたが、 #geohex はとても素晴らしい発想&素敵な技術だと思っています!正直、感動しました。
連続7ツイート(笑)。再び@sa2daさんより返信を頂きました。
@nayutaya 2)の非公開な第二生成物は無く、N次創作まですべてオープン性を継承することを意図してCCライセンスを採用しました。
http://twitter.com/#!/sa2da/status/106184623704391681
@nayutaya ありがとうございます!クローズドに採用される場合は、別途ライセンスをご提供させて頂いております。大枠の意図はお伝えした通りで、後は専門的な皆様からのフィードバックを元に検討させて頂いております。
そもそもCCライセンスとは何か?
せっかくなので、CCライセンスについて再度勉強してみました。creative commons JAPANのページより引用します。
クリエイティブ・コモンズとは、クリエイティブ・コモンズ・ライセンス(CCライセンス)を提供している国際的非営利組織とそのプロジェクトの総称です。CCライセンスはインターネット時代のための新しい著作権ルールの普及を目指し、様々な作品の作者が自ら「この条件を守れば私の作品を自由に使って良いですよ」という意思表示をするためのツールです。CCライセンスを利用することで、作者は著作権を保持したまま作品を自由に流通させることができ、受け手はライセンス条件の範囲内で再配布やリミックスなどをすることができます。
http://creativecommons.jp/licenses/
licensed under a Creative Commons 表示 2.1 日本 License.
そして徒然たるままに
GeoHexのサイトや@sa2daさんのツイートを見る限り、現状ではGeoHexという発想(発明)と、その実装(表現)の両方に対してCCライセンスが適用されていると認識しています。また、著作権などで保護される「表現」と、特許権などで保護される「発明」は別に考える必要がある、と思っています。
それを踏まえて、思ったことを徒然たるままに。
- CCライセンスは、作品の公開、実演などに際して効果を発揮し、表現の保護が対象であると理解しています。そのため、発想の保護、コントロールには向かないのではないか。
- @sa2daさん自身も過去に述べられている様に、CCライセンスの主な対象は画像、動画、音楽などであり、ソフトウェアは明確に「適さない」とされています。そのため、ソフトウェアという表現の保護にも向かないと考えています。
- 例えばBY-SA(表示、継承)のCCライセンスが適用された画像単体から新たな創作物を生成するのは容易ですが、ソフトウェアの場合、他に必要とするものが多すぎるため、二次創作はかなり困難ではないか。
- CCライセンスを適用しても、二次創作物の公開を強制することはできないのではないか。
- 「GeoHex V3公開しました。」という記事には、使用にあたっての条件が列挙されており、それはCCの精神に反するのではないか。
- ライセンス不整合の問題でCCライセンス下での使用は困難なので、ほとんどは個別ライセンスになってしまうのではないか。
- それがGeoHexの普及、発展を阻害してしまうのではないか。
- ライセンスの変更は一般的に遡及しない。
- 提案。GeoHexの仕様の記述と、その実装で異なるライセンスを採用してはどうか。
と、いろいろライセンスについて考えていたら、GeoHexとは異なるけれど、自分の用途に合いそうなジオコードを思い付いたので、思考停止(笑)。時間を作って実装しよう。
2011-08-23
「鉄道運行マップPLUS」をリリースしました
こんにちは。那由多屋の加藤です。
新しいAndroidアプリ「鉄道運行マップPLUS」をリリースしました!
どんなアプリ?
Androidアプリ「鉄道運行マップ」(無料)のプレミアム版です。「鉄道運行マップPLUS」はライセンス情報のみを含むため、別途「鉄道運行マップ」(無料、v0.0.7以降)が必要です。
「鉄道運行マップPLUS」をインストールすると、下記の機能が有効になります。
- ダッシュボードに登録できる路線が4件から20件に増加します。
- 広告が表示されなくなります。
その他、新機能を先行して提供する予定です。
どこからダウンロードできるの?
Androidマーケットよりダウンロードできます。右記のQRコードからもアクセスできます。



