ひこたろうのシンプルライフ

ひこたろうのブログです。 毎日、コツコツ勉強しているときに気づいたことを適当に書いています。

RDocでAPIドキュメントを作成する

RubyにはコードからAPIドキュメントを生成するRDocというツールが付属しています。


まず、以下のようにRubyのプログラムに、RDoc用のコメントを書きます。

# frozen_string_literal: true

# 本を表すクラス
class Book
  # Bookオブジェクトの作成
  # ==== 引数
  # * +title+ - タイトル
  # * +author+ - 著者
  # * +publisher+ - 出版社
  # * +isbn10+ - ISBN(10桁)
  # * +publish_date+ - 出版日(yyyy-mm-dd)
  def initialize(title, author, publisher, isbn10, publish_date)
    @title = title
    @author = author
    @publisher = publisher
    @isbn10 = isbn10
    @publish_date = publish_date
  end

  # Bookオブジェクトの文字列を返す
  # ==== 戻り値
  # * +String+ - Bookオブジェクトのインスタンス変数を半角スペースで区切った文字列
  def to_s
    "#{@title} #{@author} #{@publisher} #{@isbn10} #{@publish_date}\n"
  end
end

RDoc用のコメントを書いたら、以下のコマンドでドキュメントを作成します。

$ rdoc book.rb


rdocコマンドが正常に実行されると、docディレクトリ以下にHTMLファイルが作成されます。
このディレクトリ内のindex.htmlを開くとドキュメントが表示されます。
f:id:hikotaro_san:20190423081035p:plain



Rdocの詳細はこちらを参照してください。
docs.ruby-lang.org

メソッド呼び出しの丸カッコを省略する

Rubyではメソッド呼び出しの丸カッコを省略することができます。

# 丸カッコありのメソッド
puts('Hello, Ruby!')

# 丸カッコなしのメソッド
puts 'Hello, Ruby!'

ただし、メソッドの第1引数にハッシュを渡そうとするときは、必ず丸カッコを付けてメソッドを呼び出す必要があります。
これは、丸カッコを省略した場合、第1引数のハッシュリテラルの波カッコがブロックの波カッコだと解釈され、構文エラーとなるためです。

p {japan: 'yen'}
# => syntax error, unexpected ':', expecting '}'

p ({japan: 'yen'})
# => {:japan=>"yen"}

○○以上△△未満を判定する

○○以上△△未満を判定する場合、不等号を使うよりも範囲オブジェクトを使った方が簡単に書けます。

# 不等号を使う場合
def liquid?(temperature)
  0 <= temperature && temperature < 100
end

# 範囲オブジェクトを使う場合
def liquid?(temperature)
  (0...100).include?(temperature)
end

標準ライブラリ、組み込みライブラリ、gem

Rubyは大きく3つのライブラリがあります。

ライブラリ 説明
標準ライブラリ Rubyに標準で含まれているライブラリです。このライブラリは新たにインストールする必要はありませんが、明示的にライブラリを読み込む必要があります。 date、csvjsonなど
組み込みライブラリ Ruby 本体に組み込まれているライブラリです。 このライブラリに含まれるクラスやモジュールは、 require を書かなくても使うことができます。 String、Integer、Array、Hashなど
gem 有志の開発者が作成している外部ライブラリです。このライブラリはインストールが必要で、明示的にライブラリを読み込む必要があります。 railssinatra、rpecなど


標準ライブラリやgemのライブラリを利用する場合は、明示的にそのライブラリを読み込む必要があります。
ライブラリを読み込む場合は、以下の構文を使います。

構文 説明
require ライブラリ名 指定したライブラリを1回だけ、読み込みます。 require './sample'
load ライブラリ名 指定したライブラリを、毎回、読み込みます。 load './sample.rb'
require_relative ライブラリ名 requireはRubyを実行しているディレクトリパスが起点になりますが、require_relativeは自分が存在するディレクトリパスが起点になります。Rubyの実行ディレクトリの影響を受けずにライブラリを読み込みたい場合に使います。 require_relative '../app/sample'

Sinatraをインストールする

Sinatraで作るWebアプリ用のディレクトリを作成します。

$ mkdir sinatra_app


次に、sinatra_appディレクトリに移動し、bundlerをインストールします。
その後、bundle initでGemfileを作ります。

$ cd sinatra_app
$ gem install bundler
$ bundle init


Gemfileに以下の2行を追加します。

gem 'sinatra'
gem 'sinatra-contrib'


SinatraSinatra::Contribをインストールします。

$ bundle install --path vendor/bundle


sinatra_appディレクトリ内にSinatraを使ったRubyファイルを作ります。
myapp.rb

require 'sinatra'
require 'sinatra/reloader'

get '/' do
    'Hello Sinatra!'
end


プログラムを実行します。

$ bundle exec ruby myapp.rb

エンジニアリング組織論への招待 を読みました

Tech系Podcatなどでよく話題になる「エンジニアリング組織論への招待」を読んでみました。

エンジニアリングとは、誰かの曖昧な要求から具体的で明確な何かを実現することであり、「曖昧さ」すなわち、「不確実性」を減らし、「具体的・明確さ」を増やす行為であるという定義は目からウロコでした。

この本で答えが見つかるというより、これからを考えていくための指針となるものだと思いました。

Rubyをインストールする - rbenv編

Homebrewを使って、rbenvをインストールします。
rbenvを使用すると、複数のバージョンのRubyを状況に応じて簡単に切り替えることができるようになります。

$ brew install rbenv 

[参考]
github.com


コマンドラインから日本語を入力する場合、readlineというライブラリをインストールする必要があります。

$ brew install readline


.bash_profileにrbenvの設定を追加し、設定を有効にします。

$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile


インストールできるRubyのバージョンを調べます。

$ rbenv install -l |more


指定したバージョンのRubyをインストールします。

$ rbenv install 2.6.2

rbenvとRubyが正しくインストールされたかチェックします。

$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
||>


Rubyのバージョンをインストールしたバージョンに切り替えます。
globalを指定すると、インストールしたコンピュータ全体で同じバージョンのRubyを利用できるようになります。
>||
$ rbenv global 2.6.2