« 2008年1月 | メイン | 2008年3月 »

2008年2月25日

紙のノートでToDo管理
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

yamaokaです。

最近、ToDo管理(タスク管理)を紙の小さなノートを使ってするようにしています。 今回は、実際どのように管理しているのかを書いてみます。

朝書く

作業を始める前に、やることを考える時間を作ります。 ぼくの場合、通勤の電車がかなり空いているので(乗換駅が始発駅です)、 座席に座りながらノートを広げるようにしています。

一日単位で書く

まず、その日の日付を書きます。そしてその下に、 箇条書きでその日にやることをリストアップしていきます。 一日単位で書くことで、その日のゴール(到達目標)を明確にすることができます。

優先順位をつける

その日のうちに絶対終わらせなければならない項目の先頭には、 二重丸を付けておきます。書き出した項目を一日で全部終えられるとは限りません。 最低限やらなければならないことをはっきりさせておきます。

終わった項目は消す

そうして書き出したToDo項目を見ながら作業を進めます。 完了した項目は、どんどん線を引いて消していきます。 目に見える形で消していけるのは気持ちいいです :-) この消していく感覚がPCとかケータイのToDo管理だとなじまなくて、 紙のノートで管理するようになりました。

項目は適宜追加する

作業を進めていくと、新しくやらなければならないことが出てきます。 それも項目としてどんどん追記していくようにします。 優先順位も忘れずにつけるようにします。

全部終わったらとっとと帰る

適当な時間になって項目が全部消えていた場合、とっとと帰ります。 やることが残っていないのに、会社に居続けるのは時間の無駄です。 仕事とプライベートはきっちり分けたいものですね。

残った項目

時間になっても項目が残った場合、消さずにそのままにして、 適当にキリを付けて帰ります。

翌日のToDoを考える際に、必要があれば項目として引き継ぎ、 転記するようにします。必要のない項目はそのままにしておきます。 後日振り返って見た場合に目に留まるかもしれません。

まとめ

あとは以上の手順の毎日の繰り返しです。 そのノートは日々の作業ログとしても使うことができます。

紙なので、自由にメモや図を関連づけることができるのもいいところです。 PCやケータイで管理するのもいいですが、まだまだ紙のノートも有用です。 どこへでもすぐに持ち運びできるのもいいですね。

道具としての紙、ノートの価値を今一度見直してみるのもいいかもしれません。

2008年2月18日

サタデーコードフィーバーを開催しました
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

Keitaです。
先日2月16日、サタデーコードフィーバーを開催させていただきました。

参加者の皆様ご参加ありがとうございました。

感想としては個人的には楽しかったのですが、コーディング中はすごい静かだったり、もっと人が集まったなら集まったなりにいろいろできたんじゃないの感がありいろいろ改善したい点がでてきました。
そういうわけで、今後、似たようなことをやる方がいたり第二回サタデーコードフィーバーをやるときの自分へのメモとして、エントリを書いておこうと思います。

名札を用意してよかった

今回、はじめて勉強会で名札を用意していみました。 普通の文房具屋で、1個単位のちゃんとしたやつを買うと一つ200円くらいするのですが、50個セットのやつだと3000円ちょっとで購入できます。私は東急ハンズで買いましたが、ちょっと大きい文房具屋にならありそうな気がします。

ウノウが静か過ぎた問題

音楽はかけていたのですが、どうしてもコードを書く性質上、会場は静かになりがちでした。 XPなどをやるとかいいんじゃない?という意見があったので、そういうほかの人に絡む要素があるととてもいいかなと感じました。

順次集合はよかった

特にスピーカーがいたわけではなかったので集合時間を10時~11時の間に設定しました。 午前中にしたわけは、お昼のランチを一緒にとるという目的があったからです。 ただ、ランチも広い会場があったわけじゃないので、くじ引きで4人ずつに分かれてご飯を食べました。

もしかすると、最後に飲み会とか設定せずに、気が向いたら帰るみたいな、もっと気軽な感じにしてもいいかもしれないと思いました。
(もちろん飲み会は飲み会で楽しかったのですが)

Wikiはあるといい

今回ポジションペーパーなどを用意してなかったのですが、Wikiをmiyakeが用意してくれたのでそれを利用して自己紹介のときに利用しました。これは思いのほか便利でした。 また、TwitterとLingrも利用させていただきましたが全員が参加というわけには行かなかったので、もうちょっとここらへんはバランスをとれればと思っています。


最後に成果報告やったよかった


最後に40分くらいしゃべりたい方を集めて、成果報告をしていただきました。
個人的には、こういう集まりで成果がでなくてもいいとは思いますが、やっぱりみんなの前で発表できて、すげーとかなると俄然やる気がでると思います。
ちょっと時間がたりなくて質問タイムは少なくなってしまいましたが、これは次回もやりたいなーと思っています。

次回むけて

もし次回をやるとしたら上記やその他いろいろ、改善して挑みたいなーとおもいつつ、ウノウはそれほど広くはないので大きい会場とかでやってみたいなとかも思いました。

簡単な報告ですが、参加された皆様ありがとうございました。そして、もし次回をやることがあったら皆様、よろしくお願いします。

2008年2月12日

モバイルサイトをテストする時の基本的なコツ
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんにちは!山本@テスト番長です。

今回は下記のエントリも参考にしながら、モバイルサイトのテストをする際の基本的なコツを書いてみたいと思います。

A Primer in Testing Mobile Phone Applications


URLは直接入力せずにメールで送る


長いURLをへこへこ入力しているとタイプミスしがちです。
PCからメールでささっと送っておきましょう。

テスト端末にメールアドレスを貼っておく

テスト端末が沢山あると、個々のメールアドレスが何だったかすぐ忘れます。 もちろん操作して表示できますが機種によって迷うことがあるので、テプラで裏に貼っておけばすぐ確認できますね。

パスワードは短めに設定する

必ず入力しなくてはいけないのがパスワードです。携帯でのキー入力は難儀なので、短めにすると楽ができます。機密の程度にもよりますが、必要以上に複雑にしないほうがベターです。特に違う文字種が混ざると途端に入力し辛くなります。 機種によってパスワードフォームのデフォルト入力文字種が違うのでそれも考慮して決定しましょう。

開発場所での電波の強さを確認する

都会ではまず問題ないですが、開発合宿などで山奥に行った場合など電波が入らないときがあります。実機での確認ができなくなってしまいますので気をつけましょう。

使い放題プランに加入しておく

これも基本ですが、忘れた時のダメージが大きいので頭の片隅に置いておきましょう。 機種依存の不具合を検証するために他人の携帯を借りたときなど要注意です。

エミュレータを信用しない

PCで開発する際エミュレータは便利なのですが、実機とは挙動が違うことも多いので かならず実機で最終確認するようにしてください。 エミュレータ上でバグを確認した場合はそのように報告書に記載するのを忘れずに。 あえて使わないという選択肢もあるかと思います。

モバイルで使えるツールを探しておく

エミュレータに背を向けるとなると、それに換わるものを自前で用意しなくてはいけません。 プロキシとして動作する携帯変換エンジンやFirefoxのUser Agent Switcherなど、 モバイル開発向けの無料で便利なツールが結構ありますのでチェックしておきましょう。

検証対象の端末について話し合っておく

端末はキャリアや世代によって挙動が相当異なります。 どの端末を検証の対象にするのか、判断・周知するようにしましょう。

こまめにお気に入りを設定する

開発環境をブックマークしておくと何かと便利ですが、意外とその一手間を忘れることが多いです。 あとでまた面倒な手順を踏むことになります。お気に入りはこまめに設定しておきましょう。 開発環境のURLをまとめたページを作って、そこをお気に入り登録しておくのも場合によっては手ですね。

とりあえずリロードすることを忘れない

携帯はPCよりもキャッシュが効きやすいので、とりあえずリロードしてみる癖を付けましょう。

充電器は多めに確保する

テスト端末を複数買うとき、充電器は一個あればいいと考えがちです。 でも開発に熱中しているといつの間にか電池切れになるもの。充電器は多めに確保しましょう。 USB充電器が100ショップで手に入りますので、試してみるといいでしょう。



以上、慣れてらっしゃる方にとっては当たり前のものかもしれませんが、
特に新人さんをテストチームに迎えるときはこのへんを周知しておくとスムーズかと思います。
他にも良い心がけがありましたら是非コメントください!

2008年2月11日

Webデザインの「カン」を養うためにしたら面白いかもしれないこと
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんにちは。yamazakiです。今回はちょっと趣向を変えて、技術や手法ではなくて、デザイナとしての「カン」を養うために個人的にやっていること、やったらいいと思うことを簡単にまとめてみました。

