Run on the rails!!

ruby on rails 学習に役立つ情報まとめ

プログラマならメモリ空間をイメージできるようになろう

最近のプログラマ

便利なツールが発達しすぎたせいで、簡単にプログラミングを始められるようになったのはいいのだが、最近のWeb系の言語は便利すぎてメモリを知らない子が結構いる

ガベージコレクションもよくできているし、メモリ

メモリの理解

C言語をやらなくても、配列やクラスの初期化、変数などは本来、メモリがわからないと理解できないはずなのだそしてメモリがわかればポインタがわかるので、参照渡しもわかる

 

これから覚える人へ

理解するためのステップが下記に簡単にまとまっているのでよく読もう

pg-kura.hatenablog.com

オンライン学習サービスまとめ

プログラミングのオンライン学習サービス

最近オンラインの学習サービスが増えてきました
サービスの概要、料金、システム、特徴などをまとめてみます。

 

ドットインストール

f:id:ripple-ripple:20170607094314p:plain

  1. 動画で様々なプログラミングの授業が見られる
  2. 一回の動画は3分ほど
  3. 初歩的な部分から学べるので初学者向け
  4. 基本無料
  5. HTML/CSS/JavaScriptの授業が豊富
  6. ゲームも作れる

http://dotinstall.com

PyQ

f:id:ripple-ripple:20170607094547p:plain

概要:Pythonの学習サービス

ブラウザだけで完結

名前の通りPython特化型。Pythonに特化した学習サービスは珍しい。

料金:

特徴:

pyq.jp

ITProCollege

HTML/CSS

Ruby on Rails

担当講師制

itprocollege.com

CodeCamp

オンライン家庭教師

codecamp.jp

CodeIQ

問題を解いていく系

codeiq.jp

オンラインブートキャンプ

techacademy.jp

キャリアチェンジアカデミー

tenshoku-ousama.jp

web-camp.io

prog-8.com

paiza.jp

Schoo

schoo.jp

Qiita

qiita.com

測定と梃子

裕福になるために必要な2つの環境

裕福になるためには、2つの環境を整えなければならない。

  • 自分の生産性が測れる地位に就くこと
  • 自分の決定が大きな効果を持つようにすること

~中略~

ベンチャー企業は測定と梃子のある環境を提供してくれる。小さいことで測定が可能になり、新しい技術を発明してお金を儲けることが梃子になる。
測定と梃子を手に入れるために、CEOや映画スターになる必要はない。
難しい問題に取り組む小さな集団に参加すればいいんだ。

技術=梃子

ベンチャー企業は測定と梃子のある環境を提供してくれる。小さいことで測定が可能になり、新しい技術を発明してお金を儲けることが梃子になる。

ハッカーと画家 / ポール・グレアム

「ハッカーと画家」 

ハッカーと画家 コンピュータ時代の創造者たち

ハッカーと画家 コンピュータ時代の創造者たち

 

 僕は、ポール・グレアムという人が書いた「ハッカーと画家」という本を読んで、プログラマとして生きていくことを決めた。そして、スタートアップを立ち上げることも決めた。

ハッカーと画家には「富の作り方」という章がある。とても刺激的な内容だ。

富は自らの手で作り出すことができる。富とは、みんなが欲しがるものだ。みんなが欲しがるものを作り出すことがお金持ちになる近道だ。

簡単に要約すると上記のようなことが書いてある。
当たり前のことかもしれない。だけど、とても大切なことだ。

(言い忘れたけど、著者はLispプログラマで超優秀なハッカーでありながら自身のサービスViawebをYahoo!に4960万ドルで売った文字通りの億万長者だ)

お金持ちになる方法は、雇用主からたくさん給料をもらうことじゃない。当時の僕は、自分の収入を増やすには良い会社に勤めてたくさんの給料をもらうしかないと思っていた。だけど、今ではそれは一番効率の悪いやり方だと思う。特に日本では、ね。

If you wanted to get rich, how would you do it?

ここ数百年ではスタートアップを立ち上げるか、スタートアップに参加することがお金持ちになる信頼できる方法だと著者は言う。僕もこれに賛成する。特に、君がプログラマなら、なおさらだ。

If you wanted to get rich, how would you do it? I think your best bet would be to start or join a startup. That's been a reliable way to get rich for hundreds of years. The word "startup" dates from the 1960s, but what happens in one is very similar to the venture-backed trading voyages of the Middle Ages.

Money Is Not Wealth, Wealth is what you want

お金は富そのものじゃない、とも。
南極大陸のど真ん中にいたとしたら、どんなにお金を持っていても何も買えない。
(お金が使えない場所では、お金は富じゃない)

Wealth is the fundamental thing. Wealth is stuff we want: food, clothes, houses, cars, gadgets, travel to interesting places, and so on. You can have wealth without having money. If you had a magic machine that could on command make you a car or cook you dinner or do your laundry, or do anything else you wanted, you wouldn't need money. Whereas if you were in the middle of Antarctica, where there is nothing to buy, it wouldn't matter how much money you had.

原文が無料で読めるので是非

原文:How to Make Wealth

 

RailsアプリをAWSで公開する時の設定

Webサーバーどうするか問題 apache? Nginx?

herokuとか使うなら悩まなくていい

