2009-04-01から1ヶ月間の記事一覧

Ruby.Sinatra.Git.Heroku #=> "Happy Web Development!"

Ruby 10年前にRubyといえば7月の誕生石のことか 5.5ポイント活字のことでした でも今はGoogleを30頁めくっても 妻に誕生石をプレゼントすることはできません 宝石店のSEO対策は 日本人の作った言語セットの前では無力なのです この点PerlのLarryさんは巧妙に…

Ruby+Shoesでスキャニメーションを作ろう!(その2)

(追記:2010/7/10) Rubyだけで画像を生成する方法を用意しました Rubyでスキャニメーションを作ろう! - hp12c 「ギャロップ!! (しかけえほん)」に触発されて ScanAnimationというサイトを作りました サイトでは馬が走る絵とカンガルーが跳ねる写真と 文字…

Ruby+Shoesでスキャニメーションを作ろう!

本屋にいったら「ギャロップ!! (しかけえほん)」という 絵本がありました 表紙に窓があって中に馬の絵が描かれています ページを開いていくとその馬が突然走り出しました よく見るとページの開閉に連動して スリット入りのマスクが絵に対して動いて 動画を形…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(最終回)

さてこれらの演算子を使って 何かしたいですね... いいのを思いつきました ある小説を元にしたオブジェクトから 基本単語からなるオブジェクトを差し引けば その小説にユニークな単語が抽出できるかもしれません Version27 class WordDictionary def select(…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その16)

さてGUIで出力も魅力的なものになりました もうやり残すことはなさそうです 当初単なる制御構造であったスクリプトが WordDictionaryという立派なクラスになりました これで将来このクラスを拡張したり このクラスをベースにしたアプリケーションを作れます …

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その15)

っと その前に... アウトプットのしょぼさに 今さらながら気が付いてしまいました wdic = WordDictionary.new(ARGF) p wdic.top_by_frequency(20) #> [["the", 16077], ["of", 9823], ["and", 7482], ["to", 7098], ["in", 4456], ["a", 3841], ["that", 316…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その14)

Version20 ここまで来たらもう一歩 小説データは元々ネットにあるんですから いちいちファイルにダウンロードしないで 直接ネットから取れたらうれしいです open-uriライブラリというのを使うと httpに簡単にアクセスできるようになります require "open-uri…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その13)

Version17 次にVersion07で示したような 最長ワードトップ30を出力するメソッド top_by_lengthも定義しましょう class WordDictionary def top_by_length(nth, &blk) list = take_by_key(nth, lambda { |key| -key.length }, &blk) list.map { |word, freq| …

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その12)

でも待ってください そこまで汎用性がある汎用性があるって言うのなら... クラスにでもしたらどうですか? それならArrayクラスにも迷惑は掛かりませんし なるほどいい考えかもしれません ではテキストファイルを受け取ると 英単語頻度辞書を生成するWordDic…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その11)

さてもう改良点はないでしょうか スクリプト全体をもう一度みてみましょう module Enumerable def take_by(nth) sort_by { |elem| yield elem }.take(nth) end end class Hash def top_by_value(nth, &blk) take_by_value(nth, opt(false), &blk) end def bo…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その10)

なかなかいいですね さてこれでもう完成でしょうか... いいえ! 問題が発生しました! 先のコードはDRY原則に反します!! DRY原則 「DON'T REPEAT YOURSELF!」*1 達人プログラマは言いました 「お前は二人も要らないよ!」 あるいは 「愚鈍なる君の二度手間…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その9)

更に欲が出てきました このtake_byというメソッドを 配列でも使いたくなりました 実は先のsort_byというメソッドはHashクラスにも Arrayクラスにも定義されていません それが定義されているのはEnumerableというモジュールです モジュールというのはクラスの…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その8)

先のスクリプトにわたしは何の不満もありません でもリファクタリングはクセになります 3行目のsortのブロックが 気になる人には気になります p DICTIONARY.sort { |a, b| b[1] <=> a[1] }[0...30] Version04 少し直しましょう WORDS = ARGF.read.downcase.s…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その7)

10行程度のスクリプトで目的を達成できました 前置きばかりが長かったこの連載も これで終えられます でも... わたしはどうも気に入りません 先のコードは分かりにくいというか Rubyっぽくないというか... もう一度スクリプトを見てみます dic = Hash.new(0)…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その6)

さてこれまでに得た知識を基礎として 目的のRubyスクリプトを作ります 最初にベースとなるコードを提示して これを少しずつ改良していきながらRubyを学びます まずは手元にRubyで処理できる 英文小説のテキストファイルを用意します 以下のサイトがよさそう…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その5)

Rubyはユーザフレンドリです Rubyにおいてオブジェクト指向はその基本的設計思想です Ruby設計者まつもとゆきひろさん(愛称Matz)は その思想を頑なに守りながら 一方でプログラマーの負担を最小化するために ユーザインタフェースをよりフレンドリなものにし…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その4)

クラスはオブジェクトの母であってクラスの子であるオブジェクトです こういう表現は「クレタ人は嘘つきである」と言った クレタ人のセリフに聞こえるでしょう*1 でもわたしはクレタ人ではありません Rubyワールドにおいてこの表題は事実なのです 先に「オブ…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その3)

Rubyのブロックは仮装オブジェクトです 次にRubyのブロックを説明します 手続き型言語同様 Rubyもifやwhileなどの制御構造をサポートしており メソッド定義式の中でこれらを使うことができます*1 def hello(name) if name.length > 10 name.squeeze! else na…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その2)

これから説明するのは次の4つの項目です Rubyはオブジェクト指向です Rubyのブロックは仮装オブジェクトです クラスはオブジェクトの母であってクラスの子であるオブジェクトです Rubyはユーザフレンドリです 1. Rubyはオブジェクト指向です 依然として現在…

Rubyチュートリアル 〜英文小説の最頻出ワードを見つけよう!(その1)

ー2020年ー インターネットにおけるワード枯渇問題が深刻化している この10年で紙ベースのドキュメントから ビットドキュメントへの移行が急速に進行し 現在では新刊書籍の90%は書店に置かれることなく ネット上の大規模ストレージに直接格納されるようにな…