みんなの「作ってみた」

Gitと仲良くなったらRails個人開発も捗りまくった話

2018/11/27

Yametaro
Yametaro
MUSHOKU NO OWARI(意:就職しました)

35歳無職ワイ

ワイ「ええかげん働かんとな・・・」
ワイ「妻子もおるしな」
ワイ「いうてもスキルが不足し過ぎてて、このままではまたブラック会社にしか入られへんで」
ワイ「ほな、Ruby on Railsを勉強して、Webサービスを作って、それをポートフォリオにして就活しよかな」

Railsの勉強開始

ワイ「とりあえずドットインストールのRails講座を3回くらい見たで」
ワイ「酒飲みながら1.6倍速モードで見たから、あんま覚えてへんけどな」
ワイ「ほな、実際にRailsを触ってみよか」
ワイ「訳が分からんくなったときの為にGitでバージョン管理しとこか」

しばらく無職だから

ワイ「アカン、Gitの使いかた忘れてもうたわ」
ワイ「そもそも何でバージョン管理なんてするんやったっけ」
ワイ「分からんけど一応バージョン管理しとこか」
ワイ「まずはGitHubでリモートリポジトリを作るんやっけ?」
ワイ「ちゃうわ、別にリモートリポジトリが必須って訳ではないんや」
ワイ「誰かと共同作業するわけやないからな」
ワイ「ローカルで、自分だけで管理すればええわ」
ワイ「このSourceTreeいうソフトを使うんや」
ワイ「このソフトを使うと、黒い画面でコマンド打ったりせんでも、ボタンをポチポチするだけでGitができんねん」

Railsで新規プロジェクトを作成

ワイ「おっしゃ、プロジェクト作るで」

$ rails new wai_no_app1

ワイ「おぉ、フォルダが出来たで」
ワイ「このフォルダをGitでバージョン管理したいんや」
ワイ「SourceTreeで新規ローカルリポジトリを作成、と」
ワイ「ていうかリポジトリって何やったっけ?」
ワイ「直訳すると・・・貯蔵庫やって」
ワイ「せや、Gitのバージョン管理についての情報を貯めておくとこや」
ワイ「ほんで、そのリポジトリとやらにイニシャルコミットをすんねやな?」
ワイ「初期状態をコミットしておくねん」
ワイ「コミットって何やったっけ?」
ワイ「Google翻訳で調べても色んな意味があり過ぎて分からへんで」
ワイ「まあええわ、とにかくコミットや」
ワイ「コミットする時にはコメントが要るねんな」
ワイ「コメント内容は「最初のコミット」でええわ」
ワイ「そんで、次はまたRailsのコマンドを打つんやな」
ワイ「まずはモデルとやらを作るんや」
ワイ「何のモデルを作ればええんや?」

作りたいWebサービス

ワイ「お友達探しのサービスを作ってみたいんや」
ワイ「よう考えたらワイって今、友達おらへんし・・・」
ワイ「まあ、社会人なんてそんなもんなんかな・・・」
ワイ「子供のころとかは、同い年の男子ってだけでゲームとかアニメの話で盛り上がって友達になれたりしたんやけどな」
ワイ「大人になるにつれ、みんな好きなもんも嫌いなもんも増えていって
ワイ「要は人間性が細分化されていくから」
ワイ「こいつ、気ぃ合うな〜!って奴と出会いにくくなんねん」
ワイ「好きなバンドのファンのオフ会とか行ってみたこともあんねんけど」
ワイ「そのバンドが好き、って人間の中にも色々なタイプのやつがおるから、意外と共感できんかったりすんねん」
ワイ「ほんでむしろワイ浮いてたりすんねん」
ワイ「Syrup16gが好きで、オブジェクト指向が好きな・・・」
ワイ「そんなクラスタないんかなあ・・・」
ワイ「そんな奴らと飲む酒ぜったい美味いやん」
ワイ「・・・そんな、ワイに都合のいいクラスタないな」
ワイ「そもそも何クラスタやねんそれ」
ワイ「そんななもなきクラスタやと、ググって探すこともでけへんわ」