左利きになったつもりで、左手をメインに使う生活をしてみる


例えば駅の改札口で、切符を入れるところはなぜあの位置にあるのか、自動販売機の硬貨投入口はなぜあの位置なのか。カメラのボタンの位置はなぜあの位置なのか。普段何気なく使っているものにもやはり「そうしたほうがよい理由」が潜んでいます。その「理由」を発見する上では、マイノリティの立場になってみると面白いです(海外に行くと逆に日本のことがよくわかる、というのと同じようなものかもしれません)
というわけで、簡単なところで、左利きになったつもりになって行動をしてみると色々な発見、気づきがあります。

何かを買ったら取扱説明書を見ずにどこまで使いこなせるか試してみる。


カメラとか携帯電話とか家電とか、色々な「操作」の必要なものを買ったときには、できるだけ取り扱い説明書を見ずに使ってみます。
自分で買ったものだけだと面白くないので、他の人に借りて試してみてもいいと思います(壊さない範囲で)。
説明書を見ずに使いこなせたら、それはなぜ説明書なしで使えたのか、逆に使いこなせなかった部分はなぜ使いこなせなかったのかを考えてみると、WebサイトなどのUIを作っていく上でのヒントが得られます。

電車に乗ったとき、街歩きするとき、何も考えずに周囲を見渡して、何に目が向いたか気にしてみる


自分の目が一体どういうものに向くのかを知ることで、人の視線をキャッチするには何が必要なのか、とかいったヒントが得られることがあります。
また、目の向いた先にあったものが広告だったとしたら、その広告の中身を自然と読んでしまったか、どの程度印象に残ったかとかを後で分析してみると面白いです。

寝る前に、今日見た広告を思い出してみる


電車に乗るときや街を歩くとき、コンビニの中など、生活の中で広告を目にする機会はあると思います。
そうやって見た広告の中で、どういう広告が記憶に残っているか、それはどういう広告か、なぜ印象に残っているのかを考えてみます。

他の人のPC操作の様子を眺めてみる


パソコンというのは面白い道具で、100人いれば100人それぞれ結構違った使い方をしていたりします。
ほとんどの操作をキーボードでやる人、逆にできるだけキーボードを避ける人。ショートカットをよく使う人、メニューを辿る人。
自分の使い方が全てではない、ということをよく知ることは、Webの使いやすさを考える上では大事なことだと思います。

Webサイトを見て、そのサイトを作った人になったつもりで「なぜこういうデザインなのか」を説明してみる。


Web上には色々なサイトがあります。どのサイトにもやはりデザイナーが関わっていて、そこには何かしらの意図があるはずです。
というわけで、その「デザイナー」になったつもりで「私はこういう意図でこういう見た目や構成にしました」ということを説明しようとしてみます。
さらにそれに対してディレクターやクライアントの気持ちになってツッコミを入れてみるとさらに面白いです。

WebサイトやUIのよいところを誉めてみる。


デザイナとして色々なものを見ていると、悪いところはわりとすぐに目につきますし気になるものです。
翻って「ほめる」となると、なぜか少し難しい。
悪いところを直してよくすることと、よいところを見つけてより魅力的にすることはどちらも必要なことだと思います。
その意味で、色々なものの「よいところ」を探すことも、意識的にやってみると面白いのではないかと思います。

以上で思ったことをすべて言葉にする。そしてBlogに書く。


世に出ているものを批判するというのは勇気の要ることだし、言葉にしようとすると、どうしてもきちんと説得力のある理由付けが必要になります。
言葉にしようとしてみると、曖昧な部分をはっきりさせなくてはいけなくなりますし、そこから得る気づきというのもあるのではないかと思います。
といったわけで、文章にして、せっかくですのでBlogなどに公開してみるのもよいのではないかと思います。


他にも色々あるのではないかと思いますが、ひとまずはこのへんで。
他に何か「こういうことやると面白いよ」ということ、ありましたらぜひ教えてください!

2008年2月 6日

Ruby on Rails: mongrel_clusterのフロントエンドに nginxを使用する
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんにちは satoです。

nginx(えんじんえっくす)はロシアで開発されているwebサーバで、軽量、高速が売りのようです。もちろんvirtualhostやrewrite機能にも対応しています。今回はmongrel_clusterのフロントエンドに使ってみました。

