この記事について
わたしのキャリアは、IT系ではありますが、プログラミングに関して素人でした。
しかしそんな私でも地道に学べばサービスリリースまでこぎつけたため、少しでもその方法論が参考になればと思い、記事にしました。
プログラミングをするまでの私
大学
大学は経済学部。数学は得意でしたが、大学にはほどんど行かなかったので、コンピュータは学びませんでした。本来は、経済学部なら統計解析とかをパソコンでするのでしょうが。。。
ちなみに私が大学を卒業したのは2001年3月です。
大学3年生の時に初めてパソコンを買いました。IBM時代のThinkPadで、CPUはPentium MMXで166MHz(256ではなかったはず)、メモリは8MB(4MBだったかも?)、ハードディスクは4GBだったと思います。当然Win95。
重さは多分3kgあったと思います。
キャリア
外資のコンサルに入社。SAP導入のコンサルが仕事です。
開発の仕様書は書きますが、プログラミングはせずに、テストだけしました。
この時になんとなく、プログラミングに興味を持ちました。
独習でCやJavaを勉強しようとしましたが、開発環境を作れずに挫折しました。
SDKとか、JDKとか、pathを通すとかがよくわからず。。。
その後は何度か転職をしつつ、むしろITからは遠く離れ、会計系の仕事をしていました。一応その線で独立しましたが、会計の仕事なんて言うのはAIがやるものなので、とんでもない危機感に日々襲われていました。
その傍ら、メディアサイトっぽいものを作ってアフィリエイト収入を狙ったりと、色々しました。そのため、Wordpressを使ってサイトを作るのは簡単に出来るようになりました。プラグインを入れてレビューサイト作ったりもしています。
で、気づけば40歳。さて、これからの人生100年とか、個人の時代とか、AIがどうのとかって、色々考えたら多分住宅ローン払えずに破産するな、と思ったのでプログラミングで自分でサービスを作ろうと思いました。
プログラミングの学習方法
2017年 独学からtech::campへ
まず取り組んだのはdotinstall。取り組むというか見るだけですね。
https://dotinstall.com/
確かこのころはすべて無料だった気がします。
そのあとに、プロゲート。この辺は王道です。
https://prog-8.com/
プロゲートは、開発環境を作らずに出来るのでめちゃくちゃやりやすいです。
入門者には最適だと思います。
このプロゲートで、HTML, CSS, Ruby, Ruby on Railsをやりました。味を占めて、RoRの本を買って、こういうフレームワークなら、自分でサービス開発が出来る!と味をしめました。
そしてRoR関連の本を買って、開発に挑みました。
Ruby on Rails 5アプリケーションプログラミング
Ruby on Rails 5 超入門
しかし、あっけなく挫折。今考えるとなぜ挫折したのかよくわかりません。書籍だと、ちょっとした誤植に気づけなかった時や、環境の違いで書籍にはないエラーになった時に自分で解決できる力がないと止まってしまうんですね。多分、これが挫折の理由です。
ちなみに、このころはまだ、Udemyの存在を知りませんでした。いまは結構利用しています。
オンライン教育のUdemy
サービスリリースには、思い切って投資をしなければならない。そう考えた私は、プログラミングスクールをいろいろ調べ始めました。
最終的には、オンライン+リアルで学べて、金額的にも妥当なtech::campに決めました。
またオリジナルアプリの制作をサポートしているのも選んだ決め手です。
人生を変える1ヶ月 最高のプログラミングスキルを最短で
【TECH::CAMP(エンジニアスクール)】
tech::campを開始したのは2017年10月です。
ドットインストールやプロゲートで頑張っていたかいもあり、tech::campの教材はロケットスタートで一気に進めました。
HTML, CSS, Ruby, Ruby on Rails とやって、いよいよオリジナルアプリ制作へ。
時は2018年を迎えようとしていました。
2018年 tech::campから独学へ
tech::campのいいところは、オンラインとリアルのハイブリッドである点。
具体的には、オンラインの教材を自習しながら、tech::campの先生にチャットで質問したり、tech::campの教室でオンライン教材に取り組みながら、挙手して先生にその場で教えてもらったりということが出来ます。
先生たちは私よりもはるかに若い人たちです。こういう若い人たちに教えを乞うというのも、新鮮な体験でした。質問をすると、よほど厄介な場合を除けばその場で解決まで頑張ってくれます。
tech::campは渋谷が本社で、支社というか支社というか、サテライトオフィスとして首都圏中心に何か所か構えています。私が利用したのは東京駅前。
順調にRuby on Rails でのオリジナルアプリ作成を試みていたのですが、主に次の二つの理由で、tech::campをやめました。
- 教室が16時からである
平日は16時から使えるのですが、私のようにほぼフリーランスに近い働き方をしている人間にとっては、むしろ朝から16時ごろまで使いたいという感じでした。さらに育児もあったので、家に17時にはついて、子供とお風呂に入って食事して21時に寝る、みたいな生活していた私にとっては、結局ほとんど教室は使えませんでした。ちなみに、最寄りの教室から自宅まで電車と徒歩で約1時間です。帰宅ラッシュを避けるためには、16時には東京を出たいのです。。 - Python でオリジナルアプリを学ぶコースがない
ちまたではどうやら人工知能がバズってる。これはITの仕事をしていなくてもわかりました。だから将来性を考えると、人工知能と親和性の高い言語を学びたいと思いました。調べてみるとそれはPythonという言語で、Railsのようなフレームワークとして、Djangoというものがある。しかしtech::campでのオリジナルアプリはあくまでもRuby on Railsでした。
tech::campは辞めたのですが、でかなり満足しています。というのは、結局プログラム言語やフレームワークは、一つを体系的に学べば、他への応用はかなり効くからです。tech::campでRuby on Railsを学んだことにより、のちにPython on Django(こんな言い方はないですが)を学ぶ際に、非常にとっかかり良くスタートできました。
さて、tech::campを卒業(?)した私は、とにかくPythonを学ぼうということで、再び独学に戻りました。
そしてドットインストール、プロゲート。プロゲートはしっかり有料版で学びました。
その後、pyQです。
https://pyq.jp/
これももはや定番かもしれませんね。今は有料ですが、私が始めたころは無料もあったような気がします。
pyQのいいところはDjangoも学べる点。
オンラインの教材を学んでいくのですが、応用的な内容の質問にもしっかりと回答してもらえます。
あと、本ももちろん購入してみました。わたしのおすすめは次の3つです。
1、やさしいPython
これは辞書的に使えます。プロゲートやpyQで学んでから体系的に復習するのにちょうどよいでしょう。
2、Python Django 超入門
数少ないDjango本の一つ。多分、日本語の書籍としてはこれが最初では?
丁寧に説明がされていて、最終的に簡単なSNSが作れるようになっています。
あくまでも入門なので、ビュー関数を使っていて、クラスビューではありません。(この辺は、今だからわかる)
3、現場で使える Django の教科書《基礎編》
実際の仕事の現場でプロジェクトをスタートするときにどうするか、という視点で書かれています。現場で使える、とっ言っているくらいなので、ある程度入門レベルを終えた方向けと考えた方がいいです。
なので最初読んだときはあまり使いませんでしたが、今になって読み返すとかなり役立ちます。現に、今この本は付箋だらけになりました。
あとはやっぱりUdemyですね。定価だと20,000円くらいするコースも、キャンペーン中に買えば90%以上安くなっていたりします。(けっこう頻繁にキャンペーンやっているので、誰も定価で買わないんじゃないかな。。。)
オススメはこちらです。
1、Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学び、実践的なアプリ開発の準備をする
作ったのは元サッカー日本代表の酒井潤さん。ほぼ同年代で、私もサッカーをやっていただけに、サッカーがうまくてプログラミングもできて、しかもシリコンバレーで働いていて、しかも投資もやっていて、、、ってはっきり言って神です。
Pythonを極めるならこれですね。これは何度も見るべきという内容です。
2、【Python 3 x Django 2.0】作りながら覚えるDjango
簡単なブログアプリを作ります。
3、【初心者決定版!】Python/Django入門
これも簡単なブログアプリです。
Herokuへのデプロイはこれが一番わかりやすい。
4、プログラミング初心者でも安心、Python/Django入門講座
Djangoのブログで有名なNaritoさんの講座です。解説がとにかく丁寧。
5、【3日でできる】はじめての Django 入門 ( Python 3 でウェブアプリを作って AWS EC2 で公開!)
人工知能関係で有名な先生。タイトルにあるようにEC2で公開までを解説してくれています。
講座内容通りにやればEC2で公開できました。ただし独自ドメインの紐づけに苦戦して、最終的にEC2は挫折。。
今振り返ると、結構いろいろ手を出したなぁ~という感じですね。
あと大事なのはデザインです。
これはBootstrap4を使いました。ご紹介したUdemyの各Django講座で、Bootstrapの使い方は解説があります。
また有料デザインを購入する、という手段もあります。
https://envato.com/
最初からガチでサービス公開まで考えているのであれば、購入してしまった方が早いですし、質もいいです。
2019 いよいよサービス公開へ
さて、既に書いたようにいろいろ手を出した私ですが、最終的にはこんな環境でやっています。
<開発環境>
Windows10にAnacondaをインストールして、仮想環境を構築。
エディタはVS Codeを利用。
<本番環境>
デプロイはHerokuへ。$7USD/月なので、国内のサービスよりも多分安い。(ただし為替リスクあり)
バックアップ的にgithubへgit pushしています。
実はMacbook airも持っていますが、普段はSurface pro4使いです。これに人工工学に基づいた幅広キーボードが最高なので、家でも会社(シェアオフィス借りてます)でも愛用中。
エディタについては何でもいいです。AtomやSublimeTextもいいです。個人的には、Sublimeというのは名前が嫌いなので使いません。Pythonに特化したものとして、PyCharmも人気ですね。ただ、機能過多という印象です。まぁ人それぞれ好みがあると思うので、詳細はそれぞれググってみてください。
で、一番肝心なのはデプロイをどこにするかだと思います。私はHerokuを選びましたが、他の選択肢として、AWS EC2、やロリポップ!マネージドクラウドがあります。
EC2の場合は、多分インスタンスを立ち上げっぱなしにしてRoute53というドメインサービスでドメインを取得して紐づける、という感じなのでしょうか。あくまで想像ですが。
最初はEC2を使おうと思いましたが、日本語ドキュメントが少なく、挫折しました。。。また、Linuxなどの知識も結構必要な印象です。
ロリポップ!マネージドクラウドは比較的新しいサービスです。これも試みましたが、デプロイがうまくいきませんでした。解決にはやはりLinux的な知識が必要そうだったので挫折。
結局行きついたのはHerokuです。日本語資料は少ないですが、私でもなんとかなりました。
さらにお名前.comで独自ドメインをとって、SSL化も成功しました。
独自ドメインはいろいろな会社で取れます。AWSのRoute53というサービスもあります。ただ、国内で有名なのはお名前.comです。ただ管理サイトが使いにくいですね。誤ってクリックして課金、なんてのを狙っているとしか思えないですし、契約後にくるメールも悪質です。上場企業がこれか、、、という感じ。でもGMOはもともとダイヤルQ2回戦の会社なので、まぁそこに企業の本質的な体質があるのかもしれません。。。(個人の勝手な妄想です)
プログラムはHerokuとローカルにある状態です。ある意味、Herokuからクローンすればどこでも再現できるのですが、やはり不安です。なのでgithubにもバックアップは置いています。つい最近まで、githubは無料ではプライベートリポジトリを持てませんでしたが、最近無料でも大丈夫になりました。
ちなみにBitbucketはもともと無料でプライベートリポジトリが持てますね。どちらも使い勝手は変わらないと思います。
https://github.com/
https://bitbucket.org/
実際に作ったもの
紆余曲折ありましたが、何とか公開まで踏み切りました。次の2つのサービスです。
定額生活
https://teigaku.fun/
今はやりのサブスクリプションサービスをまとめたサイトです。
ログオンすればレビューを書いたり、お気に入りサービスを保存しておいたりできます。
掲載しているサブスクリプションサービスは100を超えました!
Achieve
https://go-achieve.fun/
これは目標を設定し、その達成までを励ましあうSNSです。
目標まで10,000時間の努力を積み重ねる、というものです。
この10,000時間というのは、デフォルトで固定にしています。もちろんプログラム的に、ユーザーごとに設定させることもできますが、あえて『10,000時間の努力でプロを目指す』という分かりやすいものにしました。
また、名言をたくさん載せています。目標達成を後押しする仕組みとして、こうした名言をお気に入りに入れておけます。
ユーザー登録して目標を設定すると、トップページで自分の目標が大きな文字で出てきます。
毎日この画面を見続けることで、潜在意識に目標がインプットされ、自然と行動が促されるというものを狙っています。
おわりに
長い文章を読んで下さり、誠にありがとうございます。
リリースしたサービスはいずれもまだまだ改良の余地はありますが、これからも技術力を磨いていき、よりいいサービスを作っていきたいと思います。
今後は、Dockerとかもしっかり使えるようにしたいですね。
参考になりましたら、幸いです。