プログラミング初心者がWebサービスを開発してみた!
タイトルにも書きましたが、私はプログラミング初心者です。
今年の8月からプログラミングの勉強を開始したので、ほぼプログラミング素人と同然です。
そんな私が今年の8月と9月の2ヶ月間でプログラミングの勉強を独学で行い、10月に三週間弱でオリジナルのWebサービスを作りました。
なので、勉強にかかった期間と開発にかかった期間の合計が約3ヶ月です!
技術的にまだまだめちゃくちゃ未熟なので、色々間違い等あると思いますが、取り敢えず記念として書き連ねていきます!
もし間違いやアドバイス等があれば、是非コメントで教えて下さい。
素人の私が作ったWebサービスの名は『ショートショート』
まず色々話す前に、成果物を見せたいと思います。
作ったWebサービスの名前は『ショートショート』といいます。
Webサービスの内容としては、作家ではない一般の人がショートショートを投稿したり、またそれを自由に読んだりできるサイトです!
(ちなみにショートショートとは、超短編小説のことで、星新一さんがショートショート作家としては有名です。短いものだと文庫本2ページぐらい、長いものでも文庫本20ページぐらいです。)
私はショートショートを読むのが好きで、色々な人のショートショートを読んでみたいと思ったのがこのWebサービスを作ったきっかけです。
また、自分自身ショートショートを書いて発表してみたいという思いもありました。笑
そんな思いから作ったオリジナルなWebサービスの『ショートショート』がこちらです!
せっかくなので投稿されているショートショートを1つぐらい読んでみてもらえると嬉しいです!笑
見たらわかると思いますが、世に出すWebサービスとしては、まだめちゃくちゃクオリティーは低いです!笑
デザインは特にひどいですよね。笑
一応多少レスポシブなデザインにはなっていますが、上部のメニューやサイトの色などのデザインはまだ調整中です。笑
また、機能もかなり少なく、今現在(10月末)までに実装した機能は、ユーザー登録関連の機能、投稿、ランキング、いいね、フォローぐらいです。
ですが、一応どうにか最低限は形になった(はず?)ので、まだまだ実装すべき機能等は多く残っていますが、取り敢えず公開しました。
デザインの改良や、他の機能の追加については追々やっていきたいと思っています。
というより、現在進行形で、毎日何らかの変化を加えています。
Webサービスはオープンしてからが勝負だ、というのをどこかで見た気がするので、今後も頑張って改善していきます!笑
もし小説を読むのが好きな人がいれば、是非使ってみてください!
また、もし周りに小説書くのが好きな人がいれば、このWebサービスを是非紹介していただけると助かります!笑
(ごめんなさい、宣伝です。笑)
初めてのWebサービスに使ったのはRuby on Rails
宣伝はここまでにして、ここからはプログラミングについての話をしていきたいと思います。
私はとにかく早く形にしたかったので、プログラミング言語を選ぶ際には、最も効率的にWebサービスを作ることのできる言語を選ぶことにしました。
色々調べてみたところ、WebサービスやWebアプリケーションを作るのには、PHPやRubyやPythonなどかあることが分かりました。
それぞれの言語にWebアプリケーションを効率よく開発するためのフレームワークがあるので、どれを選んでも問題はなさそうでしたが、
①Rubyは日本人の方が開発した言語なので日本語の情報が豊富なこと
②RubyでWebサービスを作る際によく使われるRuby on Railsというフレームワークの評判が非常に高いこと。
この二点から私はRuby(Ruby on Rails)を選ぶことにしました。
勉強を開始して3ヶ月経って思うのは、Ruby on Railsを選んで本当に良かったということです。
もしかしたら他の言語でもそんなに変わらなかったかもしれませんが、とにかく私の場合はRailsを選んだことにより3ヶ月という比較的短い期間でWebサービスを形にすることができました。
他のフレームワークを使っていないので比較することはできませんが、Railsを使えば本当に効率よく、素早く(最低限の)Webサービスは作れます。
とにかくまず勉強とか今後のこととかは置いておいて手っ取り早くWebサービスを開発してみたいという人はRuby on Railsは非常にオススメです!
また、Ruby on Railsを選んで良かったと思う最も大きな理由はRailsチュートリアルの存在です!
Railsチュートリアルには本当に感謝しかありません!!!!!
勉強する際にはもちろん使いましたし、実際にショートショートを開発する際にもチュートリアルを参考にしました。
個人で開発するWebサービスだからといって、セキュリティに問題があっては絶対に駄目だと思うのですが、
Railsチュートリアルではセキュリティのことについても詳しく書かれています。これは本当に参考になりました。
また、こんなに素晴らしいチュートリアルが無料というのも本当に有り難かったですし、さらにそれを日本語で読めるというのは感動すら覚えました。
Railsチュートリアルの作成者、そしてそのチュートリアルを日本語に訳してくださっている方々、本当に本当に有難うございます!
初めてWebサービスを作るにあたって、もちろんRailsチュートリアル以外にも色々参考になった本やサイトがあります。
私は独学で勉強をしたのですが、その勉強方法や使ったサイト、本などは機会があればまた別の記事で詳しく紹介したい思います。
ちなみにプログラミングの独学の際に使った主要なものを簡単に挙げると
・ProgateのRailsの部分
・『Ruby on Rails5 超入門』という本
・『Ruby on Rails5 アプリケーションプログラミング』という本
・Railsチュートリアル
これら4つを勉強段階では主に使用しました。
また、実際に開発していく段階では、これらの他にも非常に多くのwebサイトなどを参考にさせて頂きました。
これらについての詳しいことは別の機会に書いていきます。
とにかく、Ruby on Railsであれば独学でもどうにかWebサービスを作りきることができました。
PHPにはLaravelやCakePHP、PythonにはDjango、そしてRubyにはRailsやSinatraなどのフレームワークがあります。
どの言語を使うにしても、取り敢えずオリジナルなWebサービスを個人で素早く開発したいのであれば上記のフレームワークを使うのは非常に有効だと思います。
しかし、その一方、私は3ヶ月弱こうやってプログラミングを独学しましたが、プログラミングを理解できたかと言われれば、まだまだ理解できたというには程遠い状況です。
"Ruby on Railsというフレームワークを使ったWebサービスの作り方"は理解できましたが、Rubyという言語そのものの勉強はほとんどしておらず、Ruby on Railsを使わないで何か開発しろと言われたら多分にっちもさっちもいきません。
なので、今後はRuby on RailsでのWebサービスの開発を続けつつ、同時にちゃんとRubyの勉強もしていきたいと思います。
しかし、裏を返せばRubyの勉強をほとんどしなくてもRuby on Railsを必死に勉強してそれを使えばどうにかWebサービスは
作れてしまいます。
Ruby on Railsって改めてすごいな、と思いました!笑
でも今後はちゃんとRubyも勉強していきます!
開発環境とか本番環境とか
プログラミング言語に関する話はここまでにして、次はどのように開発を進めていったかについて話していきます。
開発する際にはcloud9を使用しました。
cloud9を使えば、RubyやRailsのインストールなどの開発環境の構築は必要ありません。
面倒臭いセットアップ等が一切なしで開発を進めていくことができるのでかなりありがたいです。
そして、これまた無料です!
ただ、無料だとプライベート(非公開)なプロジェクトは1つだけのようです。
2つ以上のプロジェクト(Webサービス)を非公開の設定にするには若干お金がかかるみたいです。
ちなみに、Railsチュートリアルでもcloud9を使うことが推奨されていました。
インターネットにつながる環境とブラウザさえあれば開発ができるのは、初心者にとっては強い味方となりました。
多分、今後もcloud9を使って開発を進めていくと思います。
また本番環境のサーバー等ですが、本番環境にはHerokuを使いました。
Herokuを使えば、サーバー関連の面倒な作業はほとんど必要ありませんでした。
最初はAWS(Amazon Web Service)を使おうか、それとももっと安価なVPSを借りて頑張ろうか迷いましたが、手間をそこまでかけたくなかったのでHerokuを使いました。
値段としては、1ヶ月に700円です。
SSLも追加料金なしで使えます。もちろん独自ドメインも設定できました。
(Herokuは無料でもありますが、私はSSL化したかった+諸々の制限を受けたくなかったので700円払いました。)
また、データベースはHeroku Postgresを使っています。
Herokuだと、色々なものがアドオンとして準備されており、手軽に色々な機能を追加していくことができます。
メールはSendgridというものを使っているのですが、これもHerokuだとほぼワンクリックで利用を開始できます。
ちなみに、Sendgridは1日400通までは無料で使えます。
私の開発したWebサービスでは、ユーザー登録の際にメールアドレスの認証でメールの送信を行います。
1日に400人もの人が登録することは当分考えられないので、メールに関しては当分の間無料でいけそうです!
また、Herokuは簡単にスケールアウトできます。
ユーザー数やアクセスが多くなったら、追加料金を払うことで一瞬でサーバーの増強等ができるようです。
当分はそんな必要は全くなさそうですし、もしかしたら永久にそんな必要はないかもしれませんが。笑
また、データベースであるHeroku Postgresは10,000行までは無料で使えます。
ユーザーが登録したり投稿したりいいねしたりすると1行消費されるので、これまた当分は無料で使えそうです。
もし足りなくなった場合は、月に900円(正確には9ドル)を払うことで、1000万行まで使えるようになります。
1000万ってすごい数字ですよね。笑 想像がつかない。
取り敢えず、開発環境や本番環境についてはこんな感じです。
私のように、取り敢えずWebサービスを開発して、手間なく公開したいよという人にはcloud9とHerokuの組み合わせがおすすめです!
ただ、これだとサーバー周りの技術は全くと言っていいほど身につきません。
面倒くさいことは全てcloud9とHerokuにやってもらっているからです。
また、規模が非常に大きくなった場合は、AWSを使ったりVPSを借りてやったほうが安上がりになるようです。
今後いくつもWebサービス、WEbアプリケーションを作っていく予定ですが、いつか機会があればサーバー周りのことも勉強して、自分でセットアップしてみようかと思います。
作ったWebサービスの収益化・マネタイズについて
今回私がWebサービス「ショートショート」を作った理由は、色々な人のショートショートを読みたいからだというのは先ほども書きました。
しかし、Webサービスを運営していくには多少のお金と時間がかかります。
今回のWebサービスに関しては初めてなので、マネタイズのことは一切考えていません。
ですが、やはり今後もいくつも開発していこうと考えると、Herokuを利用するのにかかる700円ぐらいは回収したいです。
というのも、運営するWebサービスが一つだけであれば問題ありませんが、これが5個、10個と増えてくると結構な値段になります。
仮に10個作ると、維持するだけで年間に最低でも8万4000円がかかります。
私のようなお金のない人間にとってはこれはかなりの出費です。笑
なので、お金が目的ではないにしても、Webサービスをいっぱい作っていくのであれば、収益化については考える必要があるなと思いました。
Webサービスの収益化には多分大きく分けて3つの種類があると思います。(他にもあるような気もするので"多分"です。笑)
1、広告をWebページ上に貼る
2、お金を払わないと使えないようにする
3、基本は無料だが、一部の機能は有料にする
個人でWebサービスを運営していくにあたって、2と3はかなり大変な気がします。
ユーザーにお金を払ってもらう場合、かなりのクオリティが求められます。そのためにはかなりの時間と労力が必要になります。
一方1の広告を貼るという方法であれば、ユーザーは全くの無料で使うことができます。
個人で開発、運営していくのであれば、これが一番現実的な路線なのかなあと思います。
ただ、色々調べてみると、広告を貼ったマネタイズでは、1アクセスあたり0.1円ほどのようです。
たとえ1ヶ月に10万アクセスを集めたとしても1万円にしかなりません。
そう考えると、広告よりもサービスそのものでお金を取ったほうが収益ということだけを考えた場合良さそうです。
私の場合は個人で開発、運用するのと、さらにお金に関してはHerokuの費用を回収できればいいので、もしマネタイズするのであれば広告を使ってみたいと思います!
ただ、月に700円という収益を上げるためには、少なくとも7000ものアクセスが必要になります。
果てしなく遠い道のりです!笑
当分の間は広告を貼るつもりはないですが、アクセス数が増えてきたら広告を貼るということについても検討していきたいと思います!
もし将来広告を貼って1円でも収益化できるようになったらここで報告をします!
個人で開発したWebサービスにどうやって人・アクセスを集めるのか?
せっかく頑張って独学をして作ったので、できれば他の人にもショートショートというWebサービスを使って欲しいというのが本音です。
しかし、当たり前ですがただ作って公開しただけではアクセスは全く集まりません。
現に、私の作ったWebサービスへのアクセスは全てが私と私の友人のみです。
そのうち友人も使わなくなると思うので、そうなると多分このWebサービスは私一人だけが使うということになります。笑
それはあまりにも悲しすぎます!笑
Webサービスでも、ツールのようなものであれば、もしかしたら検索からの流入でアクセスは増えるかもしれません。
また、ツール系のものではないとしても、Webサービス上のコンテンツが知らない人に検索してもらえる可能性があれば、そこからWebサービスへの流入というのが考えられます。
例えば健康に関するWebサービスを作ったら、そのWebサービスの存在を知らなくても、「ダイエット 一週間 5キロ」という検索からそのWebサービスにたどり着く可能性があります。
しかし、私の作ったショートショートは残念ながらそのような類いのWebサービスではありません。
ショートショートのコンテンツはもちろんショートショート(短編小説)です。
そうなると、なかなか検索からの流入というのは考えにくいです。
かといって広告を出稿するようなお金は全くありません。
どうしたらいいんでしょうか。笑
何かアドバイスがあれば教えて欲しいです!笑
今のところ、
まずは私と友達でショートショートのコンテンツを増やす。
その後プロではないが趣味で小説を書いている人の中で、SNSやブログをやっている人を探し、その人たちに直接コンタクトを取ってみる。
という手段を考えています。
また、ショートショートのブログのようなWebサイト(サテライトサイト)を一つ作り、そこに小説関連の記事をいっぱい更新する。
そのサイトからショートショートのWebサービスの方へ誘導する。(もちろんそのWebサイトもショートショートの名前を使って運営。)
というようなものも考えています。
どちらにせよ、結構な労力が必要になりそうです。笑
初めてWebサービスを作ったので、作った後どのように人を集めるかについては全く考えていませんでした。
もし今後Webサービスを作ってみようという人がいれば、集客についてはしっかり考えた方がいいと思います!
Webサービスを公開する際に気をつけたこと
集客は今後正直全くどうなるか分かりませんが、続いてはWebサービスを公開する際に気をつけたことを書いていきます。
と言っても、一つだけです。
それは、Webサービスの利用規約についてです。
私の作ったショートショートというWebサービスはCGM(Contents Generated Media)、すなわちユーザーがコンテンツを作っていく形のWebサービスです。
このようなWebサービスの場合、著作権などの問題が付きまといます。
例えば、ユーザーが他の小説を丸パクリして、それをショートショートにあげたり、もしくは逆にショートショートにユーザーが書いてくれたオリジナルの短編小説を他の人に真似されたりする恐れがあります。
このようなことは禁止する必要があります。
また、CGMのようなWebサイトでは、これ以外にも多くの考慮すべき点があります。
そこで、私は利用規約とプライバシーポリシーを作ることにしました。
と言っても、弁護士さんに相談したりするのはお金がかかりすぎてしまうので、取り敢えずWebサービスの利用規約に関する本を一冊買い、それを参考にしながら利用規約とプライバシーポリシーを作りました。
ちなみに使ったのは「良いWebサービスを支える利用規約の作り方」という本です。
もし私と同じようなタイプのWebサイトを作る人がいれば、ぜひ参考にしてみてください!
もちろん、集客が全く上手くいかず、誰も使わないようなWebサービスであればこんなことは無駄骨になってしまいますが、
一応もしかしたら誰かに使ってもらえるかもしれないので、その時のために先に利用規約を作っておくというのは大事な事だと思います。
備えあれば憂いなしですよね!笑
Webサービスを実際に作ってみて必要だと思った技術
今回私がRuby on Railsを用いてWebサービスを作るにあたって必要になった技術はこちらの三つです。
・Ruby on Rails
・HTML5とCSS3
・Javascript(jQuery)
Javascript(jQuery)に関しては、まだほとんど理解できていませんが、どうにかなりました。
HTMLとCSSに関しては、以前一度勉強した事があったので問題はありませんでした。
これら三つの知識・技術は最低限必要だと感じました。
一方、さらに以下の技術・知識等があればさらに良いWebサービスが作れるようになると思います。
・Ruby
・SQL
・デザイン力
まずRubyとSQLに関してですが、定型的なものであればRubyとSQLについて知らなくてもどうにかなります。
実際に私は今回どうにかなりました。
しかし、もっと凝ったものを作ったり、Webサービスの速度を上げたりしようと考えると、RubyとSQLの知識は必要になりそうです。
実際今回ランキングの機能を実装する際には色々調べながら頑張りましたが、それらの知識があれば本来一瞬でできるようでした。
また、デザインについてですが、個人開発のWebサービスの多くはBootstrapというものを使っていることが多いようです。
Twitter社が開発したデザインフレームワークで、Bootwtrapを使えば簡単にそれなりのデザインで且つレスポンシブなWebサイトが作れます。
実際RailsチュートリアルでもBootstrapを使っています。
私が今回ショートショートを作る際には、CSSの練習も兼ねてBootstrapは使わずに作りました。
その結果デザインが酷いことになっています。笑
今後Bootstrapを導入してショートショートのデザインは改良していく予定です。
*追記*
ショートショートにも一部Bootstrapを導入しました。
結局何が言いたいかというと、デザイン力のない人はBootstrapなどのフレームワークを使うべきだと思います。
ただ、デザイン力は色々なWebサイトを見たり真似したりすることで多少は改善されると思うので、もしデザイン力がついたらフレームワークは使わずにデザインをしていきたいです。
ユーザーにWebサイトを使ってもらうためにどのようなデザインにしたらいいのか、というのは非常に重要だと思います。
なので、RubyやSQLの技術と同時に、デザインの技術もあればさらに良いWebサービスが作れるようになると思います。
今後について
長々と書いてきましたが、最後に今後について書いていきたいと思います。
まず、今回作ったWebサービスについては、先ほど上で書いたような方法を使って集客をする努力をしていきます。
さらに、まだカテゴリー機能などがないので、それらの機能も作って追加していく予定です。
また、既にWebサービス第二弾を作り始めています。
基本的には今回作ったWebサービスとほぼ同じような技術を用いるものなので、開発スピードは格段に上がっています。
これはすごく嬉しいです!
そして第二弾は今回の反省を生かして最初からbootstrapを使っています!笑
毎回新しいWebサービスを作る際に、何か一つだけでもいいので新しい何かを使って開発していきたいです。(第二弾であればbootstrap。)
また、Rubyの知識はまだまだ全然足りないので、今後はRuby on RailsでWebサービスを開発しながら、ちゃんとRubyそのものの勉強もしていく予定です。
Rubyを使ってクローラーを作るための本が売っていたので、それを使って学ぼうかと検討中です。
また、Javascript(jQuery)に関する知識がなさすぎるので、それも同時に学んでいく予定です。
さらに、できればショートショートと今新しく作っている第二弾のWebサービスを、アプリ化したいなあとも思っています。
そうすることで、アプリストアからの流入も見込めそうです。
ただ、そのためにSwiftの勉強をしたりするのはちょっと労力に見合わない気もするのでこれは要検討です。笑
以上が今後についてです!
最後に言いたいこと
プログラミング初心者が独学でWebサービスを作るなんて無謀かなとも思っていましたが、Ruby on Railsという素晴らしいフレームワークや、cloud9やHerokuなどの素晴らしいサービスの力もあり、どうにかですが作りきることができました。
このようなフレームワークやサービスがなかった時代だと、こうも簡単にはいかなかったと思います。
また、インターネット上には多くの先人たちの知恵が存在しています。それらにも非常に助けられました、
いい時代に生まれてきたなあというのを強く感じました。笑
こんな私でもどうにかなったので、もし私と同じようにプログラミング初心者だけどWebサービスを作ってみたいという人があれば是非チャレンジしてみてください!
今回こうやってWebサービスを作ってみて、本当に良かったです。
今後何か作りたいと思った時にも自分の手で作ることができます。そう考えると非常にワクワクします。
さらに、私は今まで色々なことを途中であきらめたりしてきましたが、今回はこうやって一応最後までやり通して形にできたので、それは非常に自信になります。
もちろん、私の実力で作ったのではなく、先人たちの敷いたレールがあったからこそなので、そこは勘違いしないようにしたいと思います。
Webサービスを独学で作るのはもちろんかなり大変でしたが、それでもこうやって実際に動くものを作るのは非常に面白いですし、作っていて楽しかったです。
作ったWebサービスをちゃんとユーザーに使ってもらえるようになれば、この楽しさはさらに倍増されるような気がするので、今後は作るだけでなくユーザーに使ってもらえるように頑張ります。
あと、胸を張ってプログラミングができますと言えるように、Rubyの勉強頑張ります!
いつかこういう業界で働いてみたいという気持ちが芽生えました。まだまだ道のりは長そうですが。笑
とにかく、Webサービスを作ってみて良かったです!!!
こんなに長い文章になるとは思いませんでしたが、ここまで読んでくれた方ありがとうございます!
読みにくい場所や間違っている場所等もあったと思いますが、もしあれば指摘していただけると助かります!
以上です!
*追記*
最近Twitterを始めました。このブログで書いていないことも書いています。
基本的にはWebサービスのことを呟いています!もしよろしければ覗いてみてください!