大田区から発信するゆるゆる日記

主にITエンジニアに関する備忘録日記。たまに趣味も。何か不備があればコメント頂けると幸いです。Twitterアカウント https://twitter.com/ryuzan03

Ruby

爆速学習のRuby編です。

 

※下記の内容に不備がありましたら、コメント頂けると幸いです。また、下記の内容をご使用頂ける場合は自己責任でお願いします。

【目次】

 

Rubyとは?

オープンソースオブジェクト指向スクリプト言語です。

日本人のまつもとゆきひろさんが1995年に開発しました。

Javaと同じくらい歴史があります。

 

楽しくコードが書けること(「Enjoy for Programing!」)で有名です。

 

そして、なにより開発者が日本人であるので、日本語のコミュニティやライブラリなどの情報がたくさんあります。

 

名前の由来

当時のまつもと氏の会社の同僚が7月生まれで、7月の誕生石がルビーだったからのようです。

 

特徴

・直感的に実装したい機能をコーティングでき、生産性が高い言語

・シンプルな表記や文法ルール

・プログラミングを書いてすぐに実行できる

・必ず戻り値を返してくれる

・日本で開発されたプログライング言語で初めて国際企画として認められた

・日本の工場規格(JIS)に認定されている

Macには最初からRubyがインストールされている

Ruby on Railsが使える

・近年でWeb系の企業で良く使われてきている

 

人気の理由

特徴の部分と被りますが、

・直感的に実装したい機能をコーティングできるので、ストレスフリーで開発できる

Ruby on Railsが使える

・日本で開発されたプログラミング言語で、日本語の情報が多い

ことが挙げられます。

 

デバッグ方法

・putsを使用して、引数の文字列(to_sメソッドが必要)を画面に出力する

・pもしくはppを使用して、引数のオブジェクトを画面に出力する

・loggerを使用して、Rubyプログラム実行時に、変数値をログファイルに残す

 Rubyのファイル冒頭に「require」で宣言する必要があります

 ※詳しくはこちら

・例外処理を組み込んで、エラー該当部を確認する

 

例外処理の仕組みがない言語では、処理が完全に終わったかどうかを1つ1つ確認しながらプログラムを書く必要があります。

 

その他

世界でのシェア率は6番目です。また、日本での求人数は7番目で、平均収入ランキングでは4番目に位置するようです。

(参考サイト:

今学ぶべきプログラミング言語ランキング【2019年最新版】 | CodeCampus)

 

Ruby on Rails

Rubyが使えるWebアプリケーションフレームワーク

2004年に誕生しました。

 

動的なサイト(ユーザ毎に仕様が変わるサイトなど)を作るに適しており、さらに効率良くWebシステムやWebベースの業務システムを開発できます。

 

近年はRuby on Railsを使う企業が増えてきているようです。

 

Ruby on Railsの事例

クックパッド

Airbnb

・Hulu

GitHub

Twitter(現在はScala)

 

他の言語との比較

PHP

1995年に誕生。

ダイナミックなWebページ開発を目的に開発された。

Pythonの次に簡単に学べる言語かも。

 

・メリット

使い方の説明や解説などのナレッジが蓄積されている

データベースサポートが幅広い

この3つの言語の中で求人量が多い

 

・デメリット

PHPだけで構成されたプログラムはハッキングに弱い傾向にある

元々はスクリプト言語であり、オブジェクト指向ではない

 

・事例

Wikipedia

Facebook

PixelCrayons

 

Python

1992年に誕生。

高い生産性と読みやすいコードを目的に開発された。

 

・メリット

高い生産性と読みやすいコード(学習しやすい)

2番目に求人量が多い

オブジェクト指向

Djangoが使える

データ構造がしっかりしている

 

・デメリット

文法ガイドラインが難しい

classとmethodがない

 

・事例

Google

YouTube

 

まとめ

要件やチームメンバーによってどの言語が使われるかは変わりそうですね。

あと、フレームワークの性能の良さ。

 

個人的には、WEBサービス開発企業の求人を見ていると、PHPRubyPythonの順で求人が多い気がします(完全に勘です)。

 

転職のために初めてプログラミングを勉強するけど、明確な目的がないのであれば、求人が多いPHPから学んだ方が良いかもしれません。

 

ただどのプログラミング言語を選んでもしっかりと学ぶことができれば、他のプログラミング言語でも応用が効くと聞きますので、学び始めたら徹底して理解することが大切かもしれません。

 

プログラミングの流れ