mongrel_railsのインストールと環境構築


mongrel_railsをインストールします
gem istall mongrel_cluster --include-dependencies

設定ファイルを作ります。RAIL_ROOTで
mongrel_rails cluster::configure -e development -p 4000

とすると RAILS_ROOT/conf/mongrel_cluster.yml ができます。
--- 
log_file: log/mongrel.log
port: "4000"
environment: development
pid_file: tmp/pids/mongrel.pid
servers: 2

mongrel_clusterを起動します。
mongrel_rails cluster::start


nginxのインストールと環境構築


nginxは URIのrewrite機能 等に pcre を使うので、 pcre-develをインストールしておきます。
yum install pcre-devel

nginxをソースから入れます
wget http://sysoev.ru/nginx/nginx-0.5.35.tar.gz
./tar zxvf nginx-0.5.35.tar.gz
./configure --with-md5=/usr/lib --with-sha1=/usr/lib
make
sudo make install

設定ファイルを編集します。
vi /usr/local/nginx/conf/nginx.conf
http {
upstream mongrel_cluster {
server localhost:4000;
server localhost:4001;
}
server {
root html;
location / {
proxy_pass http://mongrel_cluster;
}
}
}

設定ファイルのフォーマット等テストをします。
sudo /usr/local/nginx/sbin/nginx -t
2008/02/06 20:47:55 [info] 4249#0: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
2008/02/06 20:47:55 [info] 4249#0: the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully

起動します
sudo /usr/local/nginx/sbin/nginx

設定ファイルを以下のようにすれば静的ファイルは nginxが出力したりと、LVSと比べて Layer7の部分でいろいろできるかもしれないです。
  server {
root html;
if (-f $request_filename) {
rewrite (.*)$1 break;
}
if (!-f $request_filename) {
proxy_pass http://mongrel_cluster;
break;
}
}

-追記-
ごめんなさい 書いてから気がついたのですが
http://www.slideshare.net/zhesto/rails-deployment-with-nginx
とほとんど同じ内容でした。

2008年2月 2日

システム自動管理ツールPuppetを使ってみた
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

miyakeです。今日は、近頃話題のオープンソースなシステム自動管理ツール「Puppet」の小ネタをご紹介します。

今回使用した環境ですが、とりあえず試してみようという感じで、CentOS5.0(x86_64)にDAGリポジトリから0.22.4をインストールしています。現時点でのstable版は0.23.2なのでやや古く、設定や機能も変わっているため、本エントリの内容が合致しない場合もあるかと思いますがご容赦ください。

インストールや基本的な設定は、gihyo.jpにてペパボCTOのmizzyさんが執筆されている連載が大変詳しいので、そちらをご覧ください。

本エントリでは、そうして試したみたところ僕自身が引っ掛かった部分などをご紹介します。

単にpuppetmasterdとpuppetdを起動した状態だと、クライアントが定期的にマスターからマニフェストを取得しますが、通常の運用ではやはりマスターから能動的にマニフェストを配布したい場面が多いのではないでしょうか。そこで用意されているのがpuppetrunですが、個人的に欲しい挙動と少し違ったので、別のアプローチを取っています。

まず、puppetrunを本格的に使うには、LDAPによるノード管理が実質ほぼ必須になってきますが、ちょっと試してみようという向きにはハードルが高いように思います。

また、puppetrunをkillした時にTCP:8139を解放してくれないことがありました。「基本はpuppetrunで走らせるけど、ちょっとverboseで動かしたい」という時にこれで困りました。もっともこれは現行のバージョンでは直っている可能性も高いのですが。

ちなみに、puppetdはTCP:8140、puppetrunはTCP:8139で通信を行いますが、puppetrunを使用する場合はPuppetクライアントとなるサーバがpingに応答する必要があります。どうやら、puppetrunはPuppet通信を行う前に、対象のサーバにpingを投げて疎通確認をしているようです。

そんな経緯で、ssh経由で各クライアントのpuppetdを実行するシェルスクリプトを書きました。ssh経由で「sudo /usr/sbin/puppetd」を実行しているので、それを許可しているネットワークでしか実行出来ません。

#!/bin/sh

PUPPET_SERVER="puppetserver"  # puppetmasterdを動かすサーバ
PUPPET_OPTIONS="--onetime -v --logdest /var/log/puppet/puppet.log"  # puppetdの実行オプション

