記事一覧

寝たきりでもWEBサービスを作る気になればなんとか作れた

  • このエントリーをはてなブックマークに追加

ファイル 454-1.jpg

数年前から漠然とWEBサービスを作ってみたいなと思っていました。ただ、そのとき取り掛かっているソフトなどがあったり、開発にかかる手間、スキル不足を考えると、どうしてもやる気が起きませんでした。

ただ数ヶ月前、そのとき取り組んでいたことにも一段落がつき、無職な上に結構暇な状態になったので、「これは挑戦するには良い機会だ」と思いWEBサービスを作ろうと思い立ちました。


しかし作るにしても、自分は頚椎損傷(C4-C5)の後遺症で指が動かないので顔の動きでマウスカーソルを動かしソフトキーボードでの開発になるわけで。そうなってくると、なるべく効率的な言語・開発環境を整えないと、おそらく開発途中に挫折するのは目に見えているので、まずはプログラムの実行スピードとかは度外視で、とにかく少ない手間で動くものが書ける言語を選ぶことに。

とりあえず、個人のWEB開発でよく使われている軽量プログラミング言語といったらPerl、PHP、Python、Ruby。それぞれの言語に良いところはあるもののPerlは、ソースを見ても素人の自分には読みづらいので除外。PHPは、最もよく利用されていて参考資料は沢山あるものの、以前プログラムを作った時に、冗長な記述が多く(変数に$が必要など)、なるべくコード量を減らしたい自分にはイマイチ合わなかったので除外。

残るは、PythonとRuby。個人的には、どちらも甲乙つけがたかったのですが、Pythonは、まだまだ日本語の資料が少ないのと、Pythonで使うであろうフレームワークのDjangoを試しにインストールしてみようとしたところうまくいかなかったということから、結果Rubyで作ることにしました。

Rubyは、短い記述で動くコートが書けるし、日本人が開発したこともあって、日本語の資料がそれなりに豊富。また、Rubyと対をなす最も有名なフレームワークと言ったらRuby on Railsだと思うんですけど、これがまたコード量を減らすのに特化したようなフレームワークだったのと、日本語での書籍が多数出ているというのが選択する決め手になりました。
※言語についての感想は、効率重視で見た個人的な意見です。上に書いた言語の比較はPHP, Perl, Python, Ruby (Sheet One)が参考になります。


とりあえず、Ruby + Railsで開発することに決まったものの、Railsでの本格的な開発はしたことがなかったので、まず本を買って勉強することからスタートしました。

とりあえず以下の電子書籍を購入して案内に従ってサンプルアプリを作ってみるところからスタート。
はじめる! Rails3(1) - 達人出版会
はじめる! Rails3(2) - 達人出版会

Rails初心者が始めるには、とてもとっ付きやすく、わかりやすい本で導入本としてとても良かったです。

ただ、WEBサービスを作るためには、もう少し深く踏み込んだ書籍も欲しくなったので、以下の本も購入。
Ruby on Rails 3 アプリケーションプログラミング
Rails3レシピブック 190の技
RailsによるアジャイルWebアプリケーション開発 第4版
Ruby on Rails 3 アプリケーションプログラミング
Rails3レシピブック 190の技
RailsによるアジャイルWebアプリケーション開発 第4版 -->

これも、サンプルプログラムを動かしながら読み進めました。ただ、こちらは紙媒体のリアル本。僕の残念な指では、ページめくりにとても難儀しました。また、後から調べ物をするにも、[人に本棚から本を取ってもらって書見台に乗せてもらう]→[5分から10分かけて見たいページにたどり着く]というとても面倒くさい作業が必要だったので、とても非効率。だもので、すべての本をブックスキャン代行業者に頼んで、すべて電子化してもらうことにしました。ちょっともったいなかったですが、これにより調べ物をする効率が大幅にアップ。
※後から知ったのですが、上の本のうちのいくつかは出版元から既に電子化されているのもありました。電子化が必要な場合は、まずは、出版元で電子化されているものがないか先に調べた方が余計な金を使わずに済みます。詳しくは技術系書籍の電子版出版サイトのまとめにて。


本を電子化したことにより楽に本が読めるようになって学習がとてもスムーズになりました。ただ、いくら本を読んでも、実際に自分で考えたものを、あれこれ試行錯誤しながら作らないと、ほとんど身に付きません。自分の場合、実践が伴わないと前日読んだことすら忘れるレベル。

