糞暑いのでエアコンのあるソファ部屋でだらだらしていた俺ですが、ついにフィヨルドの仕事部屋にクーラーが。
この懐かしい感じの窓に付ける奴、ウィンドクーラーっていうらしいです。かっこいい!
3万だって。安っ!
データの保存先としてRDBの良い所を考えてみた。(長所だとなんか偉そうなので僕なりの良いところという感じ)
速い
大雑把に言えばB-Treeインデックスで参照できるので速い。 キャッシュを持ってくれるので速い。
もっと速い保存先は色々あるが、例えば“自分で適当にファイルに保存する”とかよりは参照が速い。
固い
大抵トランザクションが使えるので固い。更新前データを退避させる方法にしても、削除フラグを立てる方法にしても、自分で作るのは大変。
制約を設定できるので固い。わざわざ無視する指定をしない限り、あまり詳しく無い人が触っても、怖い感じのメッセージと共に弾いてくれる。
(表向き)分かり易い
エクセルというソフトがあるので2次元の表はイメージされやすい。
オブジェクトという目に見えないものはイメージし辛い。
コッド博士には申し訳ないが、集合論と述語論理は理解出来なくても、
「あ、エクセルみたいなもんか!」
という感じでプログラマー以外にも分かった感が持ち易い。CSVファイルには多くのファンがいる。
感想
歴史的経緯を無視して考えると、今から一から学ぶのは割が良いのか悪いのか。
僕が就職して始めてのプロジェクトで覚えて以来10年ずっと使えた唯一の言語がSQLだが、そろそろ別のを使ってみたい気もする。
5年ぐらい幡ヶ谷に住んでいるんですが、フィヨルドが出来たので隣の初台もうろうろするようになりました。
初台は、オペラシティを中心とした上層エリアと、不動通り商店街などのロウアータウンに思い切り分かれてる感じで面白いです。
幡ヶ谷住人としては既に駅前のぽえむがあるので純喫茶は足りていたのですが、その存在感は無視出来ず、純喫茶 車に入ってみました。
もっと上には家紋みたいなマークがあって敷居を上げています。
店内は70年代そのままをどうやって維持して来たんだろういうぐらいしっかりとした純喫茶の様式美を保っていました。
テーブル型筐体ゲームもとても状態が良いみたいです。
500円のナポリタンが気になりつつ焼きそばとコーヒーを注文。
定番の銀の皿に屋台みたいな味のする焼きそばで昼を住ませました。
今度は仕事しに行きたいです。
一覧を見ながら書きたかったので。
featureはcucumber0.3.11のもの。stepsはmiso0.0.4のもの。
feature
feature: フィーチャ|機能 background: 背景 scenario: シナリオ scenario_outline: シナリオアウトライン|シナリオテンプレート|テンプレ|シナリオテンプレ examples: 例|サンプル given: 前提 when: もし then: ならば and: かつ but: しかし|但し
steps
前提 /^"([^\"]*)"ページを表示している$/ もし /^"([^\"]*)"ページを表示する$/ もし /^"([^\"]*)"ボタンをクリックする$/ もし /^"([^\"]*)"リンクをクリックする$/ もし /^"([^\"]*)"に"([^\"]*)"と入力する$/ もし /^"([^\"]*)"から"([^\"]*)"を選択する$/ もし /^日時として"([^\"]*)"を選択する$/ もし /^"([^\"]*)"の日時として"([^\"]*)"を選択する$/ もし /^日付として"([^\"]*)"を選択する$/ もし /^"([^\"]*)"の日付として"([^\"]*)"を選択する$/ もし /^時間として"([^\"]*)"を選択する$/ もし /^"([^\"]*)"の時間として"([^\"]*)"を選択する$/ もし /^"([^\"]*)"をチェックする$/ もし /^"([^\"]*)"のチェックを外す$/ もし /^"([^\"]*)"を選択する$/ もし /^"([^\"]*)"としてファイル"([^\"]*)"を選択する$/ ならば /^"([^\"]*)"と表示されていること$/ ならば /^"([^\"]*)"と表示されていないこと$/ ならば /^入力項目"([^\"]*)"に"([^\"]*)"と表示されていること$/ ならば /^入力項目"([^\"]*)"に"([^\"]*)"と表示されていること$/ ならば /^"([^\"]*)"がチェックされていること$/ ならば /^"([^\"]*)"ページを表示していること$/ 前提 /^言語は"([^\"]*)"$/ もし /^"([^\"]*)"としてファイル"([^\"]*)"をContent\-Type"([^\"]*)"として添付す る$/ もし /"([^\"]*)"中の"([^\"]*)"リンクをクリックする$/ もし /^テーブル"([^\"]*)"の"([^\"]*)"行目の"([^\"]*)"リンクをクリックする$/ もし /^デバッグのため$/ ならば /^テキストフィールドに"([^\"]*)"と表示されていること$/
思った。
「Railsは覚える事が多過ぎる」
なので、日本一簡単なチュートリアル作成に挑戦!
目次
- インストール
- 雛形の作成
- いらないファイルの削除
- アプリケーションの作成
- Webサーバーの起動
- 確認
1. インストール
RubyGemsのgemコマンドを使ってrailsをインストール。
% sudo gem install rails
2. 雛形の作成
railsのインストールによって入ったrailsコマンドを使って、アプリケーションの雛形を作ります。
使い方:rails <アプリケーション名>
% rails hello
% cd hello
出来るファイル:
README - railsの説明(いらない) Rakefile - Rakeの設定ファイル(気にしない) app - 自分の書くコードを置くところ(良く使う) config - 設定ファイル各種(良く使う) db - データベース関連のファイル置き場(気にしない) doc - このアプリケーションに関するドキュメント(気にしない) lib - ライブラリ置き場(気にしない) log - ログ置き場(気にしない) public - 静的ファイル置き場(気にしない) script - 便利スクリプト置き場(気にしない) test - テスト置き場(いらない) tmp - 一時ファイル置き場(気にしない) vendor - 外部ソフト置き場(気にしない)
3. いらないファイルの削除
rm -f README
rm -f public/index.html - インストールおめでとうページ
rm -f public/images/rails.png - ロゴ画像
rm -rf test
4. いらないライブラリの除外
config/environment.rb の下記の様に編集します。
RAILS_GEM_VERSION = '2.3.2' unless defined? RAILS_GEM_VERSION
require File.join(File.dirname(__FILE__), 'boot')
Rails::Initializer.run do |config|
config.frameworks -= [ :active_record, :active_resource, :action_mailer ]
end
上記でデフォルトで使われる3つのライブラリを利用しないようにしています。
- active_record – DB関連(気にしない)
- active_resource – Web API関連(気にしない)
- action_mailer – メール関連(気にしない)
5. アプリケーションの作成
app/controllers/top_controller.rb を作成します。
class TopController < ApplicationController
def index
render :text => 'Hello'
end
end
topという名前は適当です。アンダースコア区切りのファイル名を大文字区切りにしたものをクラス名にします。(決まり事)
表示したいページをメソッド名として作ります。(indexメソッド)
renderメソッドの:textオプションに文字列を渡すと、それをそのまま表示してくれます。
config/routes.rb を下記の用に編集します。
ActionController::Routing::Routes.draw do |map|
map.connect '/', :controller => 'top', :action => 'index'
end
map#connectメソッドにurlとそれに対応するcontroller名、action名(さっき書いたヤツ)を指定して紐付けます。
6. Webサーバーの起動
% ruby script/server
7. 確認
% open http://localhost:3000/
完成!
これでテキストを表示するWebアプリケーションが作れることが分かったと思います。
他の事は単に、
「Railsに付いている便利機能」
だと思って一個づつ、一個づつ、自分のアプリケーションに取り入れて行けば良いと思います。