そんな「なもなきクラスタ」を探せるサービスを作りたい

ワイ「そんなもんワイに作れるんかいな」
ワイ「まあええわ、とにかくそのサービスのユーザーはん達を管理するためのUserモデルを作るで」

$ rails g model User name:string

ワイ「おお、コマンド打ったら自動的に新しいファイルがポコポコ生成されたみたいで、SourceTreeに何か表示されたで」
ワイ「いま作られたファイルや、いま変更があったファイルの一覧やな」
ワイ「・・・これは地味にありがたいことかもしれんで」
ワイ「コマンド打つとRailsが勝手にファイルをポコポコ作ったり編集したりてくれるから」
ワイ「バージョン管理でもしてへんと、どんなファイルが増えたり変わったりしてるのか全然わからへんもんな」
ワイ「GitとSourceTreeを使いながら作業すると、コマンドの裏で何が行われとるのかが手に取るように分かるな」
ワイ「ここらでもう一回コミットしておこか」
ワイ「コミットコメントは「Userモデル作成」でええか」
ワイ「なるほどな〜、ちゃんとコメントをつけてこまめにコミットしておくと何をしようとして、どんなファイルを作ったか、変わったかがちゃんと記録に残っていくんやなあ」
ワイ「Gitって、Railsのお勉強にも最適やないか」
ワイ「コミット最強やん〜」

ワイ「しかも、コミット単位で打ち消しとかもできんねん」
ワイ「つまり、そのコミットをする前の状態に巻き戻すような上書きコミットを出来んねん」
ワイ「せやから、次の日になっても好きなだけアンドゥして、昨日とか一昨日の状態に戻せるってことやんな」
ワイ「分かりやすいコメントをつけてこまめにコミットしておくと、もとに戻したいときにも便利やな」
ワイ「コメント内容での検索も出来るから、あのコミットはいつ頃したんやったっけ〜?ってときにも見つけやすいねん」

ワイ「つまりコミットいうんは」
ワイ「1回セーブみたいなもんやな」

こんな時にも便利

ワイ「例えばアホなクライアントはんが」
ワイ「昨日いっぱい修正してもらった部分、やっぱり全部もとに戻してや〜!
ワイ「とか言い出しても」
ワイ「右クリックして、コミット適用前に戻す
ワイ「これで一発や」

なんやかんやありまして

ワイ「おっしゃ、機能部分はだいたい出来たで!」
ワイ「デザインはほとんど出来てへんから、ゲームボーイでも表示できそうなシンプルデザインやけど、そこは追い追いや」
ワイ「試しにサーバ借りてアップロードしてみよか!」
ワイ「いうてもRailsで作ったもんを普通にFTPでアップロードしてもアカンらしいで」
ワイ「対応したサーバやないとな」
ワイ「HEROKUいうサーバ?PaaS?がオススメらしいで」
ワイ「ほなHEROKUに登録、新しいアプリを作成、と」
ワイ「なんや、GitのURLみたいなんが表示されたで」
ワイ「このGitのURLみたいなんを、SourceTree上でリモートリポジトリとして登録、と」
ワイ「そんで、作ったもんをリモートリポジトリに反映させるにはプッシュや!」
ワイ「ほんで」

heroku run rails db:migrate

ワイ「おぉ、ワイの作ったWebアプリが公開されたで!」
ワイ「これがデプロイいうやつやな」
ワイ「簡単やな・・・!」
ワイ「無職でも、いや無料でも使えるしな」

ワイ「今度、何か修正した分を反映させるときも、差分をFTPでアップロード、とか考えんでエエねん」
ワイ「Gitでプッシュするだけや」

まとめ

ワイ「Git作ったひと!」
ワイ「SourceTree作ったひともや!」
ワイ「唯一神やで!」

作っているサイト

なもなきくらすた

ワイ「まだまだ未完成やからゲームボーイでも表示できそうなシンプルデザインやけど、一応動くから、よかったらニッチなクラスタでも作って遊んで行ってや〜!」