Rubyの最近のブログ記事
天下一プログラマーWEB予選第1回(2009/7/5):1問目
お題:2001年1月1日から3000年12月31日までの間に日曜日は何回あるか
を Ruby の勉強がてらやってみました。
合計で4時間はかかってる。
以下の記事を参考に コードを書いた。
Rubyist Magazine - Ruby ビギナーのための CGI 入門 【第 1 回】 4 ページ
以下の記事を参考に Apache の設定を行った。
ApacheでRubyのCGIを動かす方法 - 医者を志す妻を応援する夫の日記
Ruby 逆引きレシピを買った。それとは別に複数人に送るメール本文を作成する必要が出来た。じゃ、Ruby でやんべと。
翔泳社
売り上げランキング: 5339
・ほんとは全部 CGI っぽくやりたかった。
・こうやってメールのテンプレ作るのはいいけど、送信前の状態にはできないから不満(Webメール自動作成はどうやる? Windows ならOLEいじんのか? COM? なにそれ食えんの?)
・ちょっと苦労してちょっと楽になるだけで仕事が楽しい。もっと苦労してもっと楽になりたい!
以下のRuby技術者認定試験対策本を買った。
例文がなんていうかこう、ひねくれてたのでちょっと紹介。
日経BP社
売り上げランキング: 3593
追記:2009/04/18 12:04頃
一応目次もつけますね。
監修者まえがき 著者まえがき第1章 Ruby技術者認定試験 受験の手引き
1.1 試験の目的
1.2 申し込み方法と受験の流れ
1.3 試験概要
1.4 試験範囲第2章 Rubyとは
2.1 Rubyの歴史
2.1.1 Rubyのはじまり
2.1.2 Rubyで広がる
2.1.3 海外での展開
2.1.4 ビジネスの舞台へ
2.1.5 処理系も次々と
2.2 Ruby応用技術
2.2.1 Ruby on Rails
2.2.2 JRuby
2.3 Rubyが利用される分野
2.3.1 Webアプリケーション開発用言語
2.3.2 簡単なデータ加工のためのスクリプト言語
2.3.3 プログラミングを学ぶための教育用言語
2.3.4 デスクトップ・アプリケーション開発用言語
第3章 Rubyの実行環境
3.1 実行方法
3.1.1 Rubyインタプリタの入手
3.1.2 プログラムの実行3.2 コマンドラインオプション
3.3 環境変数
3.4 irb
3.4.1 irbの起動
3.4.2 irbの終了
3.4.3 irbでの式の実行第4章 Rubyの文法
4.1 字句構造
4.1.1 コメント
4.1.2 予約語4.2 プログラム構造
4.2.1 式
4.2.2 プログラムの終了
4.3 リテラル
4.3.1 数値リテラル
4.3.2 文字列リテラル
4.3.3 配列リテラル
4.3.4 ハッシュリテラル
4.3.5 正規表現リテラル
4.4 変数 / 定数とスコープ
4.4.1 ローカル変数
4.4.2 グローバル変数
4.4.3 定数
4.4.4 クラス変数
4.4.5 インスタンス変数
4.4.6 擬似変数
4.4.7 自己代入
4.4.8 多重代入
4.5 演算子
4.5.1 基本的な演算子
4.5.2 その他の演算子
4.5.3 演算子オーバーライド
4.5.4 演算子優先度
4.6 条件分岐
4.6.1 if を使用した条件分岐
4.6.2 unless を使用した条件分岐
4.6.3 case を使用した条件分岐
4.7 繰返し
4.7.1 while を使用した繰返し
4.7.2 for を使用した繰返し
4.7.3 繰返しの制御
4.7.4 イテレータ第5章 Ruby組み込みライブラリ
5.1 組み込み関数5.2 組み込みクラス
5.2.1 数値(Numeric)クラス
5.2.2 文字列(String)クラス
5.2.3 正規表現(Regexp)クラス
5.2.4 配列(Array)クラス
5.2.5 ハッシュ(Hash)クラス
5.2.6 File クラスと Dir クラス
5.2.7 Time クラス
第6章 Rubyのオブジェクト指向機能
6.1 ポリモルフィズム
6.1.1 ダックタイピング
6.1.2 動的型6.2 継承
6.2.1 単一継承
6.2.2 Object クラス
6.3 Mix-in
6.3.1 include メソッド
6.3.2 extend メソッド
第7章 Ruby技術者認定試験 模擬問題
7.1 注意事項
7.1.1 問題数と解答時間
7.1.2 その他の諸注意
7.2 問題1〜問題50
7.3 問題51〜問題100
7.4 解答1〜解答50
7.5 解答51〜解答100索引
a = [0,1,2,3]っていうのをRuby チュートリアル - 4. 主なクラスで見かけた。
a[3] = a
p a
#=>[0,1,2,[...]]
オライリージャパン
売り上げランキング: 2396
よくわからずに思ったこと、感じていたことを連ねました。
勘違いも甚だしいーな記述があるかもしれませんが。ご一笑ください。
なお引用部に関しては、レイアウトの都合上、文脈を変えない程度で改行等をほどこしてありますことをご了承ください。
文体や語感、リズムを重んじる方はぜひ引用元へどうぞ。
私は、言語に二つの相反するものを期待している。一つは、「たいていのことがサクっと当たり前に出来る」こと。
Larry Wall が言うところの「殺速性」(whipuptitude)だ。これがないと書いてて疲れてしまう。大リーグ養成ギプスを常に着たまま生活したい人などいるのだろうか。星飛雄馬本人だっていやがってたのに。しかし、それだけじゃ私には物足りない。「言われなきゃ思いもつかなかった言い回しをその言語の範囲内で言う」、複殺性(manuplexity)も必要なのだ。皮肉ではあるが、これがないと複殺なものは複殺なままなのだ。
Perlの偉い人のブログを読んで「あー、だから自分は Ruby を選んだのか」と思った。
プログラミング言語にはそれぞれ個性があって、その個性は入門書にまで "(同一言語なのに)記述の統一性のなさ" という形で表れる。そしてそれは僕の中で、プログラミング学習のハードルになっていたのだ。Ruby に会うまでは。
Rubyのよさ。
それは Ruby はなんていったて入門書が たのしいRuby 第2版 Rubyではじめる気軽なプログラミングしかないでしょう。
この選択肢のなさはある意味魅力だったわけ。他の人が書いたソースもこの本の流儀に則ってる可能性が高いだろうから理解しやすいんじゃないかって。
実際に Ruby をやってみると、each の気持ちよさが何とも言えなかった。
流れ作業丸出しな感じ。これが気持ちよかった。
想像するならばめんどくさがりの上司が、たまりにたまった書類に承認印をめくらめっぽう押す感じ。ティッシュ配りのアルバイトが、誰彼かまわず「お願いしゃーす」と配っている感じ。脊髄反射なのに惰性でダルダル、素早さなんて微塵もない感じ。まじでさいこー。
この感じを得られたのは幸運だった。プログラミングって流れ作業を微分することだったんだ、と気付いた。
この気付きを Perl でも得られたのか、Python でも得られたのかは謎である(そう、C では得るところまで理解できなかった)。
まだ、Ruby で満足に機能するものを作り上げたわけではない。
でも、とにかく気付きを得られたこの一点だけで Ruby が存在し Ruby と出会えたことに感謝している。
追記:2008/06/25 Ruby に関して、入門書が~しかないでしょう、って書いてしまいましたが、単純にそれしか知らなかったってことなんですよね。これは誤解を招くなあ。
アスキー (2000/10)
売り上げランキング: 59751