なので、いよいよ勉強がてら実際のWEBサービスを作ってみることに。そこで一番の問題になるが「どのようなサービスを作るか?」なのですが、先程書いた書籍をスキャン代行業者に頼んで電子化してもらうときに、一冊の値段やオプションをいろいろなスキャン業者のホームページを見比べながら選択するのが非常に面倒くさかったことから、その不満を解消できるサービスが作れたらと考え、スキャン代行業者の価格比較サイトを作ってみることにしました。

しかし、スキャン代行業者といえば、作家から著作権侵害だとして一部事業の差し止めを求める提訴(ニュース記事)されている分野でもあり先行きは不透明です。ただ、そんな分野だからこそ自分がこれから、ちまちま学習がてらに時間をかけて作っても、他の人は敬遠してサービスがかぶらないかなと思って作ることに。もし今後、ダメになるようならRailsの良い勉強になったと割り切って、潰すまでです。


それから作り始めてから2~3ヶ月、いろいろ試行錯誤しながらも小規模ではありますが、何とか大まかにWEBサービスらしいものが作れました。


さて、いよいよサイトもほぼ完成して、そこで必要となってくるのが公開するサーバーです。Railsを動かす環境といえばVPSということは、何処かで目にして何となく知っていたのでVPSを使用することに(※)。ただ、ここで大きな問題が発生。このとき初めてVPSについて詳しく調べてみたのですが、全く意味がわからない。僕個人の勘違いでVPSとはレンタルサーバーに少し毛が生えたぐらいの難しさで、とりあえずグーグル先生に聞きながらやれば何とかなるだろうくらいの認識でした。
※他の選択肢としてHerokuという手もある。デフォルトでMySQL使えないけど。今後期待のサービスとしてはMOGOKというものもある。

ところが実際、やるとなるとLiunxの知識は必須で、それに加えApacheの知識、RubyやRailsやMySQL等を1からインストールして設定しなければならず、その上セキュリティーの事も考えなければなりませんでした。実際自分でもやってみようといろんなWEBサイトの記事を読んだのですが、初めてLinuxをさわる自分には、ちんぷんかんぷんでお手上げ状態。どうしようもなかったので、学生時代のパソコンに詳しい友人に相談することに。

友人は、さすがは今も現役のプログラマで元パソコン部、いろいろと教えてくれ、VMware Playerを利用しCentOSをインストールしてくれ仮想スペースに開発環境を作成してくれました。僕もアプリをその仮想CentOS環境で開発することにより、本当に少しずつですがLinuxでの操作手順を学びました。この仮想CentOS環境での開発は、とても勉強になった上にRails開発が非常にスムーズになり、ようやくアプリは完成。


そして、本番環境となる「さくらのVPS 1G」と契約して、各種設定を実行しました。ここでの設定は、ほとんどを友人がやってくれました。多分友人がいなかったら作ったものが公開できなかったか、公開できたとしても、さらに数ヶ月も先になっていたことでしょう。マジ感謝です。なにはともあれ、1人で作るつもりが、人の手を借りることにはなりましたが何とか小規模ながらWEBサービスをネットに公開することができました。それが以下のサービス。


ScanStation
ブックスキャン代行業者の価格比較サイト。本の冊数、オプションなど目的に合ったものを選択して価格を比較できます。

つまみでページ数を選択して検索すれば、

その本のスキャン代金が表示されます。オプションを選択すれば、オプション料込みで計算されます。


何冊もまとめて計算したい時は、「まとめて計算」から申し込みたい冊数とオプションを入力して検索すれば、

すべての本のスキャン代金が表示されます。


以下は作るのに利用したものいろいろ。

[使用言語・環境・スクリプト]
Ruby
Ruby on Rails 3系
MySQL
jQuery
SCSS
selectToUISlider - スライダー
jQuery Collapse - FAQの折り畳み

[使用機器]
SmartNav 4AT
完全ハンズフリー代替えマウス。通常のマウスでカーソルを動かせないので代わりに使用。
ケンジントン ExpertMouse
ケンジントントラックボール。ボタンが大きいので、指以外の箇所でも押せるため使用。

