Live High

とあるIT企業で働きながら、起業しています。

文系ド素人が予約管理サービスを6ヶ月で作成するまでの3ステップ - 初心者プログラミング独学

f:id:ddddd12345:20160304132351j:plain

プログラミングはすごい。

日常のわずかな気付きから、人の役に立つものが作れる。

僕が社会人になり、エンジニアと一緒に働く時には、スムーズにやり取りが出来て相乗効果を生むことは間違いない。

実際にIT業界ではビジネス職がエンジニアに開発コストを考えずに、無茶振りをしてしまう事がよくある。

今後もプログラミングのメリットはあらゆる所で効いてきそうだ。

 

そして、この記事では文系でプログラミング初心者の僕が、最終的には予約管理サービスをリリースするまでの6ヶ月で行った3ステップを記載している。

HTML/CSSの勉強から、WEBサービスをリリースするまでのステップになっている。

プログラミングを勉強したいが、方法が分からない人は特に参考にしてほしい。

 

自己紹介

まずは簡単な自己紹介。

中学、高校、大学は全て文系。

パソコンが嫌いすぎてエクセルは人間が使うものではないと思っていた。

しかしMacを購入したことがきっかけで、約3ヶ月間HTML/CSSを独学で勉強した。

今年4月から東京のIT企業で働くスポーツ系学部に通う関西の大学生。

 

 

文系ド素人が贈る、6ヶ月の3ステップ - プログラミング独学/初心者

1.HTML/CSSをまずは身に付ける[1~3ヶ月目]

プログラミングの超基本。

HTMLはWEBのページに文字を書く言語。

CSSはデザインなど、装飾をする言語だと今は理解すれば問題ない。

1−1.テキストエディタをダウンロードする

プログラミングにはコードを書く道具が必要だ。

今(2016年)だと、sublimetextがオススメだ。

無料でコードを書く道具を手に入れよう。

www.sublimetext.com

ダウンロードや使い方は、この記事が参考になる。

“恋に落ちるエディタ”「Sublime Text」 完全入門ガイド! | 株式会社LIG

 

1−2.ドットインストールで独学

dotinstall.com

ドットインストールとは、3分動画でマスターする初心者向けプログラミング学習サイト。

動画を見ながら、sublimetextを使って自分の手で打ち込んでみよう。

文字なんかで理解するより、断然理解しやすく、勉強時間を短縮することが出来る。

プログラミングを始めた頃は、とにかく壁にぶつかり続ける。

僕は1つのエラーに対して、丸1日使ったこともある。(実際には1分程度で解決できる問題だった)

そのため、質の良いサービスや本を活用して、とにかく壁にぶつかる時間を短縮すべきだ。

実は僕の周りでもプログラミングを諦めた人がいるが、その人達は皆「エラーがウザくて辞めた」と言い訳をしている。

君はそうならないようにしてほしい。

 

また、時間に余裕があるのであれば、javascriptを勉強し、その後にjqueryを勉強しよう。

javascriptはWEBページに動きを付ける言語だ。

例えば以下のような画像がスライドする「スライダー」もjavascriptで動いている。

↓スライダー

f:id:ddddd12345:20160304023839j:plain

http://cssslider.com/ja/

そしてjqueryはjavascriptを効率的に書けるプログラミング言語だと今は理解しておこう。javascriptをそのまま書くと、長ったらしいコードになるために存在している。

この2つは、最初から完璧に理解しようとはせず、まずはドットインストールでjavascript・jqueryの動画を全て見て、書いてみる程度で充分だ。

HTML/CSSでプログラミングの耐性が出来ているため、あとは作りながら覚える方が早い。

以下はjavascriptの参考になる記事だ。

www.hp-stylelink.com

 

1−3.WordPressでブログを作る

f:id:ddddd12345:20160304023836p:plain

WordPressは、ブログを作成するためのソフトのようなもの。

個人から企業まで、幅広く、そして長く愛されている。

 

WordPressが普通のブログと最も違う点は、プラグインで機能を拡張できることだ。

例えば、iPhoneはiPhoneというデバイスに自分の好きなアプリをダウンロードすることで、色んなサービスを利用することが出来る。

