おもこん

おもこんは「思いつくままにコンピュターの話し」の省略形です

徒然Ruby(25)minitestのmockの詳細

minitestについて連続して2回書いてきました。 「minitestはドキュメントが少ない」という人がいますが、私も同感です。 例えば、モックとスタブの説明も少ないです。 そこで、今回はmock.rbのソースコードを参考に、モックの私的ドキュメントを書いてみまし…

徒然Ruby(24)minitest、mock、stub

今回もminitestの話です。 mockとstubに焦点をあて説明します。 単語帳プログラム コマンドラインとのインターフェース wordbook.rb のテスト スタブ(stub)とモック(mock) lib_wordbook.rbとそのテスト input.rb CSVクラス db.rbとそのテスト wordtest.r…

徒然Ruby(23)minitest、ripper

アプリ作成の記事でminitestを使いました。 今回はminitestについて、また一般にテストについて、私の考えを書こうと思います。 テストとは 一般にテストはプログラムのバグを除くために広範に使われている手法です。 開発に従事している方は既に良くご存知…

徒然Ruby(22)public、private、protected

今回はメソッドの呼び出し制限ついて説明します。 呼び出し制限にはpublic、private、protectedの3つがあります。 メソッドの公開と非公開 メソッドとレシーバ 呼び出し制限 publicメソッド self privateメソッド protectedメソッド まとめ メソッドの公開と…

徒然Ruby(21)特異メソッド、名前空間、モジュール関数

今回は特異メソッド、特異クラス定義、名前空間、モジュール関数について説明します。 特異メソッド クラスメソッド selfを使った定義 クラスメソッドの継承 モジュールの特異メソッド 名前空間 特異クラス定義 モジュール関数 定数の名前空間 特異メソッド …

徒然Ruby(20)アプリ制作、インストール、テスト

2023/11/4追記 この記事の内容は古くなり、不適当な部分があります。 それはGitHubにあるCalcレポジトリが大幅に更新されたことによります。 そのため、下記の記事の代わりとして、GitHubページの徒然なるままにRuby -- アプリ制作、インストール、テストを…

徒然Ruby(19)Case文

if〜elsif〜・・・〜else〜endは皆さん良く使うでしょうか? これは場合分けで良く使われる方法です。 これと同様の制御構造にcase文があります。 Cのswitch文に似ていますが、より強力な機能を持っています。 if-else-endよりも高い能力があるといえます。 …

徒然Ruby(18)Lambda

