そこら中の場所の「声」を聴けるアプリを開発してリリースしてみた話  【個人開発】

# 概要

![46375407_1033848343461051_7404743400370470912_o.jpg](https://qiita-image-store.s3.amazonaws.com/0/66341/eb4911eb-ad82-ec02-d24a-358931d5c4a7.jpeg)

昨年の9月に「Locavo」という「今いる場所の声を聴ける」をテーマにしたアプリを個人開発してリリースしました。
半年ほど運用をしてみて、自分自身で振り返ってみたかったということもあり、サービスの紹介や開発の経緯、開発内容を書いてみることにしました。個人開発をしている方や興味のある方の参考になれば幸いです。

# サービス紹介

「Locavo」は現在地の近くにある場所の「声」(≒音声ガイド)を聴くことができるアプリです。
(※Locavoは 「Location + Voice」の造語です)
2019年3月時点で、iOS向けにのみ公開しています。
[App Store ] (https://itunes.apple.com/jp/app/locavo-%E4%BB%8A%E3%81%84%E3%82%8B%E5%A0%B4%E6%89%80%E3%81%AE-%E3%81%93%E3%81%88-%E3%82%92%E8%81%9E%E3%81%8F%E3%82%A2%E3%83%97%E3%83%AA/id1434981240?ls=1&mt=8)

<img width="375" alt="iOS の画像.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/66341/d8cf0713-3c20-776c-7b48-d5d4687abc51.jpeg">

LocavoはGPSの位置情報から音声読み上げ可能な近くにある場所を特定して、音声でその場所について読み上げます。
(最近QRコードからの読み上げにも対応しました)
Locavoを立ち上げた状態で散歩をすると、今いる場所の音声が自動で流れてきます。ぶらり散歩中や見知らぬ土地を旅行している時に使えます。

詳しくは後述しますが、2019年3月時点で日本中の約7万個所以上のロケーション(観光地やレストラン、ランドマークなど)に対応しています。

また、先日声が聞こえる場所の「登録」機能をリリースし、誰でも好きな場所の音声を説明文と画像の投稿のみで行えるようになりました。
<img width="375" alt="iOS の画像 (1).jpg" src="https://qiita-image-store.s3.amazonaws.com/0/66341/3e5ddcc1-64e5-5f50-a195-9978ba8baea2.jpeg">

この機能を使うと、位置情報もしくはQRコードを使った音声ガイドを誰でもサクッと作れます。
![locavo_update-1024.png](https://qiita-image-store.s3.amazonaws.com/0/66341/11473732-cbba-7dd2-6907-45454ff54dd5.png)

一度声を聴いた場所は「ヒストリー」で振り返ることができます。
![history.jpg](https://qiita-image-store.s3.amazonaws.com/0/66341/47cdecea-dbe8-527c-c02b-c95487f0c5df.jpeg)

また、「トロフィー」と「ポイント」を用いたゲーミフィケーション要素も取り入れており、歩行距離や音声を聴いた回数によってアプリ内ポイントが加算されるようになっています。ポイントによってユーザ対抗の順位が決定します。
特定の場所の声を聴いたり、ある特定の条件をクリアするとトロフィを獲得できます。
![trophy.jpg](https://qiita-image-store.s3.amazonaws.com/0/66341/632d0a79-db23-a891-3ea2-056cf8a3d565.jpeg)

# 開発したきっかけ

そもそもの背景として、かれこれ５、６年ほど前から「音声」を活用したサービス開発に強い興味がありました。
学生時代は、Android用の音声アシスタントアプリをリリースして数年間運用していたりしました。
[おしゃべりアシスタント - Google Play](https://play.google.com/store/apps/details?id=com.droidchan&hl=ja)
今回も音声を活かしたサービスを作りたいと漠然と考えていました。

そんな中昨年、１ヶ月ほど特に何もせずにぶらぶら散歩ばかりをしていた時期があったのですが、よくわからない土地をひたすら歩き回っている際、ふと「今いる場所が勝手に自己紹介してきてくれたらいいな」と思ったのが今回のサービスの着想でした。
そこでプロトタイプを作り実際に音声を聴きながら歩いてみると、なかなかエキサイティングな散歩ができたので、思い切ってサービス化することにしました。

# サービスのビジョン
サービス化するにあたりビジョンを考えました。
このサービスで実現したいことは、
・音声による「お出かけ体験」のアップデート
にしました。歩きながら様々な場所の声を聴いて、新たな場所と"出会い"、散歩や旅行がより楽しい体験になることを目指します。

そういったビジョンから、まずは新しい場所と出会う機会を多くしたい観点から
**とにかく多くの場所の声を聴けるようにする**　ことにフォーカスしています。(コンテンツの質も重要ですが、まずは体験の数を増やしたいです)

また、既存のジャンルであれば「音声ガイド」という表現が一番近いのですが、「新しい場所との出会い」というニュアンスを出したいので、このアプリは「ガイド」アプリではなく「今いる場所の**声**を聴く」アプリという表現にしています。
(流れる音声は、その場所ごとの自己紹介)

理解のしやすさからアプリ内やストア文言にも「ガイド」という表現を使ってしまっていますが、今後うまく統一をしていきたいと思っています。

# これまでの流れ
・2018/9月着想
・2018/9月末 iOS版初リリース
・2018/10月 UI改善リリース
・2019/3月 ロケーション登録機能リリース

着想から１ヶ月程度で開発しリリースをしました。勢い余ってUIがcheapな感じのままリリースをしてしまったので、１ヶ月にUIを見直してアップデートをしました。
![before-after.jpg](https://qiita-image-store.s3.amazonaws.com/0/66341/0ceb0964-872a-ec52-b26a-de8d4c406d06.jpeg)

# 開発周りについて

アプリ
・Swift (iOSアプリ)
サーバサイド
・PHP (一部Kotlin導入中)
認証
・Firebase Authentication
外部ストレージ
・Firebase Storage
ホスティング
・Firebase Hosting
デザインツール
・Sketch
素材の多くは、[icon8](https://icons8.jp/)を利用させていただいてます
DB
・MySQL

## 位置情報とコンテンツ決定
位置情報(緯度・経度)はiOS SDKのCoreLocationを利用しています。
アプリ起動中10m移動するごとにサーバへ位置情報を送信し、音声コンテンツの位置情報をキャッシュしているDBと照らし合わせて一番近いロケーションを返しています。(1km以内にコンテンツが存在している場合のみ)

課題としては、
GPS(たまにWifi)を利用しているため、屋内だと精度が落ちます。また、位置情報が取得できた場合でも１F、2Fにコンテンツが重なっている場合などは判定ができません。
屋内もいずれ対応できたら良いと思っていますが、あらかじめビーコンを置いたり、地磁気を測ったり、Wifiを適切な場所に設定したりと、屋内の位置情報測位は技術的にもコスト的にもかなり導入ハードルが高いので、暫定対応として「QRコード」対応という案に落ち着いています。ほぼ活用されていないですが、Locavoアプリで読み取りが可能な「QRコード」をアプリ内で作成することができます。そのQRコードを掲示しておき、それを読み取ることで音声を聴くことができます。
![qr_capture.jpg](https://qiita-image-store.s3.amazonaws.com/0/66341/346899b2-e473-4f26-4c96-594444e120e2.jpeg)



## コンテンツの収集
先述したように、このコンテンツは音声を聴くことができる場所の数が重要なので、量を重視したコンテンツの収集に力を注いでいます。音声コンテンツは、その場所の情報の取得と長すぎない適度な文字数にするための抽出が必要です。

Locavoでは現在、下記の情報を利用させていただいています。
・Wikipedia
・[リクルートWebサービス](https://webservice.recruit.co.jp/hotpepper/reference.html)
・[Google Places API](https://developers.google.com/places/web-service/intro)
+ オリジナルコンテンツ

Wikipediaに関しては、[ダンプデータ](https://ja.wikipedia.org/wiki/Wikipedia:%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89)の緯度経度情報を用いて、コンテンツの対象を決めており、アプリ内では、記事内からの抜粋を情報元の明記+リンク導線の設置をした上で利用しています。

オリジナルコンテンツをユーザが投稿できる仕組みをリリースしたので、今後はそちらでもコンテンツを増やしていきたいです。

## 音声合成
このサービスにとって、「声」は非常に重要な要素ですが、現在アプリの声として利用している音声合成は、実装工数の兼ね合いもあり、iOS7から利用が可能な「[AVSpeechSynthesizer](https://developer.apple.com/documentation/avfoundation/avspeechsynthesizer)」を利用しています。
ちょっと機械的な印象が強いので、声は今後様々な音声合成を試していこうと思っています。

(アプリ開発で利用が可能な音声合成は、以前こちらでまとめています)
https://qiita.com/maKunugi/items/90cbefe97887470fb328


# 悩んでいること
## ユーザ投稿型コンテンツの扱い
そもそもユーザが少ないこともあり、現在は大きな悩みではないですが、ユーザ投稿のコンテンツは一応運営側で確認をすることにしています。(不適切な内容が投稿された場合、他のユーザにも表示をされてしまうため、ガイドラインを設けてそれに準拠した審査を行います。) 

現在は、ユーザが投稿 -> 運営(私)に自動通知 -> 運営(私)がチェック -> 運営(私)がDB更新
の運用になっており、利用ユーザを増やすことができたらもうちょっと工夫をしたいところです。

## 漢字の読み間違い問題
現在、様々な音声合成サービスが利用可能ですが、そのままテキストを音声にすると頻繁に感じの読み間違いが発生します。
愛嬌と捉えてくれる方もいますが、音声コンテンツの質として読み間違いはクリティカルなので、うまく対処をしていかなければいけません。

音声合成サービスの多くは、SSMLという音声合成用のマークアップ言語に対応をしているので、コンテンツのSSML対応をしていこうと思っています。

## マネタイズノープラン
マネタイズ案を考えずに発信したので現在赤字運営です。今は楽しさドリブンで動けてるので良いですが、今後マネタイズはちゃんと考えていきます。

#今後の展望
## ユーザ獲得 & 改善
まだまだユーザが少ないので、ASOも含めてユーザ獲得のための改善をしていきたいと思っています。
ASOを全く最適化できておらず、ほぼStoreからの自然流入が見込めていません。

## Android版リリース
iOS版でユーザ獲得と改善をある程度繰り返した後、Android版をリリースしようと思っています。
Androidアプリの方が開発は慣れているので、iOSよりはスムーズにいきそうです。

## インバウンド向け
できることなら海外版を作りたいです。

# まとめ
個人開発をしているLocavoというサービスに関する紹介でした。薄っぺらい内容になってしまいましたが、少しでも参考になることがあれば幸いです。利用している技術周りなど、別途深堀りたいと思っています。
Locavoは現在、App Storeからダウンロードが可能なので、興味のある方はぜひ使ってみていただけると嬉しいです！
[ストアページ] (https://itunes.apple.com/jp/app/locavo-%E4%BB%8A%E3%81%84%E3%82%8B%E5%A0%B4%E6%89%80%E3%81%AE-%E3%81%93%E3%81%88-%E3%82%92%E8%81%9E%E3%81%8F%E3%82%A2%E3%83%97%E3%83%AA/id1434981240?ls=1&mt=8)