Ruby on Railsで仏教プログラミング|この寺院(ブログ)のアンテナサイト的なものを作ってみました

御参拝、誠に有難う御座います。住職(管理人)の修羅観音です。



最近、ProgateのリニューアルしたRubyとRuby on Rails講座を一通りやり終えて、実験的にこしらえたWEBアプリケーションを、Herokuにデプロイ(公開)しております。


ここ最近は、仏教関連の話ばかりでしたから、久々のRubyで仏教プログラミングです。

と、言いつつも、いきなり「Ruby on Railsで仏教プログラミング」と、表題がRuby on Railsになっているのですがね。



クラスについて、全くやっていないのに、いきなり飛んでしまいましたが、クラス等については、ProgateのリニューアルしたRubyコースで学んでおります。

もう何周かすることになるでしょうし、Rubyのクラスについては、その時を機会として、またまとめて言語化して、お伝え出来ればと思います。



今回は、少々先走り気味の話にはなりますが、Ruby on Railsを使えば、こういう事も出来ますよ、という事で、お伝え致します。



先を見据える事は、未来に執着しかねない怖さも、仏教から学んではおりますから、躊躇はしたのですがね。

RubyやRuby on Railsをある程度習得したけれども、「本番になって、何を作ればいいのかさっぱりわからん!」という方にとっては、一つの指標にはなりましょう。

スポンサーリンク

Ruby on Railsで仏教プログラミングを始める前の注意事項

Ruby on Railsで仏教プログラミング、初めてのRails仏教プログラミングという事ですが、今回は試作品を公開しつつ、かなり端折った説明を致します。



例えば、「bundleがどうのこうの」「rails consoleで云々」という事は、殆ど出て来ません。

ターミナル(黒い画面)での操作など、そういった事は最低限しかここではお伝え致しません。

いつかは詳しくやらんといかんでしょうが、とりあえずは、そんな感じで。



そうですね、譬えるならば、ロードス島戦記のOVAアニメーション版(1980年代の方)を、ご存じでしょうか。

若い人なら「OVAとはなんぞや?」というレベルでしょうが、ロードス島戦記という作品の1980年代にあったOVA版は、第1話が、ある程度進んだ場面から始まりましてね。

そして、第2話からが本来的な物語の始まり、という構成でした。



ありませんかね、そういう、1話目である程度の全体像を把握出来るような話にしておいて、そこに至るまでの話を第2話からやるという構成の物語って。

私、最近のアニメーション事情は、アトム・ザ・ビギニングを飛び飛びで観るくらいしか知らんので、最近の作品の構成はよう知らんのですが。



今回の話は、そういう感じで掴んで頂ければと存じます。

Ruby on Railsで仏教プログラミング|なにはともあれ、まずは試作品を公開(そのうち消します)

何はともあれ、Ruby on Railsで仏教プログラミングを進めるに辺り、まずは私が作った試作品を、お伝えしておきます。

Herokuは、何やら制限があって、その制限を超えると有料になるそうで、その対策として、そのうち消します。



まずは、こちらをご覧下さいまし。



参照先:「Herokuにデプロイした試作品「修羅観音アンテナ」」



難とも安直な名前ですが、こういう、アンテナサイト的なウェブサイトを、観たことがある人も多いかと存じます。

今回は、私のブログのRSSを使って、この寺院(ブログ)のみの更新情報を表示するアンテナサイトをこしらえていく過程を共有したいと存じます。

クリックできる箇所をクリックすると、この寺院(ブログ)の、各記事に飛べる仕様にしております。



それでは、早速このようなアンテナサイトを、共に作って参りましょう。

Ruby on Railsで仏教プログラミング|Cloud9を使ってgem i RailsやRails newをしていく

今回の「Ruby on Railsで仏教プログラミング」は、いつものようにCloud9を使って、開発・プログラミングしていきます。



あせらず、ゆっくりと共に進めて参りましょう。
スポンサーリンク



まずはワークスペースを作って、Railsをインストールしたりと土台を作る

まずは、Cloud9にログインして、開発するためのワークスペースを一つこしらえて頂きます。

下の画像にあるように、「Workspace name」に、英文字で好きな名前を入力し、赤丸を付けている「Blank」をクリックして、緑色のボタンを押します。






そうすると、ワークスペースに移動します。



そうしたら、下の画像で赤い矢印で示したところをクリックすると、ターミナルと呼ばれる場所に入力ができるようになります。






そこまで行ったら、「gem i rails」もしくは「gem install rails」と入力して、クリックして頂きます。

すると、ずらーっと文字が出て来ますから、また入力できるようになるまで暫く待ちます。



