Hatena::ブログ(Diary)

那由多屋 開発日誌 RSSフィード

2012-01-29

第19回スマートフォン勉強会@関西に参加しました&LTしました

 こんにちは。加藤です。

 昨日、土曜日に開催された「第19回スマートフォン勉強会@関西」に参加しました。また、飛び入りでLT(ライトニングトーク)をしました。

 LTではGeoDeltaの紹介をしました。LT用の資料は用意していなかったので、Webサイトをいくつか使いながら説明を行いました。以下、参考にリンクを張っておきます。

 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コードかどうか、1つの正規表現で判定できます。
  • 単純な文字列処理で上位の領域が得られます。

仕様

 以下、具体的な仕様です。まだあまり検証されていません。

領域

 GeoDeltaでは、領域のことを「デルタ」と呼びます。地球を8個に分割したデルタを「ワールドデルタ」、入れ子になったデルタを「サブデルタ」と呼びます。

 ワールドデルタには0から7までの番号が振られています。北半球から南半球、西から東の順番で番号が振られます。

f:id:nayutaya:20110827030530p:image

 上図における経度0度の北半球に位置するのがデルタ0(ヨーロッパを含む領域)、そこから東方向にデルタ1(主にアジアを含む領域)、デルタ2(日付変更線を含む領域)、デルタ3(北アメリカを含む領域)とします。

 南半球も同様に、経度0度がデルタ4(南極だけを含む領域)、デルタ5(オーストラリアを含む領域)、デルタ6(日付変更線を含む領域)、デルタ7(南アメリカを含む領域)とします。

 ワールドデルタは4つの領域に分割されます。分割されたデルタが「サブデルタ」です。サブデルタを分割したデルタもまた「サブデルタ」です。

f:id:nayutaya:20110827030531p:image

 サブデルタには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文字に符号化されます。対応表は下記の通りです。

デルタ0Z
デルタ1Y
デルタ2X
デルタ3W
デルタ4V
デルタ5T
デルタ6S
デルタ7R

 ワールドデルタに続くサブデルタは、レベルによって文字数が異なります。サブデルタの符号化は、下記の順序で行います。

  1. 4進数(0から3)のシーケンス(例えば0、1、2)を2進数のシーケンス(例えば00、01、10)に変換します。
  2. 2進数のシーケンスをレベルの小さな領域から順番に結合します。
  3. 下記の対応表に従い、4ビット、または2ビットを文字に変換します。

4ビット以上残っている場合は、下記の表で変換します。

00002
00013
00104
00115
01006
01017
01108
0111A
1000B
1001C
1010D
1011E
1100F
1101G
1110H
1111J

2ビット残った場合、下記の表で変換します。

00K
01M
10N
11P
符号化の例

 GeoDeltaコードの符号化の例を下記に示します。

 ・・・これ以上は実際に実装しないと無理そうです。

実装のお願い

 ここまで考えたのはいいのですが、実装する元気と時間がありません(笑)。実装を求む!

 できることならば、OSIOpen Source Initiative)が認めるオープンソースライセンス下での提供を望みます。

 一番最初にエンコーダデコーダを実装してくれた方にラーメンを奢ります!(ただし、関西圏、東京23区内に限る)

参考情報

 実装者の参考になるであろう情報を並べておきます。

ライセンス

 この仕様書(笑)のライセンスは、CCライセンスのBY-SA(表示-継承)2.1とします。名前は「Yuya Kato (Nayutaya Inc.)」としてください。

2011-08-25

GeoHexのライセンス

 こんばんは。那由多屋の加藤です。

 GeoHexライセンスについて少し思うところがあったのでメモ。

twitterでの会話

 先日、GeoHexに関して下記のようなツイートをしたら、作者の@sa2daさんよりツイートを頂きました。

#geohex を使ってみたいけれど、ライセンスがイマイチわからない。プログラムにCCを適用するとどうなるのだろう・・・?

http://twitter.com/#!/nayutaya/status/106012208974147587

 このツイートに対する@sa2daさんからのツイートは下記の通り。

@nayutaya geogames.net をご覧ください。簡単にお伝えしますと、コンテンツ全体にかかるGPLとご理解下さい。

http://twitter.com/#!/sa2da/status/106165442816643072

 せっかくツイート頂いたので、疑問をぶつけてみた。

@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 はとても素晴らしい発想&素敵な技術だと思っています!正直、感動しました。

http://twitter.com/#!/nayutaya/status/106184829925732352

 連続7ツイート(笑)。再び@sa2daさんより返信を頂きました。

@nayutaya 2)の非公開な第二生成物は無く、N次創作まですべてオープン性を継承することを意図してCCライセンスを採用しました。

http://twitter.com/#!/sa2da/status/106184623704391681

@nayutaya ありがとうございます!クローズドに採用される場合は、別途ライセンスをご提供させて頂いております。大枠の意図はお伝えした通りで、後は専門的な皆様からのフィードバックを元に検討させて頂いております。

http://twitter.com/#!/sa2da/status/106185639950692352

そもそもCCライセンスとは何か?

 せっかくなので、CCライセンスについて再度勉強してみました。creative commons JAPANのページより引用します。

クリエイティブ・コモンズライセンスとは

クリエイティブ・コモンズとは、クリエイティブ・コモンズライセンス(CCライセンス)を提供している国際的非営利組織とそのプロジェクトの総称です。CCライセンスインターネット時代のための新しい著作権ルールの普及を目指し、様々な作品の作者が自ら「この条件を守れば私の作品を自由に使って良いですよ」という意思表示をするためのツールです。CCライセンスを利用することで、作者は著作権を保持したまま作品を自由に流通させることができ、受け手はライセンス条件の範囲内で再配布やリミックスなどをすることができます。

http://creativecommons.jp/licenses/

licensed under a Creative Commons 表示 2.1 日本 License.

そして徒然たるままに

 GeoHexのサイトや@sa2daさんのツイートを見る限り、現状ではGeoHexという発想(発明)と、その実装(表現)の両方に対してCCライセンス適用されていると認識しています。また、著作権などで保護される「表現」と、特許権などで保護される「発明」は別に考える必要がある、と思っています。

 それを踏まえて、思ったことを徒然たるままに。

 と、いろいろライセンスについて考えていたら、GeoHexとは異なるけれど、自分の用途に合いそうなジオコードを思い付いたので、思考停止(笑)。時間を作って実装しよう。

2011-08-23

「鉄道運行マップPLUS」をリリースしました

 こんにちは。那由多屋の加藤です。

 新しいAndroidアプリ鉄道運行マップPLUS」をリリースしました!

どんなアプリ

 Androidアプリ鉄道運行マップ」(無料)のプレミアム版です。「鉄道運行マップPLUS」はライセンス情報のみを含むため、別途「鉄道運行マップ」(無料、v0.0.7以降)が必要です。

 「鉄道運行マップPLUS」をインストールすると、下記の機能が有効になります。

  • ダッシュボードに登録できる路線が4件から20件に増加します。
  • 広告が表示されなくなります。

 その他、新機能を先行して提供する予定です。

どこからダウンロードできるの?

 Androidマーケットよりダウンロードできます。右記のQRコードからもアクセスできます。


スクリーンショット

f:id:nayutaya:20110823232730p:image:w200 f:id:nayutaya:20110823232731p:image:w200