WordPressも似ていて、WordPressというソフトに好きなプラグインをダウンロードすれば、コードを書かなくても多様な機能を実装することが出来る。

例えば先ほど紹介した、画像をスライドさせるスライダーのプラグインをダウンロードすれば、javascriptやjqueryをほとんど書かなくても実装できる。

 

 

プログラミングはこのように過去に誰かが作ったコードを活用することが多い。

それだけで時間をググッと短縮出来るからだ。

「だったら何故プログラミングを勉強するのか?」と思うかもしれないが、それら過去の産物を部分的に活用することで新しいサービスが生まれている。

旨いラーメンを作るために小麦から作りたいと思うか?

麺を作るためにどの小麦を使うかという事に時間を割いた方が、結果的に他店に負けない旨いラーメンが出来るだろう?

むしろ旨いラーメン屋の中には麺を他店から仕入れている所も沢山ある。

つまり、旨いラーメンを作ることに集中して、余計なことはしないべきなのだ。

 

ちなみにWordPressでブログやWEBサイトを作成するなら、この本がめちゃくちゃオススメだ。

WordPressって何?という自分が1からブログを作成できたのは、この本のおかげ。

完璧に覚える必要は無いが、WordPressぐらい出来ないと恥ずかしい。

 

WordPressレッスンブック HTML5&CSS準拠

WordPressレッスンブック HTML5&CSS準拠

 

 

 

もしサーバーで実際にWordPressを公開したいなら、この本がオススメ。

初心者が詰まりやすいところを丁寧に書いていて、一切詰まらずにサイトを公開できた。

 僕は第1版だったが、最新の方のリンクを添付しておく。

いちばんやさしいWordPressの教本 人気講師が教える本格Webサイトの作り方 第2版 WordPress 4.x対応 (「いちばんやさしい教本」シリーズ)

いちばんやさしいWordPressの教本 人気講師が教える本格Webサイトの作り方 第2版 WordPress 4.x対応 (「いちばんやさしい教本」シリーズ)

 

 

特に最初の駆け出しは、分からない事が多くてプログラミングの真の楽しさに気づくことは難しい。

プログラミングそのものに魅力を感じられないのであれば、就活に役立つ、仕事に活きるなど、自分でモチベーションを作りだして欲しいと思う。

 

2.PHPでWEBサービスを作る[4~5ヶ月目]

これぐらいのレベルになれば一度は、どの言語を学ぶべきか迷うだろう。

僕もそうだった。

しかし、プログラミングがある程度出来るようになれば、そんな事は後から考えれば良いことだと気づいた。

はっきり言うと、プログラミング初心者が最初から言語の選択に迷うことすら馬鹿らしい。

1つの言語も習得していない人間が、どの言語を学ぶべきか判断出来る訳がない。

結局のところ、プログラミングの基礎的な部分は同じなので、嫌だったら、ある程度出来るようになってから他の言語に移ればいい。

この辺りは初心者の頃の僕には理解出来なかったので、「悩む時間があるなら勉強しろ」と書いておこう。

 

2−1.簡単なWEBサービスを作ろう

まずは今までの知識を活用して、簡単なWEBサービスを作ろう。

僕と同じようにWordPressを使えるようになった人は、PHPが何となく使えるはずだ。

細かい話をするとWordPressのPHPは、WordPress特有の書き方(←厳密に言うと違うけど)をしているため、その通りに活用することは出来ない。

しかし、PHPはググればすぐに理解できる程度になっているはずだ。

 

僕は以下の本を読みながら作った。

最終的には簡単なECサイトを作成することが出来た。

作ったあとも何度も読み返して、理解を深めることが出来る本でもある。

特にget/post辺りは初心者が詰まりやすいところなので、何度も読み返して欲しい。

 

たったコレだけでPHPプログラミングが理解できる本

たったコレだけでPHPプログラミングが理解できる本

 

 

 一度自分の力で、サービスをカタチにすると、プログラミングの楽しさを実感できる。

ここまでの道のりは長いが、是非とも感じた事の無い達成感のために頑張って欲しい。

 