フォルダ作成やファイル作成が終了して、ターミナルに入力が出来るようになったら、今度は「rails new (付けたい名前)」を入力します。

例えば、「rails new app」とか、そんな感じで。

そうすると、左側のフォルダやファイルが可視化されている場所に、ずらりとフォルダやファイルが出来ている事が分かります。






ファイル群やフォルダ群が出来ましたら、今度はターミナルに「cd app」と入力して頂きます。

そうすると、「appフォルダ・appディレクトリ」で作業をするという、作業場所を移動する事になり、そこで色々と作業をする事が出来るようになります。

もの凄く乱暴な解説ですが、今回はとりあえずは、そういう感じで覚えておいて頂いて、詳しい内容は、また別途、もしくは詳しい本等で学び治して頂ければと存じます。



これで、土台作りはひとまず完了です。

コントローラーとブラウザで表示するためのviewファイルを作る

土台が出来たら、次はコントローラーと、ブラウザで観る事が出来るようにするためのviewファイルを作ります。

これは、先ほどやった「rails g 何何」というコマンドを使えば、作る事が出来ます。

ターミナルにコマンド入力をするだけで、サクッと色々と作る事が出来るのが、Railsの魅力です。

だからこそ、さくさく出来るが故に、理解せぬままでアプリケーションが開発出来てしまう事の落とし穴に嵌まるという話も、あるのですがね。



今回は、そこまで突っ込んだ話はせずに、あくまで「こんな事が出来ますよ」的な話ですから、そこには触れない回に致します。



土台が出来たので、次はターミナルで「rails g controller antena index」と入力して頂きます。

「rails g controller (任意のコントローラーファイル名) (任意のviewファイル名)」というコマンドを入力すると、左側にあるフォルダ群・ファイル群の中に、新しくファイルが出来上がっております。






上の画像で、赤い丸を付けている箇所がありますが、そこで作られているファイルが確認出来ますね。

「routes.rb」にも丸が付いておりますが、これは元々あるファイルです。

この「routes.rb」も操作する事になりますから、あなたが探しやすいように、赤丸を付けておきました。



確認したら、上の赤丸が付いているファイルをクリックして、ファイルに色々と入力できる状態にして頂きます。

すると、ターミナルの上の画面で、操作できるようになっているでしょう。



ここまできたら、いよいよファイルに色々と書き込む、プログラミングをしていく時です。


routes.rbとコントローラーファイルを完成させる|コントローラーは6行だけでおしまい!

これから、いよいよプログラミングしていくわけですが、まずは「routes.rb」から操作していきましょう。

「routes.rb」には、最初、このように書かれている箇所があるかと存じます。
get ‘antena/index’

そこを、下のように変更します。
root ‘antena#index’

これは、大雑把に言うと「indexページをトップページにしますよ」となるように書き換えた、と考えて頂ければ宜しいかと存じます。



続いて、コントローラーを操作して参りましょう。



今回、コントローラーであなたが書く事になる行数は、2行です。

クラスの継承や、最初から書かれているindexアクションの行を入れて、6行です。

いや、ほんと。




これだけです。

これで、コントローラーファイルの作業は終わりです。



解説していきますと。



まず、最初の行は最初からありますから、ここは弄りません。

二行目に「require ‘rss’」とありますが、これはRubyで使える「rssライブラリ」というものを使えるようにするために書いております。



参照先:「Rubyリファレンスマニュアルのrssの項目」



上の参照先を観て頂ければ分かるかと存じますが、最初から書かれている「def index」と「end」の間に書かれている一行に、取得したいrssのURLと、インスタンス変数を書き込みます。


@rss = RSS::Parser.parse(“取得したいrssのURL”)



これは、もの凄く大雑把に言うと、@rssというインスタンス変数に、取得したいrssのURLの内容を代入しますよ、というものです。



この6行で、取得したいrssのURLを用いた、アンテナサイトの土台を作る事が出来ました。



尚、「def」については、こちらでお伝えしておりますから、今のうちに復習して頂ければと存じます。



参照記事:「Rubyで仏教プログラミング|defを使ってメソッドを定義する」

index.html.erbを操作して、ブラウザで表示出来るようにする

次は、ブラウザで表示出来るように、index.html.erbを操作して参りましょう。



「何何.html.erb」は、HTMLやCSSを使ったウェブブラウザでの表示が出来る上に、Rubyのプログラムも埋め込めるというファイルです。

自動で作られたindex.html.erbには、「Antena#index」がh1タグで囲われていたりと、標準装備的な書き込みが語ざます。

これらは一旦消して、次のように入力します。


<h2>アンテナ</h2>
<% @rss.items.each do |entry| %>
<%= entry.title %><% end %>



