たくろぐ!

29歳プログラマーの思うことと備忘録

1.1 はじめに

目次

1.1.1 前提知識
1.1.2 この本における取り決め

1.1.1 前提知識

キーワード

  • プログラミング言語

    Rails TutorialにおけるRuby言語のこと。
    ほかのプログラミング言語に、C言語JavaJavascriptではない)、PHPPython、go言語などがある。

  • フレームワーク

    上記プログラミング言語にて開発をする際にその開発効率を高めるためのツールみたいなもの。
    Rubyフレームワークには、Rails以外にもSinatra、cuba microframework、Ramaze、HANAMI、Padrinoなどがある。

    eng-entrance.com

    RailsRuby言語の実質的なデファクトスタンダードとなっているフレームワークである。
    圧倒的におすすめ。

  • DSLドメイン固有言語)

    ドメインというのは番地を指していて、特定の事業領域のこと。
    さきほどフレームワークの項で、テストに特化したフレームワーク(テスティングフレームワークと言う)の話をしたが、Railsでの開発に非常に相性のいいRspecというテスティングフレームワークがある。
    これは汎用のプログラミング言語の書き方を工夫して、新たな言語ともいえる構文で書かれる。
    この構文と言うのがDSLであり、これはプログラミング言語よりも自然言語的(=普段使う言葉に近い)であることが多い。

  • 設計思想

    Railsというフレームワークにはいくつか特徴的な設計思想がある(後述)。
    ここではそのうちのいくつかを。

    • REST

      これはしょっぱなは難しい概念。
      語弊を恐れず簡単に言うと、
      HTTPメソッドとURLから特定のアクションに紐づけること。
      例えば、
      /usersというURLに、getメソッドでサーバにリクエストを送ると(get /users)、controller(Railsプロジェクトの一部品)のindexアクション(=実体はメソッド)が実行されてユーザ一覧画面が表示される。
      という一連の流れをフレームワークが担保(=事前の取り決めにおいて保証)してくれてるってこと。
      これはconfig/routes.rbというファイルで定義しておく。

  • API

    これもとても難しい概念。
    これを叩くと、JSON形式のファイルが返ってきて、ブラウザ側で解析して画面を表示してくれる。
    ワイもよくわかってない。

  • ライブラリ

    開発効率を高めるためのツールという意味では、個人的にフレームワークという概念とすごい似ていると思ってる。
    必要な機能を実装(=プログラムを書いて実現)する上でインストールするツール群のこと。

    • gem

      Rubyにて用意されている開発効率を高めるためのツール群みたいなもの。

  • HTML

    フロントエンド部分(=見た目の画面)を作成するためのマークアップ言語。
    間違えやすいが、プログラミング言語ではない。
    どちらかというとDSLに近い言語だと勝手に思ってる。
    プログラマがプログラミングをする人なら、
    HTMLでコーディングをする人はコーダー。
    若干ニュアンスが異なる。
    デザイナーがコーダーを兼ねることも多く、プログラマとは違う人種である。

  • CSS

    フロントのデザイン領域を編集するための言語。
    文字色を赤色にしたり、大きくしたり、背景に画像を埋め込んだり、レイアウトを2カラムにしたり、スマホ対応にしたりと見た目のデザイン全般をこれで編集する。

  • Javascript

    フロントエンドの技術でほぼ唯一のプログラミング言語
    これがなくてもWebアプリケーションは作成できるが、現在ではほぼ必須の技術であり事実上のデファクトスタンダード
    他のプログラミング言語と比べても技術の移り変わりがかなり激しくJavascriptフレームワークも多々ある(し、キャッチアップするのが大変と言われている(俺調べ))。

  • SQL

    データベース専用言語。
    現在ではフレームワーク側である程度SQLを吸収してくれるものの、アプリケーションのパフォーマンスを改善するためにもアプリケーションを作る上でかかせない技術である。
    プログラミング言語ではないので、習得はHTML同様それほど難しくはない。(俺調べ)

1.1.2 この本における取り決め

キーワード

  • ディレクト

    サーバやPC内部のフォルダをツリー構造に置き換えたもの。

  • テスティング

    テストを実行すること。
    テストというのはアプリケーションを作成する上で欠かせない作業の一つで、実際に画面を叩いてテストしたり、モジュール(=小さい機能単位のファイル群)単位でエラーが発生しないかどうかテストしたりする。
    これを経てクライアントに納品することになる。
    これをしたからと言って必ずしもエラーやバグが起こらないかと言うと、起こる←Wow!!
    テスト観点が漏れていたり、テスト実施者が未熟であることに起因する実施手順ミスなどはよく聞く。
    最近では自動化されていて、RubyのテスティングフレームワークとしてはMinitestやRspecがある。
    自動化することのメリットは多々あるので自身で調べること。

  • コマンドライン

    サーバに命令を送信するためにはコマンドを実行する必要があるが、そのためのインターフェースである。
    入出力装置であり、コマンドを入力すると、その結果が出力される。
    サーバの状態や操作が可能になる。

  • ターミナル

    コマンドラインと同義。
    個人的見解としては、コマンドラインWindowsユーザが多用し、ターミナルはLinuxOSディストリやMacOSユーザが多用するイメージ。