2−2.エンジニアを探せ

この記事では独学の方法を書いている。が、あえて僕は指導してくれるエンジニアを探せと言おう。

簡単なサービスを作ったら、次は高度なWEBサービスを作りたいとなるはずだ。

例えば、分かりやすいところでは会員登録の機能などである。

しかしこの辺りから難しさのレベルが変わってくる。

今までは分からないことがあれば、ググッてコピペで出来ただろう。

しかし、ここからは「調べても出てこない」という地獄が待っている。

そして、そもそも

「どんな言葉でググれば良いのか分からない。」

「なぜ自分はエラーにぶつかっているのか理解できない。」

「自分が実装したい機能は何をどうすればいいのか分からない。」

という事が起きる。

 

このような現象が続けば、WEBサービスを独学で作るのに膨大な時間がかかる。

もしかしたら、それは3ヶ月かもしれないし、3年かもしれない。

僕の実感では、文系ド素人だったら、90%の人間は耐え切れず挫折する。

 

そして僕も挫折をした一人である。

何度も何度も挫折し、何度も何度も挑戦した。

そんなある日、僕は偶然にも長野県在住のエンジニアの方にプログラミングを教えてもらうことに決まった。

 

そして、僕は大阪に在住しているため、約8時間の長距離バスに揺られて、2週間みっちり勉強した。

生活費など諸々で5万円は使ったが、今では自信を持って正しい投資だったといえる。

 

しかし、やる気だけを見せても指導してくれるエンジニアは滅多にいないだろう。

僕の場合も、教えてもらう代わりに会社のサイトデザインを修正する仕事をタダで手伝った。

このような取引をすれば、お互いにメリットがあるので教えてくれる可能性が高い。

 

それも無理な場合は、オンライン学習を受けよう。

田舎に住んでいて、「そもそもエンジニアなんてこの村にいねえよ」って人でも品質の高い指導を受けられる。

WEBサービスを作れるまでに相当な投資になるが、副業なんかでWEBサービス作って稼げばいい。受託で稼いで取り返せばいい。

以下は僕がオススメできるTechAcademyというサービスだ。

約2ヶ月間で、最終的にはオリジナルサービスを作ることを目標に、オンラインで優秀なメンターがプログラミングを教えてくれる。

このスクールに通った後は、自分でググって、一人で勉強できるようになっているはずだ。

f:id:ddddd12345:20160305132042p:plain

f:id:ddddd12345:20160305132008p:plain

f:id:ddddd12345:20160305132033p:plain

f:id:ddddd12345:20160305132049p:plain

 TechAcademy

 

しかし、申し込みが3/6までなので、もし間に合わない場合は以下のteratailというサービスに登録することを勧める。

f:id:ddddd12345:20160305132507p:plain

これはエンジニアに質問できるQ&Aサイトだ。利用料金は無料なので、登録しないと勿体無い。

現在は1日に30個程度の質問が投稿されその9割程度に回答がつくらしく、僕も勉強時に分からないことがあれば活用させてもらっている。

f:id:ddddd12345:20160305132448p:plain

teratail

 

いずれWEBサービスを作りたいと思っているのであれば、実際に自分の肌でこのような良いサービスを利用してみることも勉強になるはずだ。

 

 

3.JAVAでWEBサービスを作る[6ヶ月目]

僕の指導者であるエンジニアはJAVAを使っていたため、僕もJAVAを使うことにした。

3−0.開発環境を整える

ここではJAVAでWEBサービスを作るための準備を教える。

JAVAで開発する場合、sublimetextより優れているテキストエディタのようなものがある。それがEclipseだ。

eclipse.org

 

以下は僕がEclipseを導入する上で参考にしたサイトだ。

www.javadrive.jp

 

Eclipseがあれば、ライブラリを簡単にダウンロードすることが出来る。

ライブラリというのは、WordPressで言うプラグインのようなものだ。

プラグインみたいにダウンロードして終わりではないが、開発コストを抑えてくれる先人の知恵を簡単に借りることが出来る。