・ファイルにプログラムを書いて保存する

・PCに対して、書いたプログラミングを実行するように命令する(Macではターミナルで命令したりする)

Rubyプログラムは拡張子をrbにする決まりがある

※コードは原則上から読まれていく

 

用語

スクリプト言語

コンパイルが一切不要で、そのままプログラムを実行することができる言語。

 

コンパイル

機械がプログラムを実行するために、人間が書いたソースコードを機械命令に変換すること。

 

オブジェクト指向

全てのデータがオブジェクトとして表現されている。

継承・カプセル化ポリモーフィズム(多態性)などの機能が使えるので、コードの量が少なくて済みます。

 

カプセル化

勝手に外部からデータにアクセスできないようにすること。

想定外のアクセスで、本来書き換えてはならないデータを誤って書き換えることがなくなります。

 

継承:

既にある機能を引き継ぎ、効率よくソフトウェア開発を行う機能。

Rubyではクラスの継承のことですね。継承することで、メソッドが別のクラスで利用できるようになります。

クラスの継承には、親クラスと子クラスの関係があり、元となるクラスを親クラス(スーパークラス)、親クラスのメソッドを引き継ぎ新しく作成するクラスを子クラスと呼ぶ。

 

ポリモーフィズム多態性):

同じ名前のプログラムを複数定義でき、それぞれのデータに合わせて使うことができること。

 

プログラミング:

人間の意図した処理を行うようにコンピュータへ指示を与えること。

コンピュータは指示された通りにしか動きません。なので、コンピュータが理解できる言葉である「プログラム」を作る必要があります。これがプログラミングです。

 

プログラム:

コンピュータがするべき仕事の手順や内容をコンピュータが理解できる言語で書いている文章。

 

コマンドラインインターフェース:

コンピュータに対してキーボードからコマンドという文字を打ち込んで操作を行う方法。

Macでデフォルトで入っているのがターミナル。

linuxコマンドを入力することで、プログラムを実行する命令をPCに与える。

 

log:

Ruby実行中に、途中経過や処理結果などをテキストファイルに書き込んだもの。デバッグなどに使用されます。

WEBアプリ開発では、とりあえずlogを見れば原因が大方分かります。

 

logレベル:

logレベルによって、logの重要度が変わります。

これを利用すると出力するログを分けることもできます。

 

アルゴリズム

コンピュータで、ある目的を達成するための処理の手順のこと。

(例)

目的/1から10までを順に足し合わせてその都度表示する

処理の手順/

・1から10まで1ずつ増える変数1を定義する

・足し合わせた数値を格納する変数2を定義する

・変数1が10になるまで処理を繰り返すWhile文を書く

・While文の中に数値を足し合わせる処理を書く

・While文の中に足し合わせた数字を表示する処理を書く

 

スコープ:

ある変数を利用できる範囲のこと。

スコープの範囲外の変数を使うことはできない。

 

引数:

プログラムでメソッドなどを渡すことができる値。

スコープ外の変数をそのメソッドの中で使えるようにすることができます。

メソッド名を同じにしていれば、「メソッドを呼び出す部分」に書く引数と「メソッドを定義している部分」に書く引数の名前は、一致している必要はない。

 

今後に向けて

Rubyは、ストレスなく楽しくコードが書けるのが特徴のようです。

それは、

・全ての値がオブジェクトになる(オブジェクト指向)

・シンプルな表記や文法ルール

・書いてすぐに実行できる

・豊富で統一されたメソッド

・必ず返り値が返ってくる

が関係しているようです。

 

つまり、、、

・直感的にプログラムを実装できる

・覚えやすい、調べやすい

・プログラミングに没頭しやすい

・新しい発見や自分なりの表現ができる

から楽しくコードが書けるのではないでしょうか。

 

あとは、優秀なフレームワークRuby on Rails」があるのも魅力です。

 

そして、ここでもカプセル化の部分でセキュリティ面の話が出てきました。

 

エンジニアになる上でセキュリティ管理は必須ですね。

 

なぜセキュリティが必要なのか。これをしっかりと言語化したいと思います。

 

次はRuby on Railsの予定でしたが、その前に簡単にWebサービスにおけるセキュリティについて調べてみよるかもしれません。

 

参考資料

今学ぶべきプログラミング言語ランキング【2019年最新版】 | CodeCampus

今さら聞けない!Rubyとは【初心者向け】 | TechAcademyマガジン

【Ruby入門】loggerの使い方まとめ | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト