Ruby探求の旅(Rails編)
2008.06.19 [Thu] 09:59

こんにちは、今週末映画を観ようと強い決意を持っている、中村です。

今回はRailsについてです。
Railsでは、デフォルトで3つの環境を想定しています。
 @開発用環境:development
 Aテスト用環境:test
 B運用用環境production

で、もし開発してから運用環境にのせる前に、リリース前環境、が必要になった場合どうすればいいでしょうか?

その場合、以下のようにすれば問題ありません。今回作成する環境を「release」とします。

(1)config\environmentsのdevelopment.rbをコピーしてrelease.rbを作成する。
(2)**_releaseという名前のデータベースを作成する(**はアプリケーション名)。
(3)config\database.yml にデータベース接続情報を記述する。

development:
adapter: mysql
database: **_release
username: root
password:
host: localhost
encoding: utf8
 
以上で終わりです。
この手法を応用して複数DBを利用する場合の方法を次回以降で紹介します。

 

プロジェクトファシリテーション
2008.06.16 [Mon] 00:10

ちゃ〜す。

スラムダンクを1巻〜24巻まで一気に読破した天野です。
漫画読んでる時の集中力は、やべ〜よ!!

今日は、中村さんに借りたプロジェクトファシリテーションを読んで
実際に為になったことだけ書きます。

というか、

結構長い時間をかけて読んだから、ほとんど忘れてるだけだけど(笑)
これを書いている時点で、目次を読み返してるのは、言うまでもない(笑)

・「場の形成」
・「ゴールを設定する」
・「シナリオを作成する」
・「ロールを使いわける」
・「フレームを利用する」
     ・
     ・
     ・
     ?


半分冗談で、半分本当です。中村さんごめんなさい。
その中でも、タメになったというか、気づいた点とうか
こんな俺でもちょいちょい実践して実感できたことを書いておきます。


「ファシリテーション」とは、「集団の目的達成プロセスが、効果的・効率的に行われるよう支援」することだそう。(これはそのままパクッたwww)
「会議をうまく進める技術」と憶えても、まぁ、間違ってはいないらしい。(これもパクッたwww)



本当は、「意味のない会議(当社ではMTGという・・・)」は、ないと思う。
でも、やり方次第で「意味のない会議(当社ではMTGという・・・)」になっている可能性はある・・・。
っていうか、よくあるwww


1、遅刻
これ最悪!!
他の出席者のモチベーションが下がるし、出席者の集中力が切れる。
「遅刻してもOKな会議」だと思われる。→ 気を抜く → 眠くなる → モチベーションが下がる

前の会議が長引くことや緊急な仕事が入ることもあるとは思う。
そんな時は、事前に連絡して、議事進行が会議前に遅れる人をきっちり共有するべき。。
毎回同じ人が遅れる場合や、多数の遅刻者が出る場合は、日程を変更するべき!!



2、時間
いつ終わるのか分からない会議。

人間の集中力は2時間が限界!!
個人差考えて、1時間に一回はブレイクを入れるべき。。。
(本当に会議に参加したら、1時間が限界だって!!
プログラム書くより、しゃばる方が頭使うし疲れるよ。)

そして、会議の初めに議事進行が時間を言うべき。
終了時間が書いていないアジェンダがあるけど、有り得ね〜!!

タイムキーパーを一人立てて、会議のタイムマネージメントを行うべき。
そこまでじゃなくても、会議が始まる前に、議事進行役が大まかでいいから時間配分を考えておくだけで、大分、違うよ。



3、ゴール
会議のゴールが共有されていない。これよくあるよね!?
だから中途半端で終わるし、意味のない会議だと思われる。

会議のスタートに、ゴールを明確にしておけば
参加者全員が同じゴールに向かって進むだろうし
ゴールした時には、全員が有意義な時間を過ごしたと感じると思う。

昔、「会議は必ず結論を出すこと」って習った。
ゴールに到達する前にタイムアップになってしまった場合は
「次回の会議に持ち越し」が結論になるだろうし
時間内に決めたいことが決まればそれがそのまま「結論」になる。
これは、会議の最後に共有すべきことだと思う。



4、発言の場の形成
これは結構難しい!!
これを言ったら「馬鹿だと思われる」とか「筋違いかな」とか「知識が乏しい」とか
思われるのは誰でも嫌なはず。

特にエンジニアは、プライド高け〜からな。

ファシリテーターの力が試されるところだけど
簡単なところからだと、この会議は「ブレストだから〜」みたいに
「何でも発言できる場所だよ」ってのを最初に言ってあげる。(会議によるけどね・・・)

で、攻撃するやつがいたら、そいつを攻撃してじゃなくて
「ブレストだから問題ナイッス」って、攻撃者を黙らせる。。。
そして、発言者に続けて発言させる。。。

案や問題提起する場合は、幅を狭めないでなるべく広くした方がいいに決まってる。
バラバラの意見は、あとでグルーピングしてまとめればいい!!
とりあえず、喋らせて参加意識を持たせる。

遠くを見ている奴がいたら、声のトーンを上げるとか、そいつに意見を求めるとかして
引っ張り込む!!

あとは会議の人数とかも重要だと思う。
本当に出る必要があるのか、人選は重要だよね!?

あとで議事録見れば済む問題なら、極力少ない方がいい。


まとめ

これくらいしか頭に入っていないけど、これだけ実践するだけでも、随分違う会議になるはず!!
少なくても俺が進行する会議、と自分が参加する会議は意識が変わった・・・つもり・・・

4つ上げたけど、3つはほとんど「会議の準備、会議のスタート」で実践できるはず。
スタート時にこれが上がってなかったら、「この会議のゴールは何ですか?」とか自分から聞いてみるのも効果大!!

ミクロの努力で会議で激変するはず

中村さん!!
良い本をありがとうございました☆
 

Google Developer Day2008 Part1
2008.06.15 [Sun] 22:11

こんにちは!
ここ最近の気候のせいで体がぼろぼろな山科です!

6/10に行われたGoogle Depeloper Day 2008に行ってきました!
現地のレポートは各所でいろいろとアップされているようで
自分の見れなかったセクションのものを見て、あぁそっちに行けば良かったかな、、、
と思ったりしている今日この頃です
ということで、私が見たセクション + 全体的な所感をつらつらと書いていきます!

基調講演
「3つのC」
インターネットにはいくつかの課題がある。
それらを乗り超えるために以下の3つが重要
・クライアント
・コネクティビティ
・クラウド
クラウドをよりアクセスしやすく、クライアントをよりパワフルに、コネクティビティをユビキタスに。
これらの課題はGoogleだけで解決できるものではなく
すべての開発者と協力して解決していくものである。
それぞれのテーマにおいてGoogleが提供しているサービスの解説に続く

■クライアント
Google Gears 改めて Gears
・従来のプログラミングのスタイルを崩さずにブラウザを通じてリッチなインターフェースを提供する
・ブラウザの対応状況
   IE, Firefox, Windows Mobile に対応済み。
   Safari, Opera も対応中。
 ・導入事例
   My Space が Gears を検索機能の実現に利用するなど、
   オフラインを実現するのみならず、すべての Web アプリケーションで利用できる。

■コネクティビティ
Android - Andy Rubin氏
 ・実機を利用したデモ
   まず、ロックの解除方法に感動!(いずれGoogle Videoで流れると思いますが必見!)
指で各ポイントを規則通りなぞることによって解除していました。
   マッシュアップの一例として
   集合写真から顔に自動的にフォーカスし、その画像をコンタクトリストに追加するデモもありました。
   デモ機は意外と(失礼かもしれませんが、、、)軽快に動作していました。

■クラウド
Google App Engine
 ・Googleではクラウドを持っているが、皆が使えるものではなかった。
  そこで、解放することによって開発者が同じ環境で開発できるようにした。
 ・SDKを利用し、ローカルで開発、テスト
  ボタンをクリックorコマンドを一つ実行することでデプロイ完了
 ・事例
  TeewtWheel : Twitterのフォローの関係を視覚化
lateloop : 中国で発生した地震の安否情報を確認するアプリ。
Googlerが週末で作成したとのこと。
             Googlerにとっても使いやすい環境とのこと。
 ・今後の展開
  Python以外の他言語対応
  ファイルサイズの拡大
  
・新規追加されたAPI
memcache
ImageManipulation : 画像のサムネイルetc

各API(GData, AJAX API)
・GData : サービスからGoogle Calendar, Google Docsなどの保存されたデータにアクセスできる
・AJAX API : 各種検索をライブラリ化し、JavaScriptだけでアプリケーションに配置可能。

■ソーシャル化について
OpenSocial
・人々の繋がりたい!という自然な欲求を満たすことによって魅力的な
  アプリケーションを作ることができる
  ->そこでSNSを横につなげてつなぎやすくする

 ・用語
  コンテナ : アプリケーションの基盤(主にSNSサービス)
アプリケーション : OpenSocialで記述されたアプリケーション

 ・事例
  リクルートの近藤さん、川崎さんからドコイクのOpenSocial対応についての発表
  実際の導入から以下の課題が浮かんできた
  ・Shindigの日本語環境 + セキュリティ面
  ・仕様に不明確な部分がある

■開発を容易に
Google Map API For Flash
 ・デモを使った事例
  手にコントローラのような基盤を持ち、傾けることによって
  画面に表示されているGoogle MAP上で飛行機を操縦している
  感覚を楽しむ!というものらしいです。
  らしいと書いたのはデモの不調で見れなかったから。。。
  別のセッションでは動作していたようなので見たかったです。。。

Google Earth API
・デモを使った事例
  トラックで全世界を爆走できる!!
  デモではエベレストを爆走していました

■4つ目のC
 One More Things、、なにやらJobsのプレゼンのようですが
 もう一つのCがあるとのこと
 それは「コミュニティー」
 Google Codeのサイトの日本語化を進めていてる。
 ドキュメントの日本語化を進めてコミュニティーを活発にしたいとのこと。

この後に各セッションの内容を記載しようとしたのですが
あまりにも長文になりすぎたためまた別途各セクションについて書いていこうと思います!!
 

Ruby探求の旅 ちょこっとRuby2
2008.06.08 [Sun] 21:41

こんにちは、昨日サッカーを見ていて、ヒヤヒヤしていたRuby勉強中の中村です。
今回はRubyでHTMLネットワークプログラミングを、勉強したので、忘れないうちに
記載しようと思います。

rubyでネットワークプログラミングをするには、まず「socket」をrequireする必要があります。

で、ソースを載せます。まずサーバから

/---------------------------------------------------------------------------------
require "socket"

PORT = 9000
HOST = ARGV[0] || 'localhost'

server = UDPSocket.open
server.bind(nil, PORT)

loop do
text, sender = server.recvfrom(1)
server.send(Time.new.to_s + "\n",0,sender[3],sender[1])
end

--------------------------------------------------------------------------------------/

続いてクライアント

/--------------------------------------------------------------------------------------
require "socket"
require "timeout"

PORT = 9000

HOST = ARGV[0] || 'localhost'

socket = UDPSocket.new
socket.connect(HOST, PORT)

socket.send("",0)
timeout(10) do
time=socket.gets
puts time
end

--------------------------------------------------------------------------------------/

これを見て、非常に簡単だという印象を持ったと思います。
私はそのように感じました。

この手軽さこそ、Rubyらしさの一つかと思います。

 

DUNK!
2008.06.06 [Fri] 01:36

NIKEは20年以上前からずっと履き続けている緒方です。

今回見つけたのは、そんなNIKE好きにはたまらんサイトです。

http://nike.jp/nikedunk/

このサイトで出来ること。

●自分好みの色のNIKE DUNKをデザインすることが出来ます。
●自分がデザインしたNIKE DUNKをブログパーツとして貼り付けることが出来ます。
●自分がデザインしたNIKE DUNKでバトルに参加することが出来ます。
●審査員として他の人が作成したNIKE DUNKを二者択一方式でジャッジすることが出来ますetc。

抽選でNIKE DUNK型USBメモリースティックとか当たるみたいですが、そんなのはこの際どうでもいいですw。

ちなみに私がデザインしたのはこちら。

COOLさよりもおもちゃっぽさを意識してみました。
バトルで見かけたら、応援よろしくお願いしますっ!
 

ルーツ飲んでゴー
2008.06.01 [Sun] 21:00

青春時代の愛読書は『ドラゴンボール』だった緒方です。

最近よく駅で見かけるRootsとジャンプのコラボのコレ。


コレ、今Rootsのサイトで自分で作ることが出来るんですね。
面白そうなので早速やってみました。

で、出来たのがこちら


コミックは『ドラゴンボール』『Dr.スランプ』『こち亀』『キャプテン翼』の中の好きな場面を選ぶことができ、曲調も12種類から選ぶことが出来ます。

興味のある人、私より面白く作れる自身のある人wは是非トライしてみて下さい。

http://www.jt-roots.com/
 

Ruby探求の旅 ちょこっとRails
2008.05.28 [Wed] 23:23

どうも。最近サッカーもしたくなってきた、中村です。
最近、サッカーボールを蹴っていない、しかも今年6月からEUROがあるので、尚更サッカーがしたい。。

えー、さてさて。
今回はRuby On Railsについてです。
Rails自体の説明は、書籍やネットにあるので、ここではバサっと省略!
では、今回何を説明するか・・・・。う〜〜〜〜ん。

そうだ!Railsでアプリを作った時のファイル構成について書こう!

Railsでアプリを作るとき、

1.プロジェクトのジェネレート(DBは作っておく)
2.Scaffoldで大まかなソースを生成
3.生成されたものに対し、手を加える
4.ディプロイして、出来具合を見る
5.出来具合に満足する。

といった具合。

