id:dandasoがフィヨルドに遊びに来てくれました。

3人ともPCを開き、一人はリリース作業をしながら話すというスタイルでおもてなしも糞もあったもんじゃなくてすいません・・・。(Windows, Mac, Ubuntuと3人ともOSが違うのも面白かった)

アクセス解析とSEOについてためになる話がきけたんですが、それとは別に気になったのが、最近僕がハマっている「ツールを使った業務の管理」についてです。(特にRedmine)

要は”“組織の人数”“と”“開発スタイル”“によって効率の良い方法が違う。ということです。

組織の人数:

  • 3人
  • 20人

開発スタイル:

  • 営業主導
  • エンジニア主導

id:dandasoとの話で分かったこと:

  • 少人数、エンジニア主導の場合は管理の必要性があまり無く、BTS/ITSなどあまり使わない方が効率が良い。
  • 一定上の人数、営業主導の場合はBTS/ITSの導入は結果的には非常に効果があるが、問題点も多い。

BTS/ITSの問題点:

  • 使ってみるまでメリットが分からない
    • More joel on softwareにもあったが、1人で使ってもメリット感が無いと難しい
  • 無視出来ないぐらいの手間の増加
    • チケット登録面倒
    • チケット確認面倒
  • 使い方が難しい
    • 例えば、Gmailやサイボウズ メールワイズは使えてもRedmineは使えないという人も多い

一方でBTS/ITSのメリットはここに書くまでもなく沢山ある。

要は”“1人でつかっても便利”“で”“楽”“で”“簡単”“ならいいわけだ。

既に取りかかっているものもあるが、問題点に対する解決策。

解決策:

  • 1人プロジェクトを作る(ただのTODOとしてまず使ってもらう)
  • 最小限の手間でチケット登録できるクライアントの作成
  • メール以外にもIMを使った更新通知
  • テーマを使った見た目のカスタマイズ
  • シンプル版の作成
    • ユーザーCSS、ユーザースクリプトを使ったカスタマイズ
    • シンプル版のにする機能をそもそも追加。

シフト制業務や遠隔地でのコラボレーション、業務領域の違いなどといったコミュニケーションや手続きのロスを減らすにはRedmineの徹底カスタマイズとMechanize等による徹底自動化が一番だと思うので実際に試してみて報告して行きたいと思います。

暑い!

でかいグラスに目一杯氷を入れて、コーラかライフガードをストローで飲むと何であんなにうまいのか。

R0010098.JPG

ampmでアレが簡単に出来るセットが売ってたのではまっています。

R0010100.JPG

キンッキンに冷えとるぞ!(二回目)

R0010101.JPG

うまい!

1213462954tuaou.jpg

氷コーラと勝手に命名しました。

初台オペラシティ横のマック近くの路地を入ったところに旅館。

090713_125534.JPG

昼ご飯もやっているそうなので行ってみました。

090713_125611.JPG

全くの民家ですが、かまわず入って行くと、

090713_125800.JPG

非常にのんびりとした雰囲気。単なる平日の昼飯なんですが、避暑地に来たみたいでお得。

090713_133746.JPG

ピアノとかある。

090713_131017.JPG

特製親子丼、美味しかった。

京王新線 初台出口のすぐそばなので、仕事の合間に癒されたい方は是非。

Window cooler

糞暑いのでエアコンのあるソファ部屋でだらだらしていた俺ですが、ついにフィヨルドの仕事部屋にクーラーが。

この懐かしい感じの窓に付ける奴、ウィンドクーラーっていうらしいです。かっこいい!

3万だって。安っ!

立入禁止

この注意書きには多面性がある。

泥棒に対しては日本語で入ってはいけないむねを伝えると共に、猫に対しては怖い顔のイラストで威嚇する。

また、泥棒に対して、「立入禁止」と知らせる事がどういう作用を及ぼすのかというパフォーマティブな側面についてはそのコンテキストによる。

データの保存先としてRDBの良い所を考えてみた。(長所だとなんか偉そうなので僕なりの良いところという感じ)

速い

大雑把に言えばB-Treeインデックスで参照できるので速い。 キャッシュを持ってくれるので速い。

もっと速い保存先は色々あるが、例えば“自分で適当にファイルに保存する”とかよりは参照が速い。

固い

大抵トランザクションが使えるので固い。更新前データを退避させる方法にしても、削除フラグを立てる方法にしても、自分で作るのは大変。

制約を設定できるので固い。わざわざ無視する指定をしない限り、あまり詳しく無い人が触っても、怖い感じのメッセージと共に弾いてくれる。

(表向き)分かり易い

エクセルというソフトがあるので2次元の表はイメージされやすい。

オブジェクトという目に見えないものはイメージし辛い。

コッド博士には申し訳ないが、集合論と述語論理は理解出来なくても、

「あ、エクセルみたいなもんか!」

という感じでプログラマー以外にも分かった感が持ち易い。CSVファイルには多くのファンがいる。

感想

歴史的経緯を無視して考えると、今から一から学ぶのは割が良いのか悪いのか。

僕が就職して始めてのプロジェクトで覚えて以来10年ずっと使えた唯一の言語がSQLだが、そろそろ別のを使ってみたい気もする。

R0010085.JPG

MacBookにしてから肩凝りが酷いので(重いから)バンテリンを買ってみました。効くかどうか。

R0010086.JPG

リンツかハーシーのホワイトチョコばっかりだったので違うのに挑戦してみたら微妙でした。

R0010087.JPG

これが初台名物フィヨルド汁やでー。

カメラのマクロというものを今頃知ったので物撮り厨時代。CのプリプロセッサとかLispのマクロみたいな難しそうというイメージだったんですが、チューリップ的なマークで親しみ易いですね、カメラのマクロは。

5年ぐらい幡ヶ谷に住んでいるんですが、フィヨルドが出来たので隣の初台もうろうろするようになりました。

初台は、オペラシティを中心とした上層エリアと、不動通り商店街などのロウアータウンに思い切り分かれてる感じで面白いです。

幡ヶ谷住人としては既に駅前のぽえむがあるので純喫茶は足りていたのですが、その存在感は無視出来ず、純喫茶 車に入ってみました。

純喫茶車

もっと上には家紋みたいなマークがあって敷居を上げています。

090708_134909.JPG

店内は70年代そのままをどうやって維持して来たんだろういうぐらいしっかりとした純喫茶の様式美を保っていました。

テーブル型筐体ゲームもとても状態が良いみたいです。

090708_134820.JPG

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は覚える事が多過ぎる」

なので、日本一簡単なチュートリアル作成に挑戦!

目次

  1. インストール
  2. 雛形の作成
  3. いらないファイルの削除
  4. アプリケーションの作成
  5. Webサーバーの起動
  6. 確認

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/

http://localhost:3000/

完成!

これでテキストを表示するWebアプリケーションが作れることが分かったと思います。

他の事は単に、

「Railsに付いている便利機能」

だと思って一個づつ、一個づつ、自分のアプリケーションに取り入れて行けば良いと思います。