Rails Tutorial 0章:事前基礎知識学習1


1.事前基礎知識編

私がRailsを学び始めて最初に躓いたのが、ライブラリ・フレームワークといった謎の言葉達でした。
正直言ってプログラミング言語もいっぱいあるらしいし、何から始めればいいのかさっぱり・・・。
一つ一つ Googleで検索して言葉の意味を検索したりもしましたが、しっくりきません。

Ruby on RailsとはWebアプリケーションフレームワークです。そもそもWebアプリケーションフレームワークとは、動的なウェブサイト、Webアプリケーション、Webサービスの開発をサポートするために設計されたアプリケーションフレームワークのことを言います。フレームワークは日本語では「枠組み」というふうに言われますが、まさにその通りで、このRailsもプログラミング言語のRubyで使えるフレームワークなのです。Railsの基本理念は「Don’t Repeat Yourself(DRY)」、「Convention over Configuration(CoC)」でそれぞれ「同じことは繰り返さない」、「設定より規約」という意味になります。
引用:https://techacademy.jp/magazine/7011

理解力の乏しい私にはこの文章では理解できませんでした;つД`)

私の言葉で言い換えるとフレームワーク=テンプレート(雛型)です

みなさん、Microsoft WORDやEXCELなどを使って履歴書を一から作った事ありますか?
私は約15年前の学生時代にEXCELを使って自分で履歴書を一から作らさせられました。
今時代に履歴書を白紙状態から作るなんてことはないと思います。
履歴書の雛型(テンプレート)をダウンロードして必要な情報を埋めて履歴書を作りますよね?
それと同じでWEBアプリケーションも雛型を元に必要事項を埋める事で最低限の機能を持ったWEBアプリが作れる時代になっているみたいです。

RailsはRubyというプログラミング言語でWEBアプリケーションを作る時によく利用されるテンプレート

余談ですが、Pythonというプログラミング言語ではRailsの利用はできません。
PythonではWEBアプリケーションを作る為にdjangoというフレームワークがよく利用されている様です。
フレームワークは共通概念も多いので一つフレームワークを使ったアプリ開発を行うと、こんな風にやるのね~とイメージが掴めて別のフレームワークで開発を使用する際にも活きるようです。また現在のWEBアプリケーションは様々な言語が組み合わされて作られているそうで、Railsは主にログインやユーザー管理部分などウェブアプリケーションに必要な基本的な部分を作る為に使われている様です。
例えば、最近話題のAI(機械学習)の機能を持ったウェブアプリケーションを作りたい場合は、
機械学習が得意なpythonというプログラミング言語で機械学習部分を作成し、ウェブアプリケーションの基本的な部分はRuby on Railsで作って組み合わせる事が可能とのこと。

ライブラリって何?

フレームワーク」は、よく「ライブラリ」という言葉と混同されがちですが、ライブラリというのは特定の機能を提供し、プログラムの中でそれらを呼び出すことで動作するものです。
引用:https://techacademy.jp/magazine/7011

これも私の言葉で言い換えるとライブラリ=パーツ(部品)です

また履歴書を例にしますが、氏名を書く欄、写真を張る場所、学歴・職歴を書く欄、趣味・特技を書く欄などの様々なパーツが組み合わさって履歴書というテンプレートが出来ています。

履歴書と同じようにWEBアプリケーションもいろんな部品が組み合わさってテンプレートが出来ています。
その個々の部品の事をライブラリと呼ぶ様です。
例えば、ログイン機能を簡単に実装する為にdeviseというライブラリ(部品)があります。
一から作ると(。´・ω・)ん?わけわからないどうやって動いてるの?
ってなるログイン機能もdeviseという部品を使うと比較的簡単に実装出来ます。

プログラミング言語の得意分野・不得意分野

RubyはRailsがあるのでWEBアプリケーション開発が得意分野。
javaは大規模な分散処理が得意だったり、pythonは機械学習が得意らしいです。

何故、プログラミング言語に得意分野・不得意分野があるかというと、アプリケーションはライブラリ(部品)を組み合わせて作るからです。pythonは機械学習用の多くの部品が既に存在し、天才達が新たな部品を開発したり、今ある部品を改善してくれてくれたりしています。一方でRubyは機械学習用ライブラリが少なく、同様の機能を実装する為には部品を一つ一つ自作していく必要があります。
このような差がプログラミング言語の得意・不得意を持つ要因となっている様です。

セイト先生のWeb・IT塾 主要プログラミング言語16選!特徴と初心者向けおすすめ度まとめ
プログラミング言語の得意分野などが開設されていて分かりやすい動画でした。
頭のいい方々は説明も上手なんですね。
セイト先生のWeb・IT塾 【Web/IT業界あるある】締め切り、プログラミング中、エンジニア面接
学習の息抜きにこの動画も見てみました。
特に後半のエンジニア面接部分は非常に興味深かったです。
少しRuby on Railsを頑張ろうってモチベーションUPがアップしました。

まとめ
  • フレームワーク= WEBアプリケーション用に用意されたテンプレート
  • ライブラリ  = WEBアプリケーション用に利用できるパーツ
  • Rails     = Rubyで使えるWEBアプリケーション用フレームワーク