肝心なところは、「<% %>」で囲われている部分ですね。

erbファイルでは、「<% %>」を使う事によって、Rubyのプログラムを使う事が出来ます。

また、「<%= %>」と、「=」を使えば、ブラウザでプログラムしたものが表示されるようになります。



例えば、「ya = “やあ”」という変数を使ったものがあるとしましょう。

「<%= %>」では、ブラウザで「やあ」と表示されますが、「<% %>」では表示されない、という仕組みです。



さて、今回の<% %>や<%= %>ですが、この中身、どこかで観たという覚えはありませんかな。

「each do」というところから、each文を使っている事に、気がつかれたかと存じます。



参照記事:「Rubyで仏教プログラミング|配列を使って高僧を表示・出力していく」

参照記事2:「Rubyで仏教プログラミング|ハッシュを使って高僧の名前と年齢を表示・出力する」

参照記事3:「Rubyで仏教プログラミング|配列とハッシュの合わせ技」



ここでは、「@rss.items.each」とする事で、コントローラーで書いたURLのrssから、複数のitem要素(記事や記事タイトル等)を、順繰りに取り出しますよ、としています。

そして、「|entry|」として、entryという変数に代入していく、という書き方をしております。

大体のアンテナサイトは、記事タイトルをクリックすると、その記事へアクセス出来るような仕様です。

それを習って書いているのが、each文の次の行です。



そして、HTMLを勉強した人ならご存じでしょうが、記事へ飛べるようにリンクタグを使っている事が読み取れるでしょうか。

この行では、「%= entry.title %>」とする事で、entry変数に代入された記事の記事タイトルが入るようにしております。

更に、「<%= entry.link %>」と組み合わせる事で、記事タイトルから記事へ飛べるようにしております。



Rubyでは、each文はendで閉じますが、ここでは「<% end %>」として、きちんと閉じていることも、気をつけて下さればと存じます。



た表示された時に観に見やすくするため、<ul>と<li>というタグも用いて、更に<p></p>というタグも使って、1行ずつ見やすく表示されるように施します。



そうして出来上がったのが、こちら。






ここまでが大まかな骨組みで、骨組みだけをブラウザで確認すると、こうなります。

Cloud9を使って、ブラウザで確認する場合は、「rails s -b $IP -p $PORT」とターミナルに入力すると、確認することが出来ます。






これを、Bootstrap等を使って、形を整えたのが、最初の方で公開しましたサイトで御座います。

Ruby on Railsを使えば、このように少ない行・プログラミングにて、アンテナサイト的な代物が開発出来る、という事を、感じ取って頂ければと存じます。

Ruby on Railsで仏教プログラミング|最後に注意事項とRubyの復習案内をば

今回は、Ruby on Railsで仏教プログラミングと題しまして、私の寺院(ブログ)を材料にしながら、アンテナサイトをこしらえる過程を、共にして参りました。



最後に注意事項をば。



今回のアンテナサイト試作品作成・開発は、私の寺院(ブログ)を使っております。

他の方々のウェブサイトから、勝手に引っ張ってきてはおりません。

もしも、上の試作品で、新たに別の人のブログが追加されていたとしたら、その場合は許可を取っているものであると、考えて頂くと宜しいかと存じます。



また、Ruby on Railsは、ターミナルにコマンドを入力すると、サクッと作れていきます。

とても便利で有り難いのですが、だからこそ、「なぜ、これがこのようになるのか」を、理解せぬままに突き進むと行った事にもなります。

出来る事ならば、Ruby on RailsはRubyを使っているフレームワークですから、Rubyも合わせて勉強し、習得していくことが望ましい事でありましょう。



私も、Rubyのクラスを学んでいたから、データベースで何が成されているのかを、理解する事に繋がりましたからね。

もっとも、理解したといっても、全部を理解しているわけでは無く、もっともっと修練積み上げていかねばなりませんが。



それにこの事は、私が仏教思想であったり、仏教的な考え方や在り方と共にあるために、このように思うという部分も、否めません。

私は、宇宙の始まりはビッグバンだ、と言われても、それだけで終わらない、面倒なやつでしてね。

ビッグバンがあったのはあったとして、その前を知りたがる性質(さが)でして。

「なんで、こう、なるの!(30年程前のネタです)」と、そんな感じで。



その一助となる話は、こちらでまとめております。



参照記事:「Rubyで仏教プログラミング総集編|まとめページ」



私にとっては、仏教についてまとめてアクセス出来るアンテナサイト的な何かを作る、良い土台となりました。

いやはや、便利で有り難い御縁に御座います。



合掌、礼拝

スポンサーリンク