CentOS5.3にRuby on Railsを入れる、そして使う

なぜなら卒業制作で使ってみたいから。


CentOS5.3(32bit) をインストール

うちのデスクトップはHDDをリムーバブルにしているので、
普段使ってる Ubuntu * WinXPデュアルブートHDDは一旦退避して、
実験用HDD(300GB)を装着。

学校で使えるHDDと同じ、40GBの領域をパーティションで区切って、
CentOS32bit版をインストール。

ほとんどデフォルトのままだが、途中「今すぐカスタマイズする」にチェックを入れ、
「開発」カテゴリにある「開発ツール」と「開発用ライブラリ」を追加して進める。

インストール完了。

# yum update

だけしておく。


rubymysql を入れる


RoR 2.x系は、デフォルトでSQLiteが使われる。
けど、mysqlが使いたいのでrubyとともにインストールしておく。

# yum install ruby ruby-devel rdoc mysql mysql-server mysql-devel

(中略)

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
mysql i386 5.0.45-7.el5 base 4.1 M
mysql-devel i386 5.0.45-7.el5 base 2.4 M
mysql-server i386 5.0.45-7.el5 base 9.7 M
ruby i386 1.8.5-5.el5_3.7 updates 274 k
ruby-devel i386 1.8.5-5.el5_3.7 updates 555 k
ruby-rdoc i386 1.8.5-5.el5_3.7 updates 134 k
Installing for dependencies:
perl-DBD-MySQL i386 3.0007-2.el5 base 148 k
perl-DBI i386 1.52-2.el5 base 600 k
ruby-irb i386 1.8.5-5.el5_3.7 updates 68 k
ruby-libs i386 1.8.5-5.el5_3.7 updates 1.6 M

Transaction Summary
================================================================================
Install 10 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 20 M
Is this ok [y/N]: y


そこは張り切ってYesで。

Installed: mysql.i386 0:5.0.45-7.el5 mysql-devel.i386 0:5.0.45-7.el5 mysql-server.i386 0:5.0.45-7.el5 ruby.i386 0:1.8.5-5.el5_3.7 ruby-devel.i386 0:1.8.5-5.el5_3.7 ruby-rdoc.i386 0:1.8.5-5.el5_3.7
Dependency Installed: perl-DBD-MySQL.i386 0:3.0007-2.el5 perl-DBI.i386 0:1.52-2.el5 ruby-irb.i386 0:1.8.5-5.el5_3.7 ruby-libs.i386 0:1.8.5-5.el5_3.7
Complete!


Complete!ヒュー!


gem を入れる


Rubyの関連パッケージは、RubyGemsというパッケージ管理システムで管理する。
ということで、gemをインストールする。

RubyGemsソースコードをダウンロード。
現時点での最新版は1.3.4でした。

# wget http://rubyforge.org/frs/download.php/57643/rubygems-1.3.4.tgz

100%[=======================================>] 293,275 161K/s in 1.8s