で、最近迷っていることがあって、それはRailsは基本的にMVCとなっていて
アプリのファイル構成もそのようになっている
M・・・・・・・app/models
V・・・・・・・app/views
C・・・・・・・app/controllers

で、作っているうちにコントローラクラスが処理が多くなり大きなクラスになってきて、
これで良いのか?分割したほうが良くないか?って思い始めた。

ネットで見たり、周りの人の話を聞くと、

A.Rails(Ruby)では別に良いでないの、それで。
B.ControllerとModelの間に一つクラスを作ったら

といった意見がある。
で、今回は、Bを採用することにした。

じゃ、どうすれば良いのか。それは簡単。
config\environment.rbの36行目くらいに以下のように記述すれば、アプリ起動時に勝手にその
フォルダ配下のファイルを読み込んでくれる。

# Add additional load paths for your own custom dirs
# config.load_paths += %W( #{RAILS_ROOT}/extras )
config.load_paths += %W( #{RAILS_ROOT}/app/util )
config.load_paths += %W( #{RAILS_ROOT}/app/business )

この例では、app配下のutilとbusiness ってフォルダのクラスをロードしてくれます。
後は、コントローラの中からutilやbusiness配下に作られているクラスを呼ぶだけ。
requireとかする必要なし!!!

今回は、Controllerクラス→businessクラス→Modelクラス
という構成にするので、Controllerクラスの一部の処理をbusinessに委譲した。
特にModelをコールしている箇所をbusinessに委譲した。
結果、Controllerクラスは、処理の割り振りと画面遷移を主な役割とすることになった。
すっきりした!
 

派手!?
2008.05.28 [Wed] 13:55

どもっ。今週末ゴルフだけど、天気が悪いらしく微妙なテンションの天野ッス。

今日は、ニュー仕事ツールを紹介。

昨日、仕事が終わってPCを再起動して帰ろうと思ったら

キーボードが認識されなくなった。

本体を開けて、パタパタしたけど認識されない・・・


なので、家からニューキーボード持ってきましたよ。

TAKEO KIKUCHIの袋に入れてね。

家で使おうと思ってネットで購入したキーボード

でも、使いにくくて売ってしまおうかと思ってたところに

会社のが壊れたので。。

マウスを持ってくる人は結構いるけど、キーボードはあまりいないよね。

会社に言えば、交換してくれるんだけど・・・

まぁ、気分転換にしばらく使ってみますよ。

でも、周りからは「派手」と言われる。。

そうかぁ〜。かっけ〜と思うんだけどな。


にオレンジ!!最高じゃないっすかぁ〜!!
 

Ruby探求の旅 ちょこっとRuby
2008.05.25 [Sun] 23:27

どうも!
今日テニスをして、軽く腰が痛くなって、年を感じている中村です。
「サーブは腰の回転を使って・・・・」というのを思い出し実践したら、軽く筋肉痛になりました。。。
軽くショックです。

えーーー、気持ちを新たにして・・・・今回はRubyのTipsを紹介します。
前回の終わりにRubyの文法を紹介、と言いましたが・・・Rubyの文法については、
参考資料があっちこっちにあるし、それをここで言わないでも良いでしょうと、思い止めました。

「じゃー何をするのさー」、と言えばRubyの動作確認をするために使う、「irb」についてです。
環境は、今後Ruby On Railsについても触れるので「InstantRails
を使いますので、よろしく。頑張ってインストールしてください。

InstantRailsをダウンロードしインストールしたら、早速起動!
で、起動したらコンスールを開く!

で、コンソール上で「irb」と入力するとirbが起動します。




>Time.new

と入力するとRubyプログラムが実行されて、で現在の時刻を出力します。
Rubyで動作を簡単に確認したい場合、これを使うといいかも。
次回は、Railsについてです。

 

英語のお勉強-iKnow!
2008.05.25 [Sun] 23:02

DSの『えいご漬け』はすっかり飽きてしまった緒方です。
そんな私でもちょっとづつ続けられそうな、英語学習SNSを見つけました。

『iKnow!』
http://www.iknow.co.jp/

登録をすませて、全74(!)コースから自分のレベルにあったコースを選ぶと、学習開始。
日々の学習進捗もパーソナルに管理してくれます。
学習教材は音声も聞けるし、動作も快適で商用アプリケーション並です。
Podcastも連携していて、通勤通学中に聴くことも出来ます。

SNSとしても、マイページ、日記、メッセージ等必要機能は一通りそろっており、加えて仲間同士で学習進捗具合を共有出来るのが、最大の魅力です。この手のってとかく孤独になりがちですが、これなら励みにもなるし、続けられそうですね。

現時点でこれだけのものが無料で使えるというのが驚きです。