[使用ソフト]
Trail Soft KeyboardTrail Soft Keyboard
軽快に動くソフトキーボード。マクロが登録できるので、Railsのコマンドを入力しておけば、面倒くさいコマンド操作もボタン1発で入力できる。
EmEditor Professional
Windows用テキストエディタ。プラグインに単語補完機能(数文字入力しただけで長い文字列を補完してくれる機能)、スニペット機能(数文字入力しただけで登録された雛形を挿入してくれる機能)、Zen Coding(HTMLやCSSなど、少ないコマンド入力でタグやスタイルを挿入してくれる機能)などを駆使すれば、少ないキー入力で大量のコードを生成できる。
VMware Player
今回途中から初めて使用。仮想環境上にCentOSを入れてRailsの開発環境にすることにより、開発効率が格段にアップ。Windows上でRails開発の効率の悪さを実感。
WinSCP
SSH (Secure Shell)を使用してファイルを転送するプログラムです。仮想サーバに繋いだり、本番サービスにファイルを転送するのに使用。
TeraTerm
ターミナルエミュレータ。これでサーバーをコマンド操作する。
ButtonMaker
サイトのファビコンやボタン作成はこれ。ツマミを、うにょうにょ動かしていれば、それなりのものが作れる。

[利用サービス(サーバ)]
さくらのVPS 1G
友人に相談したら、Railsは結構メモリを使うそうで、余裕をもってメモリ1GBのプランに申し込み。さくらにしたのは、評判が良さそうだったのと同じスペックのサービスでは最も安かったので。
バリュードメイン
1年950円と安かったので、ドメイン1年分を購入。

[WEBサービス]
Supalogo
文字に縁を付けたりグラデーションやストライプを加えることで簡単にロゴの作成ができるジェナレーター。サイトロゴの作成に使用。
Twitter
ユーザーの認証に使用。
Facebook
ユーザーの認証に使用。
DISQUS
コメント機能に利用。

なるべく楽ができるように、フリーで使えるものは、なるべく使用して手間を削減しました。


とりあえず、WEBサービスを公開する過程に当たって、最も苦労した事はサーバーの設定です。Railsでの開発も初めてで大変は大変だったんですが、Linuxは完全に未知との遭遇で「SELinuxってなに?」「viはなんでカーソールキーで下に行かないんだよ!使いずれぇ!」レベルだったので本来なら1月末におおよそのアプリは完成されていたんですが、結局2ヶ月近くLinuxと格闘するはめに。

ただ、こんなことでもない限り、Linuxを使うことはなかったので、さわりだけとはいえ、Linuxをある程度理解できた事は大きな収穫でした。あと、最初からVPSの設定がこんなに面倒くさいと知っていたらRailsでWEBアプリなんぞ作ろうとは思わなかったと思うので、VPSに対する無知は結果オーライだったということにしたいと思います。


【今回WEBサービスを作ってみて思った感想まとめ】
#Ruby手軽で楽しい
#Railsは、最初規約とか作法的なものを覚えるのに手間取るけど、覚えると最低限のコードで思ったものを作れる
#Rails、データベースのクエリを細かいところまで書かなくていいので楽
#大抵の取りつけたい機能はRailsにプラグインとしてある
#Railsのキャッシュ機能便利
#Rails、マイナーバージョンを変更しただけで動かなくなって驚く
#Windowsと比較してLinux上でRailsコマンド実行が早くてビックリ
#VPS、素人には難しい、なめてた
#さくらとVPS契約した3日後に、さくらVPSがリニューアルで価格改定。新プランは、スペックが大幅に上がる上に価格も安い。正直、、くっ、くやしい…。

タグ:Ruby Rails Webサービス プログラム

  • このエントリーをはてなブックマークに追加

スポンサーリンク
 

トラックバック一覧

コメント一覧

いずみ URL 2012年03月27日(火)18時18分 編集・削除

うわぁー、めっちゃすごいです!!

実は私もiPhoneアプリを作りたくてC言語を勉強しています!
なにせ私はプログラミング自体が初めてなので、yhiraさんのように難易度なんて考えずに挑戦しようとしています(^◇^;)
きっと無謀なんでしょうね~

いやぁ~うらやましい!!

yhira URL 2012年03月27日(火)19時19分 編集・削除

ありがとうございます。
正直、需要がどれほどあるのかも考えずに作ってしまいました;

無謀なんてことはないですよ!
プログラムやりたてのときははとりあえず、どんなものでもいいので、何か一つ自分の考えたものを形にして作ることにつきると思います。
僕の初作品はものすごくショボかったですけど、作ったときの達成感ったらもう。
いずみさんのアプリ楽しみにしてます。かなりマジで!^^
でも、自分iPhoneないから使えんのか。無念。。