例えばJAVAは時間の計算をするには向いていない言語だが、JodaTimeというライブラリを使えば、直感的に時間の計算をすることが出来る。

その他にも様々なメリットがあるため、もし君がJAVAで開発するなら、Eclipseをマスターすることを勧める。

 

3−1.サービスを考える

サービスを考えるのがプログラミングを勉強するより難しかった。

予約管理サービスは、自分が他のサービスを使ってて、もっと良いものが出来るのでは?という考えから作成した。

半分勉強用に作成したため、流行るとか、競合がどうとかは深く考えないようにした。(そうしないと進まないから)

 

サービス内容は以下の通り。(サービスを言葉で説明するのは難しいし、今回の本題では無いので「ふーん」と思う程度で大丈夫)

f:id:ddddd12345:20160304023832p:plain

Rese

<メイン機能>

・会員登録すれば自分の予約ページを持てる。

・その予約ページから予約が入ったら、管理ページに自動で予約が追加される。

<サブ機能>

・予約情報から、顧客情報を自動で管理。

・予約情報から、当月の売上などを自動でチャート化する。

 

そして、このサービスを成り立たせる為には以下が必要だ。

・会員登録

・予約が入った時のメール通知機能

・予約ページのカスタマイズ

・予約が重複しないよう、予約ページで空き時間を自動算出

→同時に予約が入った場合の処理も必要。

など。

 

3−2.データベースを決めよう

WEBサービスを作るためにデータベースは必須だ。

しかし、データベースは何種類もあり、選択するのは難しい。

僕の場合はAWSか、GAEで迷ったが、コストが安い事と指導者がGAEを使っていたこともあり、GAEを選択した。

GAEを使っている人は多くないが、個人でWEBサービスなどを立ち上げるにはコストが低いため気に入っている。

GAEとAWSの違いなどを説明すると、長くなるので省略する。

ここまでのスキルがある君なら、自分で調べて理解できるはずだ。

 

ちなみにEclipseを使うなら、slim3というフレームワークをダウンロードしよう。

GAEに特化したフレームワークで、データベースを使った処理を書くのが楽になる。

sites.google.com

 

GAE、slim3を使う場合は、これらはあまり人気の無いデータベース、フレームワークだということを認識しておいてほしい。

僕は人気とかに興味が無く、とにかく早く一人でWEBサービスを作る技術が欲しかったため、指導者が使っているものを勉強しただけだ。

君の指導者が他のものを使っているなら、それを勉強した方が断然良い。

 

3−3.あとは時間を費やすのみ

初めてWEBサービスを作る場合、設計能力も無いため、普通の3倍は時間がかかるだろう。

僕は1ヶ月かかった。

大学生でバイトもしていない僕だったので、最低でも100時間はかかったはずだ。

途中で何故こんな難しいサービスを作ろうと思ったのだろうと、何度も後悔した。

しかし、あとは時間を費やし、根性で何とか乗り切った。

 

この6ヶ月の到着点は「スタートライン」

プログラミングは終わりが無いし、僕もようやく、「ド素人」から「初心者」にランクアップしたぐらいだ。

この6ヶ月でWEBサービスを一人で作れるようになった。

そしてプログラミングを始める前から抱いていた目標は、副業でWEBサービスをリリースし、収益化することだ。

 

僕は今年の4月から東京のIT企業でビジネス職として働く。

本業の合間でガリガリと作っていくことになるだろう。

 

と思っていたが。

実は、この記事は現在(2016年3月)に書いたものではなく、2015年12月に作成したものだ。

現在の僕は、既にとある会社に自分が考えたWEBツールを売り込み、まずは社内ツールとして利用し、いずれは外部向けにリリースしてもらうことになっている。

僕が一人で企画、開発していくことになる。

収益化の目標はとりあえずクリア出来そうなので、次は月100万円の収益を目標に頑張っていく。

月100万円の収益があれば、会社に売り込まずとも、個人でWEBサービスを開発し、多くの人に届ける資金として一先ず安心だ。

  

プログラミングは手段に過ぎず、どのように使うかが難しい。

つまり、ここからが本当の「スタートライン」ということだ。