15:33:46 (161 KB/s) - `rubygems-1.3.4.tgz' を保存しました [293275/293275]


そして解凍し、中にあるセットアップスクリプトを実行する。

# tar zxvf rubygems-1.3.4.tgz
# cd rubygems-1.3.4
# ruby setup.rb


ここでちょっと時間がかかる。数十秒?あと、

Oh-no! Unable to find release notes!


というメッセージが出るけど、開発者のお茶目さの表れなので
とりあえず気にしなくていい、そうな。


Railsのインストール

# gem install rails


カップラーメンができるくらいの間、待つ。
んで、できたら次へ。


Rubymysqlを使うためのパッケージをインストール

# gem install mysql
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.


ここに来てエラーが。
「Check the mkmf.log file for more details. 」
と言われたので、c言語のエラーが出力されたようなログを眺めてみる。
"/usr/lib"とか"/usr/lib/mysql"ってのがたくさん出ている。
ちょっとした試行錯誤を経た後、オプションでその場所を指定して実行してみる。

# gem install mysql -- --with-mysql-lib=/usr/lib/mysql
Building native extensions. This could take a while...
Successfully installed mysql-2.7
1 gem installed
Installing ri documentation for mysql-2.7...
Installing RDoc documentation for mysql-2.7...


成功した。
でも、ググってみると、mysql_configというファイルの場所をオプションで指定せよ、
という解決策がたくさん出てきました。
その場合はこういうオプションを付けて実行することになる。

# gem install mysql -- --with-mysql-config=/usr/bin/mysql_config


うーむ、今回のように、libの場所を指定という方法でもいいんですかね?
よく分かりません。わかりま千円。
これはよく分かるようになっておきたいけど、とりあえず今は先に進む。


ひとまず、これでインストールはできた。


mysqlの設定をしとく


mysqlを起動する。

# /etc/init.d/mysqld start
$ mysql -u root -p
Enter password: (何も入力しないでEnter)

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.45 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>


mysqlのrootパスワードを設定。

mysql> SET PASSWORD FOR 'root'@'localhost'=password('rootのパスワード');
Query OK, 0 rows affected (0.01 sec)


RoRの開発に使うデータベースを作っておく。

mysql> CREATE DATABASE dev;
Query OK, 0 rows affected (0.01 sec)


RoRmysqlの設定をする。
config/database.ymlというファイルを編集する。

$ vim config/database.yml

development:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: dev (さっき作ったデータベースの名前にする)
  pool: 5
  username: root
  password: (さっき設定したmysqlのrootパスワード)
  host: localhost


とりあえず、「development:」というセクション内にある
「database:」にさっき作ったデータベース名(dev)、
「password:」にmysqlのrootユーザのパスワードを設定する。
それ以外は放っとく。


RoRのサーバを起動しとく


RoRのプロジェクトを好き勝手にいじるためのディレクトリを作る。

$ mkdir rails
$ cd rails


HelloWorldを表示するためだけのプロジェクトを一つ作る。
データベースはmysqlを使う、というオプション付き。
オプションを省略するとSQLiteになる。

$ rails -d mysql hello


RoRのサーバを起動する。

$ ruby hello/script/server
=> Booting WEBrick
=> Rails 2.3.2 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2009-07-20 17:03:34] INFO WEBrick 1.3.1
[2009-07-20 17:03:34] INFO ruby 1.8.5 (2006-08-25) [i386-linux]
[2009-07-20 17:03:44] INFO WEBrick::HTTPServer#start: pid=29734 port=3000


ブラウザでhttp://localhost:3000にアクセスしてみて、

Welcome aboard
You’re riding Ruby on Rails!


というようなページが表示されるのを確認する。
これは、/hello/public/index.htmlが表示されている。


Hello Worldをやってみる


では、試しにHello Worldを表示してみる。

RoRのアプリとしては、publicディレクトリじゃなくて
appディレクトリ以下にMVC(Model, VIew, Controller)を配置する。
次の手順で作れる。


1)コントローラ Hello を作る

$ ruby script/generate controller Hello


これで、app/controllers/hello_controller.rb が作成された。


2)hello_controller.rbの中身をちょっといじる


Helloコントローラの実態は、HelloControllerクラス。
ここに、indexアクションを定義する。アクションの実態は
オブジェクト指向で言うところのメソッド。

$ vim app/controllers/hello_controller.rb

class HelloController < ApplicationController
  def index
    @message = "Hello, world"
    render
  end
end


3)ビュー index.rhtml を作る


さっき、Helloコントローラの中に定義したアクションと
同じ名前("index")を使って、rhtmlファイルを作る。
場所は app/views/hello/ 以下。

$ vim app/views/hello/index.rhtml


  
    <a class="keyword" href="http://d.hatena.ne.jp/keyword/Hello%20World">Hello World</a>
  

  <%= @message %>


4)ブラウザでアクセスしてみる。

http://localhost:3000/hello/index

を開くと、

Hello, world

とだけ表示される。そっけないけどできた(゚Д゚)

Bonanzaの保木さん

Bonanza」の作者、保木さんにインタビュー! - 日本電子専門学校 オープンソースシステム科 ブログ
http://www.jec.ac.jp/it-o/2009/07/bonanza.html

電設部のN先生が、いつのまにか東北まで取材に行っていた模様。

化学の概念をコンピュータ将棋のアルゴリズムに持ってくる。ふむふむ。
面白い!

ZDNetJapanで富永恭子さんの伝えるTOMOYO勉強会

ZDNet JapanさんのTOMOYO記事


ZDNetJapan
以前から、TOMOYO Linuxとその関連技術の歩みを、詳細でポイントを押さえた
一連の記事によって世の中に広く伝えてきた老舗ニュースサイト。
その一連の記事は、TOMOYO Linuxのいきさつを知るにあたって、
この上ない資料となるものだと思いますので、まだ読んだことのない人や、
僕のTOMOYO勉強会レポートを読んで「こんなんじゃ足りん!もっとkwsk!」と
感じた人はぜひじっくりと読んでみてくださいね。オススメです。



新記事キタ━━━━(*゚∀゚)━━━━ !!!!!


さて、そんなZDNet Japanで、7/3(金)に行われた伝説の勉強会、
TOMOYO Linux メインライン化記念勉強会の様子を伝える記事が公開されました。

OSS開発の新たな流れを予感させたTOMOYO Linuxメインライン化記念勉強会 - ZDNet Japan
http://japan.zdnet.com/news/os/story/0,2000056192,20396891,00.htm


読んでいると、当日、会場で感じた空気や登壇者・参加者の皆さんの表情を思い出します。
ZDNetさんの記事を読んで思ったことを書き留めておこうと思います。
以下、とくに引用元の記載がないものは上記記事からの引用です。



注目のTOMOYO勉強会

今回、この勉強会が話題となった背景には、セキュリティやLinuxの分野でその活動が注目されている
3つの勉強会との合同企画として実施されたことがある。


そうですよね。
自分はこの勉強会の開催をどこで知ったんだったかな。
YLUGとまっちゃ445両方のMLと、Twitterでの関係者のつぶやきか。
開催内容を見たとき、その豪華さに「すっげすっげ」とひとりごちたものです。


今年は電設部の二年生が、研究テーマの一つに
TOMOYO Linux」が挙げていたので(その他のテーマはRAIDとかiSCSIとか)、
これはみんなで行かざるを得ないと思い、僕は部会や電設部員MLなどで
「早く申し込もう!早く申し込もう!」と急かしたのでした。
「なんか本編より懇親会の方がすごいスピードで人数増えてるから
 宴会君のエントリ(懇親会の申込み)も急いで!」とか。
結果、10人強の電設部員が参加できました(暑苦しい先輩でゴメンナサイ)。


そして、参加した学生からは「本当に行ってよかったと思えるイベントだった。
まだまだ勉強しなければついていけない内容も多かったが、それこそ勉強しよう
というモチベーションが得られた」という感想がありました。
懇親会の参加費がまったく無料だった、というのも僕ら学生が参加しやすかった
大きな要因の一つかと思います。
そこは本当にTOMOYO Linuxプロジェクト、NTTデータのみなさんに感謝です。


学生がそんなに大群組んでくと人数枠を圧迫しちゃうんじゃないか、
他にも参加したい人はたくさんいるのに悪いんじゃないか、
という風にも思ったりもするのですが、そこは参加後のレポートで
しっかり参加者として情報発信したり、今後の勉学の糧として十分に
内容を消化したりという点を頑張ることでカバーしたい思います。




まっちゃだいふくさん(id:ripjyr)による発表

プログラムは、今回司会を務めた「まっちゃ445勉強会」代表、“まっちゃだいふく”こと
八尾崇氏による開会の挨拶から始まった。


まっちゃさんのお名前初めて知りましたw
「本名未公開」ってプロフィールをよく見てたから、今回バッチリ載ってて
ちょっとびっくり。

ところで、この勉強会の裏テーマの一つとして「ネット上での匿名性について」が
挙げられる気がします(F通のK崎さんとか、小sakiさんとか、小崎さんとか)。
だから、

とりあげていただいたのは大変ありがたいが、またもや掲示板のことが・・・。(=_=;

メインライン化記念勉強会の記事がZDNetに掲載 - よそ行き顔で


とは言っても、こうなっちゃった以上もう広まる一方ですねw
私も伝説の勉強会参加者の一人として、責任を持って掲示板のことなどを
後世に伝えていく所存であります!そう、その義務がある!
匿名性については(もう)気にしません!任せといてください!


・・・話がそれた。そう、まずまっちゃさんの発表です。


TOMOYO Linuxは今、「利用者増大 / More Enterprise User」のフェーズにある。


まっちゃさんの発表その1 では、TOMOYO Linux
現在どのような段階にきているのか、というお話がありました。
発表資料の4ページですね。


そうです。メインライン化まで来ました。
しかし、「これから」がまた肝心なんですよね。
実際に利用者数を増やさなければ、と。


当日は海外さんの用意された色紙に参加者で寄せ書きをしていましたが、
「おめでとう!」という内容が大多数である中、伊藤@b-markさんが
「おめでとう!『これから』ですね!」ということを書かれていたのも印象的でした。


まずTOMOYOを使ってみる、TOMOYOのMLに入る、バグを報告してみる、
ドキュメンテーションを進めてみるなど、オープンソースであるTOMOYO Linux
参加することは、「誰でも、その気さえあればできる」わけですから、
このブログを読んでくださっている人も、興味があればまずはML加入など
されてみてはいかがでしょうか。

TOMOYO Linuxユーザーのメーリングリストtomoyo-users」はコチラ。
 http://lists.sourceforge.jp/mailman/listinfo/tomoyo-users


まっちゃさんの発表その2では、全国の情報セキュリティ勉強会を紹介。

各勉強会の内容や、こんなに日本中でセキュリティ勉強会広まってるんだ!
ってのもすごいのですが、何がすごいってこれだけの情報をまとめ、
それぞれ把握し、関わっているまっちゃさんのエネルギーだと思います。
あのごくごく普通の体のどこからそんな機動力が出てくるんでしょう。すごい。
実は普通の体じゃない、ということか。



ぶほぉっ・・・

誌面に限りがあり、それぞれの発表を詳しく紹介することはできないが、勉強会の模様は参加者によって
動画やレポートとして紹介されている。興味のある方は、ぜひ参照していただきたい。
塚田朗弘氏 日本電子専門学校電設部「TOMOYO Linux メインライン化記念勉強会 レポート」


正直言って、このように自分のレポートに言及してくださったのは
非常に光栄です。嬉しい!ありがとうございますヽ(゚∀゚ )メ(゚∀゚)メ( ゚∀゚)ノ


が、不意打ちだったので吹いたw



オープンソースと勉強会の相性のよさ、イノベーションの外部化

 一方、吉岡氏は「カーネル読書会TOMOYO Linux」と題した講演の中で、オープンソース開発におけるリアルな現場での議論の必要性を説き、外部から発信するイノベーションの実現に「勉強会」が果たす役割を語った。


これはよしおかさん(id:hyoshiok)の発表「カーネル読書会とTOMOYO Linux」の中で出てくる言葉ですが、
これはこの日のTOMOYO Linux勉強会に無くてはならない言葉だったと思うんですね。
TOMOYO Linuxプロジェクトが体験・体現してきたものが、まさにそれだったのではないかと。

TOMOYO Linuxは、CELFやYLUGの勉強会という「会社の外部」で、その進むべき方向性について
活発な議論をして、そしてその議論で生まれたものを携えて進んできたわけですよね。
オープンソースカンファレンスなどのコミュニティの場で、Ubuntu JP チームの
協力を得てTOMOYOのブースを出した、というのもそうです。
そして、2ちゃんねるという、ある意味日本で最大級にオープンな場で行われた、スーパー小崎さんとのガチ議論。
(よしおかさんによるまとめ「TOMOYO Linuxに学ぶ説得術」がすごくわかりやすいです。)


今回のTOMOYO Linuxメインライン化という出来事は、よしおかさんの語る

  • 勉強会が生み出す価値
    • 知識の獲得
    • 人的ネットワーク
    • 価値創造エンジン

ということが、最もよく実践された例の一つになるのではないかと思います。




メインラインはみんなのもの

 「メインライン化はひとつの達成だが、本当に意味があるのは、そのプロセス。これは体験してみなければわからない。また、ソースコードは重要だが、Linuxの素晴らしさは、それ以上にLinuxを作る「人たち」が素晴らしいことだ。メインライン化をめざして、彼らが、いかに優れた技術と資質を持ってコミュニケーションし、それを作り上げ、進化させているかを知った。皆さんにもぜひ、それを体験して欲しい」(原田氏)

これについては、レポートでも言いたいことを言ったのですが、
やはりすごい言葉だと改めて思います。


この日、原田さんを始めとするみなさんのお話を聴き、その感動を言わば疑似体験させていただくことはできたし、
自分もTOMOYO Linuxに関わっていくことで、その仲間になることができるんだということがわかりました。


次は、僕が「自分発の活動で」それを体験し、実感したとき、
原田さんたちにそれを報告しようと思うのです。



TOMOYOに勇気を与えてくれた

 田中氏への感謝状には、「TOMOYOに勇気を与えてくれた」の一文が記されていた。それを読み上げる原田氏の声が、こみ上げる思いにつまったとき、その場の全員が固唾をのんで見守った。そして温かな感動が会場に満ちた。なんともいい光景だった。


この日、わざわざ名古屋から駆けつけてこられた田中さん。
ZDNetさんの記事の写真では田中さんを背中側から写す構図になっていますが、
僕は会場の最前列、左半分に座っていたので、このときの田中さんの顔が
よく見えていました。原田さんの声も詰まっていましたが、田中さんも
感慨深げというか、何かをこらえているような、色々な表情が混ざった、
だけど「真剣な」顔をして、原田さんの言葉を聴き、感謝状を受け取っていました。
その表情を見るだけでも、田中さんとTOMOYO Linuxの間にあったであろう
様々な想いが感じられる気がして、やはり見ているこちらにもこみ上げてくるものがあるのでした。


新しい時代はオープン(Global)に作られていく

 NTTデータで生まれ、コミュニティとの出会いから進化したTOMOYO Linuxは、彼らへの「感謝の気持ち」とともにメインラインに至ったのだ。勉強会に参加した人たちは、その軌跡を追体験した。それは軌跡の一部ではあったが、それでも、自分たちの中に新しい何かが湧き上がってくるのを感じるには充分だったはずだ。この新しい流れは、この先で、今度は何を生み出していくのだろうか。

何度も繰り返し読みながら、「本当にこの勉強会にふさわしいレポート」だと思いました。メールでお礼を伝えた際に、感謝のしるしとしてメッセージを送り、その内容はレポートに追加されていますが、それもまたメディアによる取材記事では考えられないことです。今、私たちは確かにひとつの時代の始まりにいるのだと思います。

伝説のレポート 追記Comments - よそ行き顔で

(強調は引用者による)


"Global"という言葉は、原田さんの発表の中でも取り上げられていました。
今回のメインライン化とその勉強会は、言わば
「グローバル、バザール、オープンソースという言葉の意味と実例を見せてくれるもの」
だったのかな、というように思います。


少なくとも、僕はこのTOMOYO Linuxについて知ったことで、
それまで見ていなかった人や世界の素晴らしさを知ることができ、
今は「俺もそういうのやりたい!俺もそういうのやりたい!」と
暑苦しく思っているわけです。この熱は一生冷めないのではないかな、ということも。


というわけで、もうレポートやコメントやメールやブクマで何回も言ったりはしてるんですが、

Thank You TOMOYO, ありがとうTOMOYO Linux

と言わせていただきます。たぶんずっと言い続けると思いますけどね!



というかふと気付いたらはてなキーワードがすごいことに

なってますね。

はてなキーワードTOMOYO Linux
http://d.hatena.ne.jp/keyword/TOMOYO%20Linux



TOMOYO wikiでも、ATNDのページでも。ありがとうございます

Thank You TOMOYO wiki
TOMOYO Linuxメインライン化記念勉強会

原田さんが僕のレポートを紹介してくださっていました。

イベントについて書かれた記事です。とりあげていただきありがとうございます。
* 日本電子専門学校電設部 塚田さんによるレポート

こちらこそ、ありがとうございます!

公開してこそ。

http://d.hatena.ne.jp/luxion/20090714/1247600671
LT部第一回レポート - るーたんダイアリ。ダイアリ?

http://d.hatena.ne.jp/rebmevon/20090715/1247615540
非公式ながら会津大学にはライトニングトーク部があるようだ。 - 笑う角でずっこける。

素晴らしいっすね。
電設部でもライトニングトーク+発表会をやってるけど、
早く外部に向けてアプローチを始めよう、と思った。
(そういえば電設部も非公式部なんだった)

id:luxionさんワンダフル。


電設部がオープンに勉強会を行うにあたって、こんなことが必要/こんなことがしたい。

1)Ust中継
2)発表資料や開催内容等の公開
3)録画物の公開
4)一般・社会人の方を迎え入れるための学校HACK


1.は、学校のネットワーク的にあまりUstへのつながりが良くないが、
たぶんできないことはないと思う。今度試して見る。


2.と3.は簡単だ。
2.に関してはWebページを作ればすぐだし、3.は今までに
テスト録画してきたもの(で音声等がそれなりによいもの)を
公開すればよい。


4.は、開催場所に学校を使う場合に一番融通の利かないところではある。
先日、学校側に「公開イベント開催時の条件と手続き」を確認した。
事前の企画書、当日の入館証管理、事後の報告書を出すこと、
21時にはもう完全に撤収して閉館できる状態にすることなどを遵守する必要がある。


最近、勉強会開催に関して一年生の自主性がだんだん発揮されてきているので、
僕は徐々に勉強会プロジェクトリーダーのウェイトが軽くなってきた。
というか、なるべく彼らに任せるようにしているし、任せられるようになってきた。
自発的に、楽しい勉強会を開いてくれるようになってきているわけだ。


部内で外部の勉強会にもっとも参加している自分としては、

  • 今後、電設部のこの意欲たっぷりの勉強会を外に向けて発信すること。
  • あと、今までに無かった学科間のコラボ勉強会をスタンダード化すること。


この二つを自分の卒業までのミッションとしたい。
なんとかなるよ、絶対大丈夫だよ!って熊猫さんも言っていたし(*´・ω・)(・ω・`*)ネー

8/8(土) わんくまっちゃ445同盟 featuring Silverlight Square のLT枠に応募した

もし枠がもらえそうなら、5分間ぺらぺら話してこようと思う。
how_to_jirouを話すわけではない。せっかくなので学校関連のことでも
広めてきたい。

応募時に、LT希望者は「○○枠でLT希望」と書き添えて応募するんだけど、
ところで、私は今、まっちゃ445勉強会のMLに加入していて、
わんくま同盟は加盟申請中の身である。
どっちの枠になるのかよく分からなくて、「どっちの枠か分からないけどLT希望」と書いた。
そのまんまですね。

そういえば、今回は「まっちゃだいふくメソッド」発動するんでしょうか?
>まっちゃさん(id:ripjyr

脱力系テーマをスピーディに

今日は電設部IT勉強会、Lightning Talks デイでした。
私と、他に一年生が二名喋りました。

私はこのようなテーマで5分間ぺちゃくちゃ。
7/13 ライトニングトーク資料

我ながら脱力するテーマです。

先日 TOMOYO 勉強会のレポートで気合を入れた反動かも知れません。

でも好きなんだよね、二郎。

普段の勉強会では滅多に配らない紙資料まで配ってしまった。

次回予告もしてしまったことだし、またやりたい。
またやらせてね、LT担当のMくん。