Procオブジェクトを生成するメソッドlambdaについて説明します。 lambdaの使い方 lambdaはKernelモジュールのメソッドで、使い方は前の記事のprocと同じです。 lamdaの後にブロックを書き、そのブロックがProcオブジェクトになります。 a = lambda{|x| print…

徒然Ruby(17)Procオブジェクト

今回はブロックを一般化したオブジェクトProcを説明します Procオブジェクトとは Procオブジェクトの作り方 Procオブジェクトの使用例 Procオブジェクトをブロックとして使う メソッドとブロックの違い ローカル変数の違い return、next、break Procオブジェ…

徒然Ruby(16)yield、Enumerable、リフレクション

ブロック付きメソッドの作り方を説明します。 eachメソッド eachとyieldの実例 EnumerableモジュールとEnumeratorクラス 引数の展開、block_given?メソッド リフレクション eachメソッド ブロック付きメソッドの代表格であるeachが何をしているかを考えてみ…

徒然Ruby(15)モジュール

モジュールには名前空間とミックスイン(Mix-in)の2つの機能があります。 ここではミックスインについて説明します。 モジュールの定義 モジュールの定義とクラスの定義は似ています。 クラスの定義にはclassキーワードを使いますが、モジュール定義ではそ…

徒然Ruby(14)サブクラス

クラスの親子関係 サブクラスの定義 サンプルデータの作成 Statクラス プログラムの実行 クラスの親子関係 Rubyのクラスには親子関係があります。 あるクラスの子をサブクラスといいます。 サブクラスは複数作ることができますが、親クラス(スーパークラス…

徒然Ruby(13)演算子の再定義

Rubyの演算子とその再定義について書きます。 Rubyの演算子 Rubyのドキュメントによると、次のような演算子があります。 表の「意味」は私が付け加えたもので、正確ではなく「およそ」「良く用いられる場合」についての説明です。 優先度 演算子 意味 高い :…

徒然Ruby(12)クラスとインスタンス

今回からクラスとインスタンスを定義、生成する方法を説明します クラス定義とインスタンスの生成 インスタンス変数 initialize メソッド オブジェクトの例 ラインエディタ クラス定義とインスタンスの生成 はじめはごく簡単な例から始めます。 クラスはclas…

徒然Ruby(11)Kernelモジュール

Kernelモジュールのメソッドはどこでも使うことができます。 そのメソッドの中には便利で有用なものが多いです。 バックティックとsystemメソッド exit p, pp, printf, sprintf $stderr rand raise require eval test バックティックとsystemメソッド バック…

徒然Ruby(10)便利なメソッド

ここでは私が便利だと思ったメソッドを紹介します。 配列の便利なメソッド map inject sort その他の配列でよく使うメソッド to_sメソッド <<メソッド chomp、chop、strip系メソッド lengthまたはsize Time.now 配列の便利なメソッド map mapは配列で最も使…

徒然Ruby(9)実数、ファイル

実数 実数はそれほど使わないオブジェクトだと思います。 しかし、どんな言語にも実装されているものですし、全然使わないこともないので、ここで取り上げようと思います。 Rubyのドキュメントでは実数を「浮動小数点のクラス」と呼んでいます。 ここでは「…

徒然Ruby(8)シンボルとハッシュ

(追記)ハッシュをシンボルテーブルに使う例を追加しました(2022/9/20) 今回はシンボルとハッシュについて説明します。 シンボルテーブル シンボル ハッシュ ハッシュの例 ハッシュを使ったシンボルテーブル Rubyのドキュメントには、シンボルについて次…

徒然Ruby(7)文字列と正規表現

文字列は最も使うオブジェクトのひとつです。 特にウェブ・アプリケーションでは、コンテンツだけでなくHTMLのタグやCSSを含めすべてが文字列です。 Rubyは文字列オブジェクトのメソッドが充実しており、またパターンマッチのための正規表現も充実しています…

徒然Ruby(6)配列

配列は、どのプログラミング言語にもあると思います。 複数の要素を一括して扱うことができるのが配列です。 Rubyの配列はメソッドが充実しているので、プログラムを効率的、機能的に書くのに役立ちます。 配列のリテラル 2次元配列 配列のメソッド 配列の変…

徒然Ruby(5)ローカル変数、文字列、インスタンス

今回の目標はインスタンスです。 インスタンスを説明するために、ローカル変数と文字列オブジェクトを事前に扱います。 ローカル変数 変数にはローカル変数、インスタンス変数、クラス変数がありますが、今回はローカル変数のみ説明します。 ローカル変数は…

徒然Ruby(4)トップレベルのメソッド定義

今回はメソッド定義です。 メソッド定義はRubyの核心ですが、今回はトップレベルに限って説明します。 この限定によって、内容はかなり易しくなっています。 トップレベルに限ればメソッド定義はCの関数定義とほとんど変わりません。 メソッド定義と実行 メ…

徒然Ruby(3)ブロックとイテレータ

前回の整数の後半の内容はあまりプログラミングで使われない内容になっていました。 すみません。 今回は極めて有用なことを書きます。 ブロックとイテレーションです。 繰り返し 同じことを何回もやるときのブログラムについて述べます。例えばHello world…

徒然Ruby(2)整数

徒然なるままにRuby(2)整数 整数 Rubyで整数を使うことができます。 print 10 print "\n" example2.rbに保存して実行すると、 $ ruby example2.rb 10 $ 計算 整数は計算できます。 print 1+2 print "\n" print 10-3 print "\n" print 2*3 print "\n" prin…

徒然なるままにRuby(1)Hello world

「徒然なるままに」をネットで調べてみると、「することもなく、手持無沙汰なのにまかせてという意味」とありました。 まさに、自分の現状を言い当てた言葉。 しかも、ブログに書くネタもなかなか思いつかない日々。 今回はそんな自分が、思いつくままにRuby…

Jekyll初級編(2)GitHubへの問い合わせ

GitHubへの問い合わせ機能を使う JekyllとGitHub Pagesを連携させるとします。 GitHubに情報を問い合わせ、GitHubのレポジトリの一覧を表示する方法について書こうと思います。 ポイントは2点あって、 jekyll-github-metadata gemを使う データ(_dataディレ…

Jekyll初級編(1)英語と日本語のあるウェブ

多言語のウェブサイト構築 Jekyllの勉強を兼ねてブログを書いたおかげで、だいぶ分かってきました。 それをまとめた「はじめてのJekyll + GitHub Pages」が出来上がり、一区切りですが、これからはその続編を書こうと思っています。 前回が入門編でしたので…

日本語が難しい

この3日ほど「はじめてのJekyll+GitHub」の手直しをしていた。 内容の間違いも少なくなかったが、それ以上におかしな日本語が多くて時間がかかった。 自分の文章力の低さにへこんでいる。 おかしな文章は意図的に書いているわけではないので、あらためて文…

【森を見よ】マイナスの数の掛け算

マイナスの数の掛け算について書きます。 よくある間違いに、マイナス✕マイナスがマイナスになる、というのがあります。 正しくはプラスになる、と教わるのですが「なぜ?」となってしまうのです。 そう思う理由は、 プラス✕プラスがプラスになるから、マイ…

【森を見よ】2✕3の呪縛

算数で教わる掛け算 小学校の算数で「2✕3は2が3個」と習います。 つまり 2✕3=2+2+2 ということですね。 「みかんが2つ入っている袋が3つある。みかんは全部でいくつ?」 この問題は2✕3で解くんだよ、と教わります。 そのとき、これを3✕2と…