2000年出版の本ですが、今でもとっても参考になります
邪道上等!
プログラマが楽しくよめる一冊それにしてもHack系の本の言葉使いってなんだろうね。
その昔、ハッピー・ハッカー (ハッカージャパンBOOKS (5))って分厚い本があって、
そこには"ダータ"とか"ピーコ"だとかいう言葉が並んでいた。
これってハッカー・ジャパン語なのかしら?
"割れず"とかと同じ種類のものなんだろうけど、発生過程が気になるところ。
先日の携帯/SO702i-故障事件。
ソニー製品は概して接触部が弱い。
Mova携帯のジョグダイヤルも、メモリースティックウォークマンの早送りのツマミも、
VAIOの液晶ヒンジ部、ノートのメモリ固定部も。ぜんぶそこだけ駄目になった。
よく考えてみると、ウォークマンの故障以外は全部致命的な故障なんだよ。
雑なのか、精密に弱くしてるのかわからんところがSONYだよな。
でも携帯に関してはインターフェースがSONYのそれしかわからんからまた使ってしまうのかな。
で当の携帯は結局修理に出した。
いまのところ連絡待ち。
→無償修理、もしくは
→最悪有償(5万くらいらしい)→修理依頼せず機種変
という二択で考えている。
それにしてもDoCoMoショップの店員は態度がおかしい。
他を知らないからそんなこと言ってはいけないのだろうけど、
単純におかしく感じたことを書いてみる。
連絡先を記入する際に、「ご都合のいい時間帯もお書きください」と言われた。
そこで9時か20時と記入。
すると「その時間は営業時間外ですので他の時間をお書きください」と言われる。
先に言えよ。何、一手間惜しんで客にその手間押しつけてんだよ。
他にもある。
SO702iはメモリースティックDuoを外部メモリとして使用することが出来る。
ってことはそれでバックアップをとるわけじゃないか、普通。
で修理時には代替機借りるよね。
けど、メモリースティックDuoに対応した機種は無い、と言う。
まあ、実際古いタイプだし、今はMiniSDだかMicroSDだかが主流なんだからしょうがないのはわかる。
でもさ、「(メモリースティックDuoを)使える機種は代替機に無いの?」って聞いた僕に、
「ないですねー。通常はMiniSDですから」って返しはねーだろーよ。
こっちは思わず「通常?通常ってなんだよ!」って言ってしまったよ。
そしたらはっとして、preminiのシリーズものだと思うけど古い機種持ってきた。
最初からやれ、と思うんだ。
故障することはあるし、旧機種をいつまでもサポートしてらんないっていうのはわかる。
でも、使っている人はいるわけだし、使ってくれって言ったのはお前等だろうが。
バックアップはとりましょうね、とか広報活動しておきながら、故障時の対応ができないってどういうこと?
それはあなた、身勝手にもほどがあるよ。企業としておかしいですよ。
家族割りとかでついでに親の名義に入ってるとする。
で、大学生になったとかで親元を離れ上京したとする。
で、携帯壊れましたってことになる。僕と同じ状況になったとする。
もちろん修理か機種変したいよ。お金もあったとするよ。
でも親に確認とらなきゃいけない。それは親が名義人だから。
そのとき携帯からデータ抜け出せなきゃ手も足もでないよ。
実家に親がいればいいさ。実家の電話でつながるもんな。
でも一家離散してて携帯でしか連絡できない家族だったらどうするのさ。
現に僕がそうなんだよ。
修理も頼めない、機種変もできない。新規で契約しろってこと?
でもデータが無ければ携帯あっても意味ないし、こちとらバックアップは異端のメモステDuoだよ。
からっぽの最新携帯があっても結局何もできやしないよ。
DoCoMoショップすべてがそうだとは思わないし、僕の行ったところがたまたま悪かったんだろう。
でも、そんな人間許すなよ。
自社の製品を誇りに思っていたらそんないい加減な対応、環境をそのままにしておくな。
たのしいRuby 第2版 Rubyではじめる気軽なプログラミング
p322 『第16章 FileクラスとDirクラス』においてまたも誤植が。
FileUtils.compare(from,to)
とあるが、これでは動作しない。
fileutils - Rubyリファレンスマニュアルにあるように
FileUtils.compare_file(from,to)
でやっとこ動作することを確認。
これはまだ
『たのしいRuby 第2版』正誤表にも出ていない模様。
現在何版何刷まで出版されているのかわからないけど、これってもしかして、
著作権保護のトラップってやつかしら、と思った。
ウミガメのスープにも問題としてあった。
地図でいうと-存在しないはずの島をわざと記入する。
辞書でいうと-でたらめな言葉と用例を載せる。
そんな都市伝説みたいなこと実際にやるのかしらね?
けれどよくよくたのしいRubyを見直してみると、
どうやらそんな感じじゃないなー。
p321の最下段
FileUtils.rm_r(path)
FileUtils.rm_f(path)
も実は誤植で
FileUtils.rm_r(path)
FileUtils.rm_rf(path)
なのである(これは正誤表にも出てる)。
ってことは罠っていうより、ここの校正担当したやつがだめなんじゃねーか、と思えてきた。
いや、しかししかし複数ページにわたってあえて間違えることによって、より効果的に著作権侵害から身を守っているのか?
うーむ。
知らん!
本日休みだったということで軽い読書。
以前から気になっていた、ポール・スローンのウミガメのスープ―水平思考推理ゲームをBOOK OFFで購入する。300円。
表題作である『ウミガメのスープ』以上のインパクトある問題が少なくて、正直がっかし。
訳も中途半端だからアンフェアな叙述トリックが多いし。
水平思考というのが、この本書を則る思考法です。
いろいろな側面から仮説をぶち当て、複数の問題を全て解決する説を見つけるのです。
宮本茂のいうところの<<アイディア>>がまさにそれでしょう。
糸井 まえに岩田さんと話したときに、
「アイデアというのはなにか?」
という話をしたじゃないですか。
岩田 宮本(茂)さんのことばですね。
糸井 そうです。つまり、宮本さんによれば、
「アイデアというのは
複数の問題を一気に解決するものである」
ということなんですが、
この話を事務所のみんなにしたところ、
ものすごく感心されまして。
せっかく岩田さんがいらっしゃってることだし、
あの宮本さんの発言の意図と、岩田さんの分析を
くわしく聞かせてもらえたらなと思うんですが。岩田 あれは、ゲームをつくってるときに、
宮本さんが言ったんですよ。
ですから、宮本さんは
ゲームをつくるときのひとつの方法論として、
おっしゃってたんですけど、
わたしは、ゲームづくりに限らず
万能な考え方だと思うんですよね。
HOBO NIKKAN ITOI SHINBUN - 1101.comより
さすがちゃぶ台返しerです。いうことが違います。
また、こちらでは<<水平思考>>と直接使われております。
- 横井の哲学に、「枯れた技術の水平思考」という言葉がある。
横井軍平 - Wikipediaより
どちらも奇しくも任天堂を代表したエンジニア。そりゃあ新しいものを作るわけだわ。
Rubyはやっとこさ 第16章-FileクラスとDirクラス- に突入。まあまあゆっくりやりましょう。
6月くらいまでにはRuby技術者認定試験(Ruby Association Certified Ruby Programmer)を受けて合格したいものです。








