上京した私を支える or 支えそうなテクノロジ3選

# 今日は「遠距離恋愛の日」なのだそうです。

[今日は何の日](http://www.nnh.to/12/21.html)によると……

>FM長野の大岩堅一アナウンサーが提唱。
「1221」の両側の1が1人を、中の2が近附いた2人を表す。
遠距離恋愛中の恋人同士が、クリスマス前に会ってお互いの愛を確かめあう日。

とのこと。うん、会えるなら何も苦労しない。
そんなわけで、今日は**（地元を離れて知らない街へ来た）私を支える or 支えそうなテクノロジ**について、まとめてみようと思います（唐突）。
今回は、読み物、駄文です。若干、アプリまとめみたいになっていますが、みなさんも知らない街へ引っ越した時にも、もしかしたら参考になるのでは？（今後も気づいた時には追加していきますね）

# あくまで序章
北海道出身の私ですが、巷では、北海道を出ることを「脱北」というそうですよ（[脱北後の生活について](http://takuan-oishii.hatenablog.com/entry/2015/12/12/225217)）。それがどういうことかというと、とにかく、100均の場所わからない、寂しい、ご飯どうしたら良いの、みたいなところから始まるわけです。

# 100均の場所がわからないなら
100均を探すなら「100均マップ」です。日本のみならず、世界中の100均を探すことができます！
100均の場所にピンが刺さるアニメーションも、コミカルで面白いとおもいます。
AppStore
https://itunes.apple.com/jp/app/100junmappu/id432466100?mt=8
Google Play
https://play.google.com/store/apps/details?id=jp.d_advantage.hyakkinmap&hl=ja

## 地図といえばGoogle Maps API
ところで、地図を表示するのには[Google Maps API](https://developers.google.com/maps/)が使われているようですね。Google Maps APIといえば最近、実装で非常にお世話になったのが[Geocoding API](https://developers.google.com/maps/documentation/geocoding/intro)。Geocoding APIでは、住所から位置情報に一発変換してくれちゃいます。

## 住所から位置情報へ一発変換
JavaScriptでの実装例はコチラ（[Google](https://developers.google.com/maps/documentation/javascript/examples/geocoding-simple)）を参考にしていただけたらと思います。

**さて、生活が安定してくると、いよいよ寂しくなってきます。**

# 遠く離れた人とコミュニケーションを取るなら
LINEやSkypeなどのおかげもあって、*科学進歩で会わなくたってお話できる便利な世の中*（from [ノーポイッ！](https://www.google.co.jp/?gfe_rd=cr&ei=y-p3VpjiK8v98wel5774Bg#q=%E3%83%8E%E3%83%BC%E3%83%9D%E3%82%A4%E3%83%83%EF%BC%81)）になりました。しかしながら、仮にこれを読んでいるあなたが遠距離恋愛中だとしたら、寂しいのになかなかできない会話というか、なかなか普段は話題に上がらないこそばゆいお話もあるはずです……。

## そんな二人にCouples
遠距離恋愛をする友人からよく話題あがってくる話題のアプリ。友人によれば、「ふたりのQ&A」機能がおもしろいのだとか。お互いの意見が一致するところや、ずれているところも丸見えになるそうです。（自分では使っていない。でも使ってみたい）
AppStore
https://itunes.apple.com/jp/app/kappuru-zhuan-yongapuricouples/id852749768?mt=8
Google Play
https://play.google.com/store/apps/details?id=jp.eure.couples&hl=ja

## Q&AといえばELIZA
そういえば、iPhoneのSiriとかでたまに出てくる「**ELIZA（イライザ）**」っていますよね。このイライザさんは、質問応答システムのはしりのようなシステムです（[ELIZA - Wikipedia](https://ja.wikipedia.org/wiki/ELIZA)）。
簡単に言うと、ユーザが入力した文章の一部を疑問形に入れ替えるなどして、会話が成り立っているように感じさせているんだそうです。

これを**人工無能**と呼んでいて、[Wikipedia](https://ja.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E7%84%A1%E8%84%B3)によれば、その仕組みについて、
> 人間が "I am feeling very worried lately,"（私は最近とても心配だ）と入力したとき、会話ボットは "I am" というフレーズを認識し、そこを "Why are you" に置き換えて最後に疑問符をつけ "Why are you feeling very worried lately?"（なぜあなたは最近とても心配だと感じているのか）と応答する

と解説しています。うまい仕組みですよね！
これも、英語のようにスペースで単語を分かち書きする言語だったからできたわけですけれども。
日本語のような分かち書きしない言語だと、また形態素解析が非常に重要になってきます。

ところで、**誤って上でノーポイッ！を聞いちゃった人がいれば、ちょっとだけカフェも気になってくる**のでは？（「ごちうさ」はカフェのお話ですから。）

# 心安らぐカフェを探すなら
更に生活が安定してくると、付近のお店のこともよくわかってきて、休日を充実させたいな、都会の喧騒から離れてゆったりしたいな、なんて思い始めるわけです。そんなあなたに、カフェ好きが使っているアプリを紹介。CafeSnapです。
AppStore
https://itunes.apple.com/jp/app/cafesnap/id910848942
Google Play
https://play.google.com/store/apps/details?id=jp.co.allabout.cafesnap

休日にカフェで写真を撮ったら、CafeSnapで掲載しているお店だったら、ぜひ投稿してみてはいかがでしょうか！

## 寂しい私にかまってと通知（Notification）を表示する実装

個人的な話になりますが、**AlarmManager**の使い方が最近になってわかってきました。
通知するために設定したAlarmManagerのキャンセル方法で苦戦したのです。
簡単に言うと、alarmManagerにsetRepeatしたアラームのキャンセル方法を、

```java:変更前
// 通知をキャンセル
Intent receiverIntent = new Intent(context, MyBroadcastReceiver.class);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent oldIntent = PendingIntent.getService(context, 0, receiverIntent, 0);
alarmManager.cancel(oldIntent);
```

こんな感じで実装していたんですけど、これだと完全にはキャンセルできないんですね。
PendingIntentもキャンセルしないと完全にはキャンセルできないようなんです。

```java:変更後
// 通知をキャンセル
Intent receiverIntent = new Intent(context, MyBroadcastReceiver.class);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent oldIntent = PendingIntent.getService(context, 0, receiverIntent, 0);
alarmManager.cancel(oldIntent);
oldIntent.cancel();   // PendingIntentもキャンセルする必要があった！
```

こんな感じですね。通知が何度も届いちゃったりして、大変困りました。
そのうえ、このキャンセル方法にもいろいろあったり、そもそもAlarmManagerの取得方法が違ったりと、このAlarm周りで最近苦戦したところがありましたので、後日投稿しようと思います。

## おわりに……

これで、あなたも新しい街に行ったとしても、安心の生活です。
仮に遠距離恋愛していたとしても！きっと、心安らぐ毎日が過ごせることでしょう。
うーむ、クリスマスイブまであと3日！みなさんは、どのように過ごしますか？