新しいナリッジをお届けしたい

marosf
Kindleで読書をしている人にオススメのアプリ!

年内に何でもいいからアウトプットできるものを作ってみたいということで先日Kindle Loves TweetというWEBアプリをリリースしました。アプリの紹介はこちら。
WEBアプリと言っても大したものではないのですが、Kindle(キンドル)という電子書籍で、気になった文章をインターネットに保存できたり編集できたりするアプリです。
今回の記事では、作ってみた感想とか反省とかを復習がてら書いてみます。

アプリを作ろうと思ったきっかけ

 プライベートでWEBサービスとかアプリとか使っていると、「こういう機能がほしい」とか「アイディアはいいのに何でこんなに使いにくいんだよー」とか不満に思うことがよくありました。けど、自分で作ったことがないくせに文句ばっかり言うのはカッコ悪いよなぁということがキッカケです。
 仕事ではWEB系はほとんど触れる機会がなく、httpメソッドのGetとPostの違いすらよく分からないレベルでしたので、まず仕組みから勉強しようとワクワクしながら本を買ったのが遠い昔のように感じます。

開発環境について

 アプリを公開するためのプラットフォームとしてGoogle App Engine SDK for Python(以下GAE/Py)を選びました。GAE/Pyを選んだ理由は、仕事でPythonを使ったことがあったからということと、無料枠があったということです。
 最初は、このブログを書いていて課金もしているレンタルサーバ(エックスサーバ)に環境を構築しようと、SSHで接続してPython入れたりDjango入れたりゴニョゴニョしてたんですけど、全然やりたいことができない。AWSのEC2みたいな自由なIaaSじゃないから、何かをインストールするだけでもめちゃくちゃ大変で、プログラム書く所まで到達できませんでした(ここで2ヶ月ぐらい無駄にして挫折しそうになりました)。
 その後、仕方なしにGAE/Pyを使ってみたら拍子抜けするほど簡単でした。GAE_PyはPaaSなので、EC2のようなIaaSほど自由さはなく独自のルールとかも設定されていますが、WEBサービスを公開することが目的で得意言語のPaaSがあるならこっちの方が絶対ラクだと思います。

参考にしたもの

 GAE/Pyの参考情報はほとんどインターネットを参考に、WEBアプリの基本的なこととかは主に本を参考にしました。


最初に読んだのはこれ。モチベーションを上げるための読み物として面白かったです。


これでWEBとは何かを学びました。初学者にはとてもわかり易くて良かったです。


これもWEBの基礎知識を学ぶためには最適です。これでGETとPOSTの違いを学びました。


HTMLを初めて学ぶなら絶対これをオススメします。めちゃくちゃ分かりやすいです。


HTMLの次はJavaScriptですね。この本ではJavaScriptというよりはjQueryとかnode.jsとかJavaScript関連の基礎知識を学ぶのに良かったです。


WEBサービスの定番jQueryです。jQueryを初めて学ぶなら迷わずこの本をオススメします。


スマホ対応させるためにはレスポンシブにしないといけないでしょう。この本の言うとおりにすれば簡単にレスポンシブサイトを作ることができました。


これは古本屋さんで見つけたので書いましたが、基本的にインターネットで情報を得ていましたので別にいらなかったかなと思っています(笑)。概要を読んでGAEで何ができるかをざっくり把握するのに使いました。ただ、バージョンが古い内容なので使えないものもあります。

技術的に苦労した点

1.プログレスバーと非同期処理
 どれぐらい処理が進んでいるかを見える化してくれる定番のプログレスバーなのですが、これの作り方が全然分かりませんでした。サーバからクライアントに今処理がどこを走っているかを教えてあげればいいのだと思うのですが、結局いまだにわかっていません。誰か教えてください(笑)。
 一応、プログレスバーを実装しているのですが、処理1個につき5秒かかるから画面ではその秒数分のプログレスバーを表示し、その間にサーバ側でGAEのTaskQueueというものを使って非同期処理を行わせる、という苦し紛れの手段を取りました。

2.ローカルストレージ
 今流行りのHTML5を使ってやろうということで、ローカルストレージを使おうと思っていました。が、ローカルに保存しておくべきデータが分からず使っていません。誰か使い道を教えてください。

3.正規表現
 WEBの情報を取ってくるときに正規表現は避けては通れないでしょう。初学者の私は結構苦労しました。けど、欲しいデータを綺麗にとってこれたときは本当に気持ちよかったですね。

4.画面(jQuery)からDBを触る
 画面から直接GAEのDBを参照したいけど無理だよなぁと半ばあきらめていたのですが、jQueryでDBを触れるgaedirectには感動しました。

やってみて分かったこと

1.そう簡単にアプリを使ってくれる人なんか見つからない
 最初は、「使う人が多すぎてGAEの使用料とか取られたらどうしよう(汗)」という無駄な悩みをしていました。リリースして2ヶ月ぐらい経ちますが未だにこのアプリの利用者は自分ひとりだけです。原因はアプリの認知不足なのか、使い勝手がよくないのか、そもそもこんなアプリ必要ないのかわかっていませんが、とりあえず自分が満足してるからいいやと自分を慰めています。

2.手を動かすことが一番の勉強
 アプリの作り方を学ぶために、インターネットを見たり、本を買って読んだりしていましたが、やっぱり一番勉強になるのは手を動かすことでした。できないことをできるようにするために必死に調べているときが一番多くのことを学んでいる気がします。

3.モチベーション維持のために自分が欲しいモノを作る
 手を動かすといっても参考書を買って練習問題をひたすらやるとかだとモチベーションが上がりません。最初、私は作りたいものが見つからず、アプリの作り方を学ぼうという意欲が湧いてきませんでした。そんな時に、たまたまKindleを使って本を読むようになって、「もっとこういう機能があったらいいのに」と思えたことが良い方向に向いてくれました。自分が欲しいと思うものを決められたことがモチベーションの維持にうまく働いてくれたと思っています。
作りたいものが見つからないという人は、ぜひこの本を読んでみてください。

今後について

次回作として今回作ったアプリのiOS版を作ってみようかなと思っています。
今回の反省点として、完成するまでアウトプットを一切しなかったことが挙げられます。
GAEを使って開発していて詰まった所が数え切れないほどあったのですが、書くのがめんどくさくてブログに残すということをしませんでした。今からやろうと思っても忘れてしまって書けないのは本当にもったいないなぁと後悔しています。
次はちゃんとブログに残していきます。


コメント