AWS使うなら迷う問題「apche使う?」or「Nginx使う?」

 

qiita.com

 

Nginx + Rails ではアプリケーションは動作しない

そもそもwebサーバーとアプリケーションサーバーの違いを確認しておく

Rails開発におけるwebサーバーとアプリケーションサーバーの違い(翻訳)

 

Nginx + Unicorn + Rails の構成を取るのが一般的(らしい?)との記述があったので、その通りの構成にした。

参考:Unicorn と Nginx と Rails の関係

本番環境と開発環境で動作が違う問題

本番だとうまく動かないこと請け合い。
Railsって、クソだね!

migrationまとめ

migrationってそもそも何?何のためにあるの?

migrationは何をするためにある?

migrationを一言で説明するなら「SQLを書くことなくRubyでデータベース内にテーブルを作成することができる機能」です。SQLを書かなくていいというところが重要です。テーブルの作成だけではなく、テーブルの削除、変更もできます。

さすがにそんな人はここ見てないと思うけど、そもそもDataBaseってなに?って人はコチラ

www.transnet.ne.jp

普通にSQLでテーブルを作成する場合

SQLを実際に書くよりもわかりやすい記述ができます

  • migrationでやる場合
  • SQLでやる場合

履歴管理

あとは、データベースの履歴管理もやってくれます。

一人でやっている時はそれほど必要性を感じないこともありますが、複数人で開発する時にはほぼ必須の機能です。

これがないと誰かがテーブルを新しく追加したとか、カラム名を変えたとか、データ型をintからlongに変えたとかやる度に、自分の開発環境もそれに合わせてSQLを実行しないとアプリが動きません。

使いこなすと便利なので必ず覚えましょう。Railsを学習する上では絶対にスキップできない必須の機能です。

migrationファイルはどこに生成される

 

migrationコマンドの実行

 

migrationの取り消し(ロールバック)

 

migrationの状態確認

 

次回はmigrationの使い方を学びます。

Railsの開発ではGemの使いすぎに気をつけよう

Gemをむやみに使うべきではない?

中身を完全に理解できないGemは負債化する

いつまでもメンテされる保証がないので、動かないときは自分で直せるようになっている必要がある。ソースコードを自分でフォークして修正するか、一生懸命開発者にプルリクを投げるか。

特に注意が必要なGemの特徴

  1. 巨大である
  2. スターが少ない
  3. コア部分を拡張している
  4. 標準を変更する
  5. asset系のgem
  6. 標準ライブラリでできることをやっている

blog.attracie.com

継承とカプセル化のせいでカスタマイズしたい時に足かせになる

隠蔽され過ぎててどこをどういじればいいか分からない。結局、他人が書いたソースを一から読む羽目になって、自分で書いた方が早かったとなりガチ。

使わない機能まで一緒についてくる

依存関係で余計なgemまで引っ張ってきて重たくなる。
メンヘラな女の子の「きちゃった・・・」に通じるものがある。

標準の機能まで書き換えてくれちゃう奴がいる

標準メソッドをオーバーライドしてくれちゃう奴も・・・
こういう罠があることは十分に認識しておこう

kakurenboの重大な欠点はActiveRecordのdestroyを完全に置き換えようとして、ActiveRecordの深い箇所まで改変し、保守が高コスト・高頻度になっていることです。

rails既存の機能を置き換えるgemは地雷だと考える
rails既存の機能を置き換えるコードを絶対に書かない

alfa.hatenablog.jp

自分で書けるけど、書く時間がもったいないときは使ってもいい

大前提として、自分でもその機能は時間をかければ実装することができるとかの場合にだけ積極的に使おう。自分がどういう風に実装すればいいのか説明できない場合は使うべきではない。少なくとも内部実装がどうなっているかは確認しよう。

十分検証しよう

何度か使ったことがあるgem、盛んに修正が行われているgem、コミニュティが活発なgemを使おう。そして、できるだけ小さい機能だけを提供しているgemにとどめておこう。なんでもやってくれるgemはコントロールが難しい。

Ruby on Rails の凄さは結局Rubygemsの凄さ(散々disったけど・・・)

基本的にはGemを積極的に使うことを推奨したいけど、基本がわからないうちは用心して使おう。Gem使わないRails開発なんて正直なんのメリットもないですしね。

qiita.com

 

Ruby on Rails 学習に役立つサイトと、書籍の紹介

ブログ

Railsの開発公式ブログ

http://weblog.rubyonrails.org/

Rails個人開発者のブログ

Justin Weiss

参考書籍

 

プログラミング言語Ruby

Rubyの生みの親、松本氏が上梓した本。安定、安心のオライリー出版。
Rubyを学習するはじめの一冊にふさわしい本。
たとえ読まなくても手元に置いておくだけでプログラミングの能力が上がるような気がする。

Perfect Ruby on Rails

Rubyでパーフェクトになりたい人は必携の一冊。

メタプログラミング Ruby

Rubyの開発の切れ味を一味も二味も鋭くしてくれる。魔法が使えるようになると言われている。

Ruby on Rails 4 アプリケーションプログラミング

詳しい内部実装は後回しにして、とりあえず現場で動くコードを書きたい人向け。ただし、Rubyについては十分に知っておく必要があるので、Rybuの言語仕様は必ず事前学習しておく必要がある。