TECH EXPERT Day3の記事になります。3日目になりましたが、世間はまだ3連休の真っ只中ということで渋谷の街は浮かれています。
そんな浮かれた街を横目に見ながら必死こいてプログラムしてます。泣
今日の記事ではRailsの環境構築や実装で学んだことの整理と復習をしていきたいと思います。正直量が多すぎてパンクしそうですし、どれを覚えるべきなのかも良くわらないのですが(まあ結局全部必要なんだと思います)、とりあえず思考の整理をしたいと思います。
ただちょっとその前に、少し読者の方から質問をいただいたので現時点の所感をお伝えできればと思います。
質問1:テックエキスパート難しそうすぎない!?
まず1つめの質問ですが、私のブログの内容などを見ていただいて「テックエキスパートってめちゃくちゃ難しいんじゃない?」と思われている方もいらっしゃるようです。
結論からお伝えしますと、テックエキスパートが難しいというよりは、こんな短期間で仮にもプロのエンジニアを目指すのであればこれくらいのスピード感・量・レベルでやっていかないとどうにもならないということなのではないかな?と思います。
テックエキスパートは資格などをとるところではありませんので、最終的に就職できない!みたいになるよりは、大変な思いをしてでもどこの企業にも就職できるようなプログラマーになれた方が良いと思います!
質問2:テックエキスパートの教材分かりにくいという話を聞く
これに関しては本当にその通りだと思います。例えばで言うと、Progateでは何十もの項目に分けて解説している内容をペラっと1ページで説明している感じです。
例えば昨日の記事でゲッターセッターについて説明しましたが、そもそもゲッターセッターの説明がない中で急にゲッターセッターが入っていて、後から「あ、実はここはこうでした笑」みたいな感じの雑な説明です。
なので入校する前にprogateを1周くらいはやっておかないと本当に分けわからないです。笑(まあやってても分からないところばかりですがw)
ただこの雑な教材も悪い事ばかりではありません。進むスピードは尋常じゃなく早いですし、分からない事が多いので結局自分で調べることになり、それが最終的に自分の力になっていくのです。
例えばprogateとかだと、とても丁寧に解説してくれているので「何となく分かった」と言う状態に陥りがちです。
しかしテックエキスパートでは、分からないと「マジで分からないやばい!」となるので自ずと自分で調べることになります。
それって学習においては非常に良いことなので、この雑な教材はあえてそう作られているのもかもしれません。笑
あとそもそもprogateでは学ばないこともたくさんあります
管理人自身、入校前にちょこちょこprogateをやっていて、「ああこういうもんなんだな」と思っていたのですが、テックエキスパートに入って実際にやってみると「progateってただのおもちゃじゃん・・・」と感じました。
というのもプロゲートでは、ただコードを書くだけで、そもそもローカルでアプリケーションの開発をする環境の構築であったり、それこそ実際のサーバーを契約してそこにアプリケーションを入れるなんてことはしないわけです。
つまりどこまでいってもおママゴトのままで、実際の現場の作業とはかけ離れたものなんですね。
なので、そういった意味でも初心者の方は特にプログラミングって、こうなっているんだ!という発見がたくさんあると思います。
なのでこれまでのところ、テックエキスパートに入ってとても良かったなと思っています。(まだ3日ですが。笑)
ということで自分の復習タイムです
ということでここからは自分の復習タイムに入っていきたいと思います。不明瞭な部分は徹底的に、備忘録な部分はさらっと記載していきます。また中には記述が間違っている箇所(特にスペルミス)もある可能性は高いです。
HTML5の特徴は構造化タグ
1989年にティム・バーナーズ・リーによって開発されたHTMLは1997年にHTML4.0が発表されたあと、2008年にようやくHTML5.0が発表されました。
そんなHTML5.0は従来のHTMLと異なり、ブラウザベンダーやそれに賛同した人たち主体で進行していたプロジェクトだったため、非常に現場で使いやすい仕様となっているそうです。(例えば <header>タグがあったりそんなやつですね)
で、そんなHTML5.0のもっとも特徴的な部分が「構造化」と言われています。
それが以下のような構造化タグです。
・header
・footer
・main
・section
・article
といった感じです。このようなタグがあることによって、検索エンジンなどが、単に文字列としてコードを読むのではなく、文脈なども理解できるようにしていこうという狙いなどもあるようです。
なので構造化されたHTMLはSEOにも良いと言われていますね。
参考記事:HTML5タグ articleやsectionなど 構造化タグがわかる 初心者向け
忘れがちなCSS線の形など
cssではborderなどのプロパティを持ってくることで線を引くことができます。で、その値に何を持ってくるかによって、点線や破線など様々な線の形を実現することができます。
以下引用from:http://www.htmq.com/style/border.shtml
・none→ボーダーなし
・hidden→ボーダーなし(noneと似て非なるもの)
・solid→1本線
・double→2本線で表示
・groove→立体的に窪んだ線
・ridge→立体的に隆起した線
・dashed→破線
・dotted→点線
書き方
.sen{
border: 1px solid #cccccc;
}
.nisen{
border:1px double #000;
}
こんな形で記載することができます。
rbenvというRubyを管理できるツール
rbenvというツールを使えばrubyのバージョンを管理したり、インストールしたり、ディレクトリごとのバージョン指定をしたり、、様々なことができます。
おそらくrbenvは「Ruby environment」の略とのこと。読み方は「アールベンブ」
このツールを使うためにはまずはhomedrew(macのシステム管理みたいなやつ?)でアールベンブをインストールする必要があります。
インストールが出来たら下記のようなコマンドを使ってRubyを指示することができます。(ターミナルで指示)
こちらの記事に綺麗にまとめていただいていたので引用します。
#インストール済みバージョン一覧 $ rbenv versions #インストール バージョン $ rbenv version #インストールできるバージョン一覧 $ rbenv install -l #インストール $ rbenv install 2.2.2 # 更新 $ rbenv rehash #グローバルバージョン指定 $ rbenv global 2.2.2 #ディレクトリごとのバージョン指定 $ rbenv local 2.2.2 from:rbenvでよく使うコマンド
MySQLとはなんぞや
マイエスキューエルの名前を聞いたことがある方は多いかもしれません。これは、簡単に言うとデータベース管理システムのことらしいです。
これはデータを、複数の行と列で構成された「表(テーブル)」の形式で取り扱うリレーショナルデータベースというやつらしいです。(覚える必要はありませんが)で、主要なDBはだいたいこのRDBらしいです。
そして主に行うことができるのがデータの保管・更新・削除・検索とのこと。そしてその操作をするための言語をSQLと呼んでいるそうです。
参考記事:https://www.kagoya.jp/howto/webhomepage/mysql/
Gem(ジェム)ってなんやねん
Rubyをやっていると頻繁にGemというやつが出てきます。このジェムというのはジェムという形で公開されているサードパーティのライブラリの事だそうです。(公式より)
簡単に言うと他の人が作ったショートカットプログラムみたいなものでしょうか。例えば我々も企画書を書く際に、誰かのテンプレートを用いて書いたりすると思いますがそんな理解で良いのではと思います。(厳密には違いますが)
で、そんなGemの中には例えば deviseというログイン機能をすぐに実装できるようなものがあったりと非常に便利なツールなのです。(ワードプレスで言えばプラグインのイメージですね)
で、このgemの管理をしてくれるものにbundlerというものがあります。
bundlerとはなんなん
もうややこしいのですが、先ほどのgemってワードプレスのプラグインのようにバージョンがあるみたいなんですね。
そのバージョンを管理して誤作動が起きないようにしてくれるのがパッケージ管理ツール「バンドラー」の役割です。
Rails でGemを追加する際にはこのBundlerを使う
で、ここで学んだ事がいきてくるのですがRuby on rails(これもそもそもジェムの一種らしいですが)では、gemを追加する際にこのバンドラーを使います。
STEP①→Gemfileに追加したいgemを記載
STEP②→当該ディレクトリで$ bundle installを実行
STEP③→サーバー再起動 $ rails s
リナックスコマンド
Linuxコマンドはターミナルで指示を出せるコマンド(文字列?)の事です。例えば
「ls」と打てば、現在ターミナルがいるディレクトリの直下のファイルを一覧で表示してくれたりします。
ディレクトリを移動したい場合は cd ~/移動したい場所 と打てば移動することができます。その他にもpwdなどターミナルで使用するコマンドって感じですね。
参考記事:https://eng-entrance.com/linux-what-is-command
rake db:create
このコマンドはRails で実行するコマンドです。データベースに対して何か操作を行いたい時のコマンドがrake dbというコマンドで、先ほど紹介したMySQLなどのデータベースに対して指示を出すことが出来ます。
$ rake db:creare
このreka db:createを実行することによってconfig/database.ymlでの設定内容に基づきデータベースを新規作成することができます。
※ちなみにこれはrakeファイルを元にdbを作るので、そのファイルがないディレクトリにいる時に実行するとエラーになるので注意。
似たやつにrake db:migrate
このrake db:createに似たやつにrake db:migrateというのがあります。(まあデータベースを触ると言う部分が同じなだけですが)
ちなみにこのワードテックアカデミーの記事にはこう記載がありました
Ruby on Railsではマイグレーションによってデータベースの構造を管理しています。
上記コマンドを実行するとdb/migrateディレクトリに存在する全てのマイグレーションを実行します。マイグレーションが実行される場合はマイグレーションファイルに記載された内容に基づき構造が定義されます。
いやいやいやマイグレーションファイルってなんやねん笑
ということなのですが、マイグレーションファイルというのはデータベースの設計図みたいなものです。マイグレーションファイルの中にテーブルのカラム数などを入れて、このrake db:migrateを実行することでテーブルが生成されます。
Railsでデータベース(エクセルみたいにid2のテキストはこれみたいなやつ)が実行(生成)される手順
①rails g model (作りたいモデルクラスの名前) コマンドでデータベースの元になる空箱的なやつを生成(テーブル作成のためのファイルやそのテーブルに対応するモデルファイルなど)
※モデルというのは実体はデータベースのテーブルに対応するRubyのクラスです。クラスなので大元の設計図みたいなものです。
※”モデルクラス”は1個1個のデータベースのイメージ(データベースaみたいな)
参考記事;https://qiita.com/morikuma709/items/ab863f04a6b6f502c427
rails generate model Databasenonamae columnnonamae:string othercolumn:string
みたいな書き方をする事でモデル作る時に同時にカラムの型や名前も決めてしまう事ができる。※これをしていない場合はマイグレーションファイルにchangeメソッドを直接きさいする必要があります。 ※後から追加したい場合は、このマイグレーションファイルのchangeメソッドに記述をしてrake db:migrateをすることでアップデートできる。
参考記事;https://qiita.com/right1121/items/0a54ba76dc4261702d1e
②そして①の時に同時に先ほど説明したマイグレーションファイル(1つ1つのデータベースの設計図)も作られています。
③しかしこの状態では詳細な設計図があるだけで、まだテーブルは作られていないので rake db:migrateをする事でテーブルを生成するのです。
カラムの型はいろいろあるので参考記事
参考記事;https://qiita.com/Kaisyou/items/07840398e60cedcd2f0f
ちなみに一度変更した(rake db:migrate)したデータを元に戻すには
$ rake db:rollback
スキーマファイル?
今後追記します!
レコードとカラム
そもそもですが、テーブルの横の1行のことをレコード、縦の1列のことをカラムといいます。
ちなみにですが特定のレコードを抽出するため、テーブルにはidカラムが絶対存在する。
DB作成時には予約語に注意
データベースのMySQLにはマイエスキューエルがよく使う言葉を予約語として定義しています。予約語をテーブルやカラムに使うとエラーになるので注意
参考:https://dev.mysql.com/doc/refman/5.6/ja/reserved-words.html
RailsはMVC(エム・ブイ・シー)方式のフレームワーク
MVCとは、ソフトウェアの設計モデルの一つで、機能を「Model」(モデル)、「View」(ビュー)、「Controller」(コントローラ)の三つの役割に分離して実装し、それらが連携して処理を進める方式。 引用:http://e-words.jp/w/MVC.html
このMVC方式にするとviewはデザイナー、コントローラーとルートはエンジニアみたいな感じで分けられて作業がしやすいとか、細かな指示が分かれているので把握しやすいとか色々あるみたいですが、下記の記事が非常に真を突いているのではと思います。
参考記事;https://www.javadrive.jp/rails/ini/index4.html
コントローラーの生成方法
忘れがちなコントローラーの生成方法を備忘録
$ rails g controller
参考記事:https://www.javadrive.jp/rails/ini/index4.html
viewファイルは単純にアクション名.html.erbファイルを作成。※ちなみにviewファイルは1つのアクションに1ファイル必要。名前もコントローラーのアクションの名前に合わせる。
モデルと対応しているコントローラの名前は必ず複数にする必要がある。
Day3まとめ
ということで、めちゃくちゃ駆け足にアウトプットしました。まだまだ雑な部分があるので、追ってブラッシュアップしていきたいと思います。
やはりデータベースの話などが出てくると、いよいよプログラミングぽくなってきて、難しいながらも楽しい限りですね。