Ruby
LaTeX
Rails

初心者が、頑張って数式掲示板サービスを作って、知っておきたかったことをまとめる。

out.gif

僕は大学生ですがなんやかんやでWebサービスを作り上げて公開することができました。はじめに手をつけ始めてから1年半も時間がたってしまいました。その間に挫折して学習をやめたり、別のことに手をつけたり、プログラマとしてインターンに出かけたり、すぐに首になって戻ってきたりといろんなことがありました。今は時間が空いているので、前々からの野望であるプログラミングのように、数学や物理の知識もググれば出てくることを願って開発しました。数式がかける掲示板です。この過程で、学習過程で知っておきたかったことなどをまとめたのでぜひお読みください。

作ったサービスです!ぜひご覧ください!

http://www.academiii.com/

精神的、向き合いかたで知っておきたかったこと

いつかなくなることを受け入れて学ぶ

 Rails を学んでいると、Rails は日本でしか流行ってないとか、Python にとって変わるといった悪口を聞いてしまいます。それは真実であります。プログラミングとは枯れやすい技術なのです。数年前はガラケーのサイトを必死に作り、ちょっと前まではパソコン用サイトを作り、最近はスマホ対応のサイトやアプリを作り、もうじきしたらヘッドマウントディスプレイの3Dに対応したものを作らなければならない。プログラミングの知識は寄せては引いていく波のようで一度覚えたからといってそれがずっと使えるものではありません。

それでも僕はプログラミングを学んだ方がいいと思っています。なぜなら一度プログラミングを学ぶと他のプログラミング言語を学ぶのが簡単になり、プログラミングへの抵抗感がなくなるので、「ちょっとマクロ組んで見よう」とか「ちょっと機械学習に手を出して見よう」といったことができます。

だからプログラミングを学ぶことにネガティブになっても迷わず頑張って見てください。

同じような仲間がいる

スクリーンショット 2017-12-30 14.09.56.png

progate はプログラミングの初心者がやる有名どころのサービスです。各段階をクリアしてtwitter で呟く人もいるのでそういう人を見ると自分一人じゃないんだなあと安心します。フォローして見るのもいいかもしれません。

また、「Webサービス 作って見た」でググって見るのもいいと思います。初心者がプログラミングを使って作成した事例が書かれているのでこれもモチベーションのアップに繋がります。

ググれば何とかなる

プログラミングとは学校でやった勉強とは違ってネット上に情報がありふれています。数学や物理を勉強しようとしたときネットで調べて解決!ということはないですが、プログラミングの場合は違います。ネット上に情報があり溢れています。例えばtwitterでログインする方法はtwitter ログイン rails このようにたくさんありますし、わからなくなったらTeratailというプログラマの質問サイトもあります。

用語を知っておいた方がいい

スクリーンショット 2017-12-30 13.49.29.png

調べれば大抵のものが出てきますが、何と調べたらいいのかわからないというのがプログラマ初心者の悩みです。例えば見た目の部分を作るHTML の用語からいくつかピックアップすると「フォーム」「モーダル」「ハンバーガーメニュー」とかいうのがあります。これらが何のことかわかりますか? 大抵の初心者はわかりません。わからないので質問もできないし、検索もできない。だからざっくりと調べておくのがいいかと思います。 Rails Tutorial では Bootstrap を使ったかと思いますが、このサイトをざっくりと眺めてフロントエンドのパーツ名を知っておくのもいいがもしれません。

Bootstrap のサイドバー(左に並んであるリスト)の用語はそれぞれフロントエンドの主要なパーツ名を表しています。ざっくりと読んでおけばいいかと思います。

技術的な面で知っておきたかったこと

ざっくりとしたデザインを決めておく

スクリーンショット 2017-12-30 14.18.50.png

サイトを作るとき、いきなりコードを打つことはおすすめしません。なぜならまとまりもなくぐちゃぐちゃになってしまうからです。普通、デザインツールという物を使ってイメージを作っておきます。有名どころで言えば SketchFigma というものがありますが、僕は Figma の方が好きなので figma を使っています。

僕は実際こんな風なのを作ってからコードを打ち始めました。ぜひ参考にしてください。
https://www.figma.com/file/EZGpEcXQ4gYUKgYWnIdDc86G/Untitled

環境開発の大変さについて知る

まずつまづくのがここでしょう。Rails Tutorial では Cloud9 を利用したので何の苦もなくrails を利用できましたが、これをつかわずローカルで環境を作ろうと思ったらかなり大変です。特に Carrierewave と MySQL の環境を開発するときにつまづきます。残念ながらメモを撮り忘れてしまっていたので手順を書くことはできませんが、ネットで調べて何とか環境を整えることはできました(ただし二日かかった)

MySQL を使う

スクリーンショット 2017-12-30 13.24.49.png

Rails ではデフォルトで SQLite を利用しているため、データベースについてはあまり気にせず開発することができます。しかし実務では MySQL や PostgreSQL を使うことがおおいとしり、今回は MySQL を利用しました。

MySQL の環境開発はかなり時間がかかります^^;
とはいえこの環境開発はいずれにせよ乗り越えなきゃならない壁なのでここでぶつかっておくのがいいかと思います。

スクリーンショット 2017-12-30 13.56.05.png

またDBを扱うときは、 ツールを使うと便利です。僕は Mysql を使ったので、SequelPro というツールを使いました。
rails でデータベースの内容を見るとき、

rails c
User.find(1)

のようにしてデータの内容を見ていたかと思いますが、このようなツールを使うとこのように簡単にDBの内容を見ることができます。さらにデータの追加、編集、削除、追加なども簡単にすることができるので圧倒的に便利です。

AWSの使いかたを勉強する

スクリーンショット 2017-12-30 13.29.39.png

おそらくrails tutorial をクリアした人は Heroku をサーバーへのアップロードと思っているかたがいるかもしれません。しかし実務的は AWS をしようする場合が多いです。だからサーバーへのアップロードは AWS をおすすめします。
https://aws.amazon.com/jp/
しかし AWS は初見殺しの要素が強く、VPC, S3, RDS などの多くの用語が出てきます。さらにネットワークの知識が必要とされるので、勉強が必要です。僕が AWS の勉強をするのに参考にした教材は以下のような物です。

Dotinstall を二周書写しました。こちらでは深く勉強するというより、軽く触って見て雰囲気を掴む程度でOKです。
https://dotinstall.com/lessons/basic_aws

こちらの書籍も書写をしました。ネットワークの知識についても触れてくれているので、初心者でも勉強になることが多いです。
Amazon Web Services 基礎からのネットワーク&サーバー構築

スクリーンショット 2017-12-30 13.32.36.png

わからないことがあれば、この三分間Networkingというサイトから調べていました。くせがありますが、なかなか面白く解説してくれているのでネットワークを勉強するのにはいいサイトです。

http://www5e.biglobe.ne.jp/aji/3min/スクリーンショット 2017-12-30 13.06.41.png

これらを一読して手を動かしたあと、こちらのサイトを参考に AWS 環境を構築しました

https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce

いずれのサイトも一から丁寧に教えてくれているので初心者でもわかりやすかったです。さらにこの最後のサイトは Capistrano という gem を使ってサーバーに自動でアップロードする方法を教えてくださっているのでとても実践的で有用です。

AWS は初めての登録後1年間は無料で使えるのでお金のことはあまりきにしなくてもいいです。もっとスピードを早くしたい人や、DBの容量が欲しいと思った人は無料枠を超えてお金を使う必要があります(ただしurlを academiii.com みたいに自分のものが欲しかったので1200円で買いました)