恋するプログラムをSinatraでWebアプリにするPart.1[CHAPTER3 ほんとに無能]
記事の概要
『恋するプログラム』の[CHAPTER3 ほんとに無能]で作成するチャットボットプログラムを、そのままコンソールアプリケーションとして、Macのターミナルで動かします。
Webアプリにする作業に取り掛かる前に、まずは『恋するプログラム』の基本構造を学びます。
注:この記事ではまだ、Webアプリと呼べる代物は出てきません。
目次
開発環境
- OSX 10.11.2 El Capitan
- テキストエディタ: MacVim
- ターミナルエミュレータ: Macターミナル
- シェル: zsh
- パッケージマネージャ: Homebrew - Ruby 2.0.0p645
- バージョンマネージャ: rbenv
参考記事
Rubyの開発環境構築は、こちらの記事を参考にさせていただきました。
protoと会話する
入力した文字列に対し、「ってなに?」を追加した応答を返すチャットボットを作成します。
アプリケーションディレクトリの構成
~/programinlove
|- proto.rb // 基本的なチャットボットプログラムの全てが詰まったメインファイル
ソースコード
サンプルプログラムのままだとエラーが出たので、マジックコメントを削除しました。
サンプルプログラムでは、Ruby1.8で文字コードにシフトJISを使用しているため#! ruby -Ks
が必要らしいのですが、Ruby2.0でこの記述があるとシンタックスエラーになるようです。
また、Ruby2.0ではデフォルトでUTF-8が適用されるため、UTF-8の環境ではマジックコメントが不要らしいです。
コードは、
//proto.rb #! ruby -Ks class Responder
の部分を
//proto.rb class Responder
に変更して、[chapter3-3]のタグを付けて置いてます。
実行結果
このproto.rb
をターミナルで動かすと、会話気分が楽しめます。
~/programinlove $ruby proto.rb Unmo System prototype : proto > こんにちわ proto:What> こんにちわってなに? > あいさつですよ proto:What> あいさつですよってなに? > Huh? proto:What> Huh?ってなに? > (#^ω^)
protoの応答の種類を増やす
入力した文字列とは関係無く、用意された3種の応答から1つをランダムに返すチャットボットを作成します。
アプリケーションディレクトリの構成
~/programinlove
|- proto.rb // 入力と出力をするだけのメインファイル
|- unmo.rb // チャットボットオブジェクトのモデル
|- responder.rb // 応答オブジェクトのモデル
ソースコード
やはりサンプルプログラムのままでは動かなかったので、マジックコメントの削除の他に、requrire
をrequire_relative
へ変更しました。
Ruby1.9.2から、カレントディレクトリがrequire
のロードパスから除かれたそうで、今回のプログラムでは
ファイル数も多くないためrequire_relative
を使って動かしました。
コードは、
//proto.rb #! ruby -Ks require 'unmo' def prompt(unmo)
の部分を
//proto.rb require_relative 'unmo' def prompt(unmo)
に、
//unmo.rb require 'responder' class Unmo
の部分を
//unmo.rb require_relative 'responder' class Unmo
に変更して、[chapter3-4]のタグを付けて置いてます。
実行結果
このproto.rb
をターミナルで動かすと、噛み合わない会話が楽しめます。
~/programinlove $ruby proto.rb Unmo System prototype : proto > こんにちわ proto:Random> きのう10円ひろった > それは良かったですね proto:Random> きのう10円ひろった > そんなに嬉しかったんですか? proto:Random> きのう10円ひろった > oh proto:Random> 今日はさむいね > そうですね proto:Random> チョコたべたい > あ ちょっっと proto:Random> 今日はさむいね >
参考書籍
関連記事
- 恋するプログラムをSinatraでWebアプリにするPart.0[はじめに]
- 恋するプログラムをSinatraでWebアプリにするPart.2[CHAPTER4 あこがれのGUI]①
- 恋するプログラムをSinatraでWebアプリにするPart.3[CHAPTER4 あこがれのGUI]②
- 恋するプログラムをSinatraでWebアプリにするPart.4[CHAPTER4 あこがれのGUI]③
- 恋するプログラムをSinatraでWebアプリにするPart.5[CHAPTER5 辞書を片手に]
- 恋するプログラムをSinatraでWebアプリにするPart.6[CHAPTER6 感情コントロールの魔術師]①
- 恋するプログラムをSinatraでWebアプリにするPart.7[CHAPTER6 感情コントロールの魔術師]②
- 恋するプログラムをSinatraでWebアプリにするPart.8[CHAPTER7 学習のススメ]①
- 恋するプログラムをSinatraでWebアプリにするPart.9[CHAPTER7 学習のススメ]②
- 恋するプログラムをSinatraでWebアプリにするPart.10[CHAPTER7 学習のススメ]③
- 恋するプログラムをSinatraでWebアプリにするPart.11[CHAPTER8 文章を作り出す]
- 恋するプログラムをSinatraでWebアプリにするPart.12[CHAPTER9 ノビィ、ネットワークにつながる]
- 恋するプログラムをSinatraでWebアプリにするPart.13[おわりに]