HOGE_SERVERS=(
HOGE01
HOGE02
...
)

FOO_SERVERS=(
FOO01
FOO02
...
)

dopuppet() {
    for i in $@; do echo "[$i]"; ssh $i sudo /usr/sbin/puppetd --server $PUPPET_SERVER $PUPPET_OPTIONS; echo; done
}

if [ $1 ]
then
    case "$1" in
        all)
        dopuppet ${HOGE[@]}
        dopuppet ${FOO[@]}
        ;;
        hoge)
        dopuppet ${HOGE[@]}
        ;;
        foo)
        dopuppet ${FOO[@]}
        ;;
        *)
        dopuppet $@
    esac
    exit 0
else
    echo "Usage: dopuppet {all|hoge|foo|[servers]}"
    echo ""
    echo "  dopuppet all"
    echo "      run puppetd in all servers"
    echo ""
    echo "  dopuppet hoge"
    echo "      run puppetd in hoge group"
    echo ""
    echo "  dopuppet foo"
    echo "      run puppetd in foo group"
    echo ""
    echo "  dopuppet [servers]"
    echo "      run puppetd in any servers like 'dopuppet server01 server02 ...'"
    echo ""
    echo "This script wrote by Ryo Miyake<miyake@unoh.net>"
    exit 1
fi

HOGE_SERVERSやFOO_SERVERSにサーバの一覧を記述して、それをグループとして扱います。マニフェストのクラス設定に合わせておく想定です。マニフェストと自動で同期出来ないためDRYではありませんが、「使ってみたいけどLDAPで管理するとこまではちょっとしんどい」という場合(すごくニッチかも知れませんが)にはこういうアプローチもあるよということで。マニフェストから自動的にクラス毎のサーバ定義を取得してくれるスクリプトとかあると便利かも知れません。

スクリプト内で指定しているpuppetdの起動オプションの解説もしておきます。

--onetime
マニフェストを一度適用したらpuppetを終了します。コマンドラインから実行する時に。
-v(--verbose)
詳細を標準出力に出す。
--logdest
ログを任意のファイルに出力。confの設定より優先されます。

上記スクリプトでは、マニフェストの適用が1サーバずつになるため、動作の詳細を把握しやすい代わりに、一定の台数を超えると実行に時間がかかりすぎるという問題もあります。

100大規模以上のネットワークではやはりpuppetrunを使用するのが王道かと思いますが、ちょっと試してみたい場合の参考になれば幸いです。

2008年2月 1日

OAuth プロトコルを知る
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

こんにちは、naoya です。

昨日の社内勉強会で、OAuth について行いましたので、そのときの資料を公開します。

OAuth プロトコルの解説のあとに、TwitterOAuth 経由でステータスを更新するクライアントを作ってみたので、そのソースコードをおいておきます。サンプルでは、現在時刻をステータスとして更新しています。ダウンロードは、こちらからどうぞ。ちなみに、OAuth の仕様書では、Authorization ヘッダに埋め込む方法が書いてありますが、Twitter では対応していませんでした。実際に動作を見てみたい人は、サンプルコードを設置してみてください。

サンプルコードに含まれているファイルは、次の通りです。

  • oauth_twitter.php: まずこのファイルを開きます、Request Token リンクをクリックすると認証トークンを取得開始します
  • oauth_twitter_access_token.php: 認証トークンとアクセストークンを交換するプログラムです
  • oauth_twitter_callback.php: コールバック用のページです
  • oauth_twitter_common.php: oauth 用の URL パラメータを生成する関数が含まれています、Consumer Key と Secret Key を設定する必要があるます
  • oauth_twitter_request.php: 認証トークンを取得開始するプログラムです
  • oauth_twitter_update_test.php: 取得したアクセストークンを使って、Twitter API を使ってステータスを更新します




現在、OAuth に対応しているサイトはとても少ないですが、今後の広がりに期待したいと思います。

2008.2.6 追記: 岩本隆史の日記帳より、スライド中の発音について指摘をいただきました。僕の英訳ミスでした。もともとはオースだったということでした。スライドの方を修正させていただきました。ご指摘ありがとうございました。

  [PR] 転職


About 2008年2月

2008年2月にブログ「ウノウラボ Unoh Labs」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2008年1月です。

次のアーカイブは2008年3月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

ウノウサービス