私が独断と偏見で要約する。
目次
- Rubyとは
- 環境構築
- コマンド
- shebangとmagic-comment
- magic-comment
- Hello world
1. Rubyとは
Rubyとはまつもとゆきひろによって開発されたオブジェクト指向のスクリプト言語である。彼は「Rubyの言語仕様策定において最も重視しているのはストレスなくプログラミングを楽しむことである (enjoy programming)」と述べている。
以下URLでブラウザから実行できる。p 'A'
と入力してRun
ボタン押下すると"A"
と出る。
なお、似た名前の偉人がいる。私は同一人物かと思っていた。
人物 | 偉業 |
---|---|
まつもとゆきひろ(Matz) | Ruby開発者 |
ひろゆき(西村博之) | 2ch開発者。「うそはうそであると見抜ける人でないと(掲示板を使うのは)難しい」の人 |
私が思うRubyの長所・短所
楽しく書けるところもあれば、不快なところもある。
長所
- 1行で書ける構文がたくさんある
- ヒアドキュメントが多機能
- シェルや正規表現と連動しやすい
ri
,irb
,erb
,rake
などの便利コマンドがある
短所
- クロージャが乱雑で残念
- 特異クラス、特異メソッドがわかりにくい
end
がウザい- ドキュメントがしょぼい
2. 環境構築
git clone https://github.com/anyenv/anyenv ~/.anyenv echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(anyenv init -)"' >> ~/.bash_profile anyenv install --init -y anyenv install rbenv exec $SHELL -l rbenv install $(rbenv install -l 2>/dev/null | grep '^[0-9]+.[0-9]+.[0-9]+$' | tail -1)
3. コマンド
コマンド | 概要 |
---|---|
erb | テンプレートエンジン。 |
gem | パッケージ管理ツール。 |
irb | 対話インタフェース。REPL。 |
rake | ビルドツール。タスクツール。 |
rdoc | ドキュメント生成ツール。 |
ri |
Rubyのドキュメント。 |
ruby | Ruby本体。 |
gem
gem
gem install ...
サードパーティ製ライブラリのインストールなどに使う。
irb
irb
irb(main):001:0> quit
すぐにRubyのコードを動作して試せる。ちょっとしたコードの動作確認をしたいときによく使う。quit
のあとENTERキー押下で終了。
erb
テンプレートエンジン。
a.erb
<ul> % [1,2,3].each do |i| <li><%=i%></li> % end </ul>
erb a.erb
<ul> <li>1</li> <li>2</li> <li>3</li> </ul>
rake
タスクランナー。
require 'rake/testtask' require 'rake/clean' task :default => [:test] desc 'Run test_unit based test' Rake::TestTask.new do |t| t.libs << "test" t.test_files = Dir["../test/**/test_*.rb"] t.verbose = true end
rakefile
があるカレントディレクトリでrake
を実行する。
rake
ri
ヘルプ。
ri -l
ri Array
4. shebangとmagic-comment
#!/usr/bin/env ruby
正確には以下のほうがよいらしいが、上記コードでほぼ動作するので問題ない。
#!/bin/sh # -*- ruby -*- exec ruby -x "$0" "$@" #!ruby puts 'Hello world!'
shebangの下にマジックコメントとして文字コードを書ける。だがデフォルトでUTF-8なので何も書かなくていい。
# coding: utf-8
6. Hello world
a.rb
#!/usr/bin/env ruby p 'Hello world !!'
ruby a.rb
"Hello world !!"
require
されても実行されないようにするには以下。
#!/usr/bin/env ruby if __FILE__ == $0 p 'Hello world !!' end
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux