騒がしい未来

サッカーやインターネット、旅行、日々のお仕事など、普段思ったことををつらつらと書いていく、高須正和のブログサイトです。 さいきんはtwitterばかり。

今日はいよいよ進んできて、ライブラリの紹介です!

————————————————–
Rubyのパッケージ講座
 ~ 地雷原の歩き方 How to ~

デフォルトで使えるパッケージ、RubyGemsの使い方(三浦、喜多)
————————————————–

RubyでHTMLを書いてくれるライブラリCGIの面白い使い方(URL変換、CGIテスト)やUNIX秒とDate,Datetimeの問題など、コアな話も交えつつ、基本的なコマンドを紹介。
文字コード変換のライブラリkconvなど。
ディレクトリをたどってファイルを見つけてくれるfindなどは、よくRuby書く人でも知らない人がいました。

img195 
 内容がコアになってきたので、開発の人が増えてきました。

 

 

ハッシュで作ったものをそのままDBとして格納するDBMには、Java達人からも感嘆の声が上がっていました。

CSVの読み書きライブラリ、Windowsと連携できるWin32API/Win32OLEなどの紹介もあり、デスクトップアプリも作れるとの紹介が。

Rinda / DRBのような分散処理はもっと進化すると思われる見込みだとか、Rubyの最新情報も語られました。

img196
 プロジェクターを見ながらその場でプログラミング。

 

 

今回は予習復習をさぼったせいか、だんだんついていけなくなりつつあります…

紹介してもらったRubyリファレンスマニュアルを見て復習しよう。

 

 前回で環境構築が終わり、今回はプログラミングを始めます!

 

 これまで載っていなかった、講習会の予定は

このようになっています。

11/1 第一回 Rubyとは
   ~ 神は世界を作り、世界は神の妻を名乗った ~

   Ruby言語の紹介、Rubyで作成されたサービスの紹介

11/8 第二回 環境構築、エディタ紹介
    ~ 世界の歩き方 ~

       RubyGemsからのRuby,Railsのインストール
       RadRails
       vim
       NotePad
       Emacs

11/15 第三回 Rubyスクリプトを書いてみよう(1)
         ~ こんにちは世界! ~

    Hello World, 制御構文, ファイル操作

11/22 第四回 Rubyスクリプトを書いてみよう(2)
     ~ ワンラインスクリプト超絶テクニック ~

    Rubyの特徴を押さえたスクリプト作成

11/29 第五回 Rubyのパッケージ講座
     ~ 地雷原の歩き方 How to ~

        デフォルトで使えるパッケージ、RubyGemsの使い方

12/13 第六回 Rails 事始
         ~ 「10分でイケる」ってホントなの? ~

         ディレクトリ構造とscaffoldコマンドの使い方

        ≪つづく≫

 今日は第3回なので、実際にプログラムをいくつか書いてみます。

 画面に社内のRuby達人のコンソールを映し、いくつかの
One-liner(1行プログラミング)を書いてみました。

 ファイル名の一括置換とか、ファイルをまたがっての検索置換とか、
便利そうなものが多いです。

 

 

 講習会の中で一番盛り上がったのはこのサイトの紹介。

http://tryruby.hobix.com/

 なんと、ブラウザで画面に打ち込むことで、Rubyの勉強が
できてしまいます。

 もちろんサイト自体もRubyでできているようですが、
ファイル操作のようなものまでブラウザの入力ウィンドウで行えるとは…

 英語のサイトですが、FirefoxやIEのプラグインJapanizeを使えば、
第1章から第8章のうち、第1章のみ日本語で見れます。

 

 講習会とは違うテーマですが、びっくりでした。

今年頭の天皇杯、オシムは優勝したレッズの表彰式の間、目の前にいるレッズの選手でなく、レッズサポータをずっと見つめていた。

俺も目が合ったような気がした。自分の周りで国立のオーロラビジョンを見つめているサポーターは、「オシムが俺たちを見てるぞ!」と、より大きなレッズコールをした。

国立でもさいスタでも、いつもオシムのあの大きい顔が、ロイヤルボックスにあった。新聞やテレビでは渋い顔ばかり報道されるオシムは、いつもスタジアムではニコニコしていたように思う。

ピッチを見つめるのに夢中で、オシムばかり見ていたわけではないが、次の日の新聞では楽しそうなコメントがいくつも見れた。
「あの11人がほしい」とか。(このときは等々力だった)

ACL決勝でもオシムはいた。
スポーツ新聞によれば、セパハン相手に2-0となったとき、
「シャンパンの用意をしましょう!」と回りに声をかけ、
「もしも浦和が勝ったらこのまま乾杯しましょう」とグラスを用意し、
その後浦和の選手のいいプレーを、我が事のように手を叩いて喜んでいたそうだ。
チームとしては日本や世界のいろんなチームに関心があったであろうオシムは、クラブとしては浦和に大きな注目をしていたのだと思う。何より、同じサッカー好きであるサポーターと共にゲームを見ることに。
オシムに、赤い星や浦和のエンブレム、ハートマークといった、浦和のビジュアルを見せられたことは、スタジアムにいたものとして誇り、思いでもある。

優勝の翌日、オジェックにおめでとうの長電話をした後、オシムは倒れた。
先ほどの記者会見で、大きな山はこえたそうだ。

早く回復して、またサッカーを見に来てほしい。

リーグ優勝を見せるのは間に合わないかもしれない。
でも、12月にはクラブワールドカップが始まる。

ぜひ、スタジアムでまたあの顔をみたい。
日本のクラブの勝利を喜ぶ顔を見たい。

Operaのブースで発見。

キーボードが安い電卓みたいで、フニャフニャのゴムだったのですが、

全体的に頑丈そうで高感度高し。

タブレットになるのもかっこいい。

 

RSSリーダーとメーラーとして普通に使えればほしいですね。

 

残念ながら写真のモデルは動かない。
Operaの人いわく、明日には動くものが来るそうです。

 

 img188外観。10インチPCぐらい。厚さはけっこうあります。3センチ強ぐらい。
img190 開いたところ。液晶のふちが回転してアンテナになる

img189タブレットPCの状態。

今回は自画自賛。

今の業務で、動画の検索エンジンを作っている。
設計が終わってしばらくたち、開発が軌道に乗り始めてきた。

自分は「自分たちがどういうものを作っている」と外部に報告するための資料を作ったり、
実際に外に出て行って話をしたり、「その機能はいる・いらない」といったブレストに
参加したりするあたり担当にしているのだけど、これがめちゃめちゃ楽しい。

「どの検索エンジンでも
 クロール・パース・アナライズ・インフレートといった工程を経て
 検索のためのインデックスファイルを生成している」みたいな話とか、
それぞれの工程で自分たちがしている工夫とか、
新しい工夫のアイデアを出したり、
実際にモノが組みあがっている様子がみえてきたり、
“どこがすごい”というポイントを開発者から聞きだして、なるべく効果的なプレゼンを
考えたりするあたりは、インターネット好きとしては至福の時間である。
もちろんトラブルもいっぱいあるし、やらなきゃならないことはもっといっぱいあるんだけど。

たまたま昨日、静岡のある職業訓練校で「webセミナー」ということで、
「最近のwebの動向とそこで通用する技術者になるために必要なこと」というお題で
話をしてきて「仕事のことを楽しそうに話すのが印象的でした」みたいな感想をいくつかもらい、

「そうか、毎晩遅いし今日は土曜出てきてるけどあんまり疲れた気がしないのは、
オモロいことをやってるからか。」と自覚した次第。

 J`s GoalでACLの浦和に関するエントリが、ネットで小規模に炎上して削除された。
 内容は、「Jリーグ他クラブのサポーターも浦和を応援してる…コメント紹介」ということで、
各クラブのサポが応援コメントをしてる、というもの。

 内容をみれば自作自演っぽい胡散臭い内容。

記事はすでに削除されている(実際に載ってたのは2日ぐらい?対応早かった)ので、Googleキャッシュ
Googleのキャッシュ
http://72.14.235.104/search?q=cache:RcXgrM6TcaMJ:www.jsgoal.jp/news/00056000/00056772.html+www.jsgoal.jp/news/00056000/00056772.html&hl=ja&ct=clnk&cd=1&gl=jp&lr=lang_ja&client=firefox

True faithブログにまるごと載ってます
http://www.doblog.com/weblog/myblog/20731/2614044#2614044

 さすがに、他サポが「we are reds!」はないでしょ。たとえ本当に応援してくれてても。

 もちろん自分も浦和以外に好きなチーム・嫌いなチームというのはある。父オシムのころの千葉は何度か見に行ったし、こないだのナビスコ決勝ではフロンターレを見に行った。
 フロンターレの場合はぜひナビスコ取ってほしかったから「応援」に近い。もしも入れ替え戦で甲府と東京Vが対戦するなら、甲府を応援しに行くかもしれない。でも、ゴール裏には行かないし、「we are reds!」に値する言葉は言わないよ。

 他のスポーツ新聞メディアよりはるかにマトモなので、J`s Goalは応援してる。
 レッズのコレオグラフィを毎回きっちり載せてくれるメディアはあんまりないし、
 水戸の男祭り報道や、川崎の多摩川ジャックなんかは、J`s Goalが報道してくれなかったらわからなかったろうし、なによりスポーツ新聞のweb版やテレビのweb版はマトモな記事がほとんどない。

 それだけに、今回の件はいただけない。コアサポには嫌われ、誰も得をしない。
 何より”JリーグのチームだからレッズにACL取ってほしいよね”と、消極的に応援してる熱心な他サポを失笑させて、決勝前のムードが削がれたのは哀しい。

 

 

 動画見るときコメントを消すか消さないか、
自分でも書くかなどのアンケート。
http://d.hatena.ne.jp/qaze00/20071105/1194192158

 

 

はてなユーザーだけのアンケートとはいえ、
半分以上の人がニコニコ見るときコメント消してるんですねぇ。

 今日は、チームラボで行われることになった、開発者向け講習会の第1回目でした。

 今回のRuby講習会は3ヶ月スパンで行い、
 最後はRuby on Railsでアプリが作れるようにするまで行うものです。

 講師も、社内の人間があたります。

 とりあえず議事録取ったので公開。

—————————
第1回 Ruby勉強会
講師:ラボ開発部 kさん・他1名
—————————

■各人の使用言語の確認
  →チームラボではJavaが多い

■①PerlとRubyはよく似ている
  ・部分的に同じ言語もある
  ・移植も楽

 では、Perlとの違いは?
 →非常に読みにくいPerlに対し、可読性を重視

 ・行末にセミコロンが無く、改行のみ
 ・変数に$がいらない。 “hogehoge=”と書くだけで、hogehogeが
  変数となる
 ・関数にカッコがいらない
 →つまり、目がチカチカする記号が少ないので、
  あとでソースが読みやすい

 →Perlとして使ってもOK

■②Javaとの違い
  Javaに対してRubyは
 「コード量が四分の一なので、作業効率が4倍」と言われている

 「Javaのコードの7割は自動生成可能」と言われていて、実践している人もいる。
  (ラボでも熟練者は実施)
 つまり、本当に書く価値があるコードは3割のみ。
 Javaではデータを呼びだすBeanなどは、定義すれば自動生成できる
  =だから、Javaがいい!ということでもある。

 が、自動生成したコードでも、少しでも人間が手を入れたら、メンテの対象となる!
  =つまり、各コードはやっぱり少ないほうがよい

 例:Javaでは20行近くのコードが、Rubyでは3行まで縮められる!

 質問:Rubyはコンパイルできるの?
   →スクリプト言語であり、できません。
    スピードが遅いというのはRubyの弱点の一つです。
    ただし、年末にリリースされる新バージョンで、実行速度は5倍ぐらいに
    あがるとされている

【Rubyの可読性・コードの短さについていくつかの例】

■ORマッパー(DBアクセス用のライブラリ。SQLを書かずとも、簡単にDBにアクセスできる)
 を書く場合の違い

 JavaではBeanを作るだけでなく、たくさんのXMLを書く必要がある。
 また、修正するときにclassとxmlなど、複数の箇所を修正する必要がある

 Ruby on railsのActiveRecordを使えば、ムチャクチャ短くできる
  ActiveRecord側がDBを見に行って、classが自動修正される
  自動修正は1回だけ、その後は同じ値が使われるため、スピードもそれほど犠牲にならない

■その他Rubyがエラい部分
 ・BigDecimalの扱いが柔軟
  Javaではビッグデシマルは”+”が使えないなど、扱いが変わるが、Rubyではできる

 ・record.hoge=1 というような、シンプルなコードが書ける
  setterが簡潔。

■無名関数が使える

 Javaでソートを行う場合
  DBの値にプログラムで何か値を変更し、その値を用いてソートする場合
    Collections.sort() を使ってソートをする
    ただし、ソートの基準はしらない。たとえば
    Hoogに対してhoge,fuga,uguの3つのプロパティがある際に、どのプロパティを
    ソートするかはわからない。
    なので、
    Collections.sort(hlist,Comparater)
    のように、Comparaterというclass(ソートの基準となるclass)を作ることで、
    ソートを行う
   …など、書かねばならぬことが多い。
  Rubyでは
    array.sort { |a,b| a.hoge - b.hoge }
                      ↑ここをブロックと呼び、無名関数である
    という短いコードでソートができる

 ・Javascript,Actionscriptは、無名関数(その場で定義する関数)をよくつかう言語

■オープンクラス
 ”ほげ”,hoge()
    equals()
 のように、すでにあるclassに対して、拡張したものをclassにできる。
 Javaでは拡張ができないため、Javaでよくある「classにちょっと修正したもの」というものを、
 ゼロから書くのでなく、簡潔に書ける

 classを新しく定義した場合、その場でどんどん書き換えられる
 classを書き換えるための、便利なライブラリもいっぱいある

■③どんな人に向いている?
 ・学びやすいので、新しい人にオススメ!
 ・たくさんの言語のいいところをとりいれている。
 ・Javaは95年、Rubyは93年だが、Javaは設計はもっと古く、
  機械よりの決め事が多すぎる→機械語に近いC(++)を参考にしたから。
  ↓
 2007年から東大の「情報科学」のプログラミング言語はRuby
  (文系も理系も習う基本の情報処理学科)

■④最近の流行は?
 ・IronRuby(マイクロソフト),JRuby(SUN)など、いろんな環境で動きつつある
 ・Twitterなど、Rubyで作られたイケてるサービスが増えてきた
 ・Ruby on railsの登場により、今後どんどん使う人・使う場面が増えてくると予想される

■その他
 ・和製言語なので、海外のギークに人気
 ・たいていのプログラマーに好評
 ・Pythonプログラマにだけは不評
 ・ダックタイプの推進(インターフェース不要のプログラミング)
   →インターフェースなしのため出てくるエラーを、ユニットテストで保証
 ・Javaで停滞(新しい主流のフレームワークが出ない、など)している進化を、
  Rubyが成し遂げるのでは?と言われている
  (これは、Ruby on Railsの貢献が大きい)

質疑応答:
 ・Rubyと他の言語とのインターフェースはありますか?
  可能。CでRubyは拡張できる。またJavaと連携するJRubyもある。

以下、参考資料の紹介

1時間版 PHPからRails
http://blog.masuidrive.jp/index.php/2007/10/27/php-to-rails-1h/

PHPユーザの為のRuby/Rails入門
http://blog.masuidrive.jp/index.php/2007/08/13/php-to-rails/

■Rubyを始めたい人
 まずWindowsユーザにはActiveRubyがおすすめ
 自由に使えるLinuxサーバがあるなら、そちらがおすすめ。

感想:
 ・プログラマー向けの説明が多かったので難しかった

 ・社内で流行っているので受けて見た。
  話はわかったので面白かった

 ・オープンクラスはすごそうだけど、どうなの?

 ・**さんの説明は面白かった。nazoking先生の説明はわかりやすかった。