踊る犬.netブログ (旧)

ノートアプリ「Inkdrop」のスマホ版を考える

これは拙作のハッカー向けノートアプリ Inkdropに関する記事です。

そろそろスマホ版が欲しい。
寝る前とか出先でアイデアを思いついた時やメモを見返したい時に、やっぱりあると便利ですよね。
というわけで、どうやって作るか検討したいと思います。

ハイブリッドで作ってみる

結論から言うとハイブリッドで組んでみたいと思います。
ハイブリッドとは、Webの技術とネイティブの技術を組み合わせてアプリをつくる方法です。
デスクトップ版InkdropもElectronで作ってあるのでハイブリッドですね。

ハイブリッドアプリって詳しい人は分かると思いますが、主に以下のデメリットが挙げられます。

  1. パフォーマンスが悪い(起動が遅い、ヌルヌル感、サクサク感に欠ける)
  2. 複雑なUIのアニメーションは厳しい

それでもなお、なぜハイブリッドにしようかというと主に理由は2つです。

既存コードが再利用できる

まず1つ目に、デスクトップ版のコードの一部が再利用できるので開発効率が良さそうという点です。
一人で作っているので、開発効率は重要課題です。
特にエディタとかネイティブで組むとすごく大変そうだし、ちょっと探してみたけどあんまりいいOSSコンポーネントが見つかりませんでした。
複雑な同期アルゴリズムのコードがそのまま使えるかもしれないのも大きな利点ですね。

クオリティは最上級じゃなくてもいい

2つ目は、そこまでクオリティにこだわらなくてもいいのではないか、という点です。
というのも、メインで使うのはあくまでデスクトップ版であって、スマホ版の利用頻度はほんとに「たまに」だからです。
例えばEvernoteのスマホ版は重宝してますが、利用頻度でいったら3日〜1週間に一度開くかどうかぐらいです。
しかも利用時間も短い。ちょっと確認するだけとか、ちょっとメモするだけとかです。

スマホがメインのアプリならクオリティにこだわるべきですが、このようにサブの位置づけでコストをかけるのは少し無駄でしょう。

iOSとAndroidに一度に対応できる

多くのハイブリッドアプリ用フレームワークはマルチプラットフォームのビルドに対応しています。
個人的にはiOSで充分なんですが、Androidもついでに対応してしまえばユーザの裾野も広げられるでしょう。
デスクトップ版でも既にWindowsユーザが数割いますし。

Cordova + Onsen UIがよさげ

今ちょうど別件でハイブリッドアプリを作っているのでいい経験になっています。
それはCordovaOnsen UIで組んでいるんですが、結構いい感じ!
Cordovaはハイブリッドアプリを組むためのフレームワークです。
Onsen UIはLook & Feelをプラットフォームによって自動で切り替えてくれるので、簡単なアプリならUIを組むのにプラットフォームの違いを意識する必要がほぼありません。
しかもReact版が公式で対応しているのも熱い。これならUIの既存コードも使いまわしやすそうです。
最近はホント良いフレームワークが出揃っていますね。ありがたい。

自分はiOSとAndroidの両方のネイティブ開発経験があるので、必要になればCordovaプラグイン(ネイティブ拡張)も適宜組むことができます。
この構成なら2,3人月ぐらいで作れそうな感じ。

落ち着いたら取り掛かろう。