Award on Rails 2007 大賞をいただきました!

2007年10月27日、有楽町でプログラミングコンテストAward on Rails 2007の表彰式が行われ、なんと「hakatter」が大賞をいただきました! (審査結果発表はこちら) 

こちらが賞金のパネル。テレビ番組などでよく目にするヤツですね。立派なパネルなので、ぜひにといただいて帰りました。台風が近づいている中、大きなパネルを持って歩くのは少し大変でした(笑)。どこに飾ろうかな。

hakatterは「体重をもっと簡単に記録したい。ひとりでPCに記録するだけじゃ続かない。Webを使ってみんなで記録できるようなサイトが欲しい」という思いから生まれました。特に目新しい技術を使っているわけではありませんが、明確なニーズのある分野に対して、シンプルで使いやすいサービスを提供した点が評価されたのかもしれません。

コンテスト主催者の皆さん、懇親会でお話をさせていただいた皆さん、hakatterを利用しているユーザーの皆さん、そしてRuby on Railsというフレームワークの開発に携わっている世界中の開発者の皆さんに、感謝の気持ちでいっぱいです。ありがとうございました。

自分が欲しいものを作って、他の人にも使ってもらえて、喜んでもらえて、ほめてもらえるなんて、開発者冥利につきるとはこのことですね~。

体重管理 Webサービス「hakatter」公開

今日は、皆さんの健康管理(体重管理)の強い味方をご紹介します。

お恥ずかしながら、私自身、 運動が苦手で美味しいものが大好きという生活習慣の持ち主。気を抜くとすぐに体重が増えてしまいます。そんな私が注目したのが、テレビ番組「ためしてガッテン」で紹介された「はかるだけダイエット」という方法です。

確かに効果的なのですが、 実際に試してみると、なかなか続かないんですよね。ひとりだけだと、モチベーションを維持するのが難しいんです。ダイエット成功の秘訣を探るため、社員との面談の中で、成功した事例や失敗した事例、いろんな事例を研究しました。そして、はかるだけダイエットを成功させるコツは「グラフを公開して、誰かに見てもらうこと」ではないかという仮説にたどり着いたのです。

そこで、2007年の5月からブログで体重のグラフを公開してみました。「さぼると恥ずかしい」「体重が増えたら恥ずかしい」という意識が働くためか、3ヶ月にわたって体重測定を続けることができ、約4kgの減量に成功しました。

この体験を元に、インターネットを使って体重の記録やグラフを簡単に公開できるWebサービス「hakatter」を作りました。朝夕の体重を記録してグラフ化してくれるサービスです。体重が増えた言い訳や、歩数や血圧なども記録することができます。

hakatter1.jpg hakatter2.jpg
hakatter みんなで! はかるだけダイエット!
僕のページ http://hakatter.com/electricdoc

「グラフを公開している」「がんばっているユーザーが大勢いる」ということが励みになって、みなさんのはかるだけダイエットが成功することを祈っています。もちろん、僕もがんばりまーす!

おまけ情報: hakatterはRuby on Railsというフレームワークで作ったアプリケーションです。開発をがんばるためにDrecom Award on rails 2007というコンテストに参加しています。間に合ってよかったー!

hakatter モチベーター機能を仮搭載

先日公開した体重管理サービス hakatter、おかげさまでたくさんの方にご利用いただき、感謝しています。

みんなで! はかるだけダイエット 「hakatter」
僕のページ http://hakatter.com/electricdoc

モチベーター機能(お気に入り機能)を搭載

昨日、モチベーター機能を仮に搭載し、これで一通りの実装が完了しました。twitterやmixiのような相互交流の機能を持たせると、会社内のアクセス基準ルールに違反するおそれがあるので、単純にブックマークするだけの機能にしました。

他の人の様子を見ることで、自分自身のモチベーションも高まるのではないかと考えています。みなさん、それぞれのペースでがんばってますね。

今後のToDo

  • トップページにhakatterの説明を追加
  • ドキュメントの整備
  • hakatterのfaviconをデザイン
  • 現在の会員数、新規登録数、昨日の更新数などの集計情報を表示するように。
  • 運営者からのメッセージを表示できるように。
  • 背景グラフィックの改善
  • 各ユーザーのページにアクセスカウンターのようなものを設置する?
  • 最後に、携帯端末用の画面を作る

体重管理サービス hakatter α版公開

Ruby on Rails で作成している、はかるだけダイエット支援サービス「hakatter」のα版を、とりあえず公開してみました。みなさんのご意見をお待ちしています。

みんなで! はかるだけダイエット 「hakatter」
僕のページ http://hakatter.com/electricdoc

hakatterは「1日2回、朝と晩に体重をはかることが体重管理に重要である」という「はかるだけダイエット」を支援するサービスです。「ひとりだとなかなかモチベーションが続かない」という課題を解決するために作成しました。

□ Ajaxを駆使したデータ入力画面。

今の段階でできること

  • はかるだけダイエットの機能はほとんど作り込んだ
  • 体重の記録をつけ、グラフ化する。
  • グラフを他のブログなどにはりつける。
  • 他のひとの記録を眺める。

まだできていない部分

  • 「みんなで!」の部分は仕様を検討中
  • モチベータ (お気に入り? 足あと? Follower?)の実装
  • サイドバーのアイコン一覧をどうしようか迷い中。
  • トップページのデザインや、マニュアルなどのドキュメント

「みんなで!」の部分をどう実装しようか

ひとりで「はかるだけダイエット」を行うための機能はだいたいできあがりました。これからは「みんなで!」の部分を作っていきます。ユーザー同士でモチベーションを高めあい、体重の記録を継続できるような仕組みを作りたいのですが……なかなかアイディアがまとまりません。

□ とりあえずトップページに最新の更新を並べてみた

ユーザー同士のつながりというと、mixiの「マイミクシィ」や「足あと」機能などがあります。しかし、「いつもアクセスしてくる人がいてイヤだ」、「誰も自分の体重の記録をみてくれない」という問題をはらみます。

海外のフィットネス支援サービスtraineoには、週に1度、登録しておいた「モチベーター」のみんなに週報メールを送る、という機能があります。これも、メール送信先の認証を得る必要がある(あるいはtraineoの会員登録が必要)など、少し敷居が高い感じもします。

また、社内からのアクセスを許可してもらうためには、SNSやチャットに相当する機能はつけられないという制限もあります。つながりの距離、使いやすさなどを考えてみると、twitterのFollower (お気に入り) の機能が一番シンプルなような気がします。

体重測定のモチベーションを維持するために、どんな機能がふさわしいか、みなさんのアイディアや、不具合報告、要望など、ご意見をお待ちしています。

Ruby on Railsでの開発でつまづいたこと(メモ)

体重管理サービス「hakatter」を開発中です。プログラミングをしていると、たくさんの「なんかよくわからないけど、動かない」という場面に遭遇します。そんなとき、ネットや書籍も参考になるのですが、自分の環境に合った答えをみつけるまでに、とても苦労します。そんなわけで、簡単にメモ。

検索などでこのページにたどりついた方のために、僕の環境を書いておきます。

■開発環境と実行環境

  • Mac OS X 10.4
  • Apache / 1.3.33
  • ruby 1.8.6
  • Rails 1.2.3

■CSS関連

  • デフォルトではフォームの下端に余白ができるのでCSSで消す。
  • 全ての要素の余白を“ * {margin:0; padding:0;} と初期化できる。
  • フォームのテキスト入力欄の幅はブラウザの種類によって変わるが、CSSでピクセル単位で指定するとそろう。
  • 同じようなものを並べるときは、tableタグでレイアウトするのではなく、ulやliなどの箇条書きをCSSでレイアウトする。
  • WindowsのIEとMacのSafariとは、文字表示やフォントが全く違うので、どちらの表示も満足させるCSSの指定は難しい。
  • CSSを無効にしたとき、平文でも構造化されたHTMLが出てくるとうれしい。
  • view/layoutにあるレイアウト用のrhtmlファイルの先頭行を次のようにする。 <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”ja” lang=”ja”>

■Ruby on Railsの動きについて

  • ブラウザからアクセスがあると、新しくコントローラのインスタンスが作られる。コントローラの処理によって、表示するデータを用意して、ビューやヘルパーに渡してHTMLを描画する。
  • コントローラ > ビュー (ヘルパー) の流れまでは、インスタンス変数(@で始まる変数)の内容は保持される。1つのアクセスに対する処理が終わったらすべて消えてしまう。
  • 次の画面(Ajax含む)へ情報を渡したいときは、フォームやリンクに情報を埋め込むか、セッション情報を使う。
  • ファイルのアップロードを行うと、10KB以下のものはStringIOオブジェクトとして、10KB以上だとTempFileオブジェクトが生成される。StringIOオブジェクトの場合は、localpathメソッドが使えないため、画像ファイルの変換など、ファイル名が必要なときは自分で保存しておく。

■Ajax関連

  • タグの正しい入れ子の順番は<div><form><table><tr><td>。

■ページめくりの処理を自前で行う

  • ページめくりの処理を自分で書くには、1ページの項目数 > 全体の項目数 > 最終ページ番号 > 表示するページ番号 > 表示する最初の項目の位置、の順に求める。

■Ruby on RailsをApacheで動かす

  • デバッグに多用する p メソッドは、Apacheサーバーでは Malformed header というCGIのエラーになるので、公開時にはすべて消しておくこと。
  • 何かエラーが起きたとき、ブラウザ画面上には「サーバーエラー」としか表示されない。詳細はApacheのログファイルを見ないと分からない。
  • Apacheのエラーログは /var/log/httpd/errorlog にある。
  • 公開前に、tmpフォルダ、logフォルダの中身はすべて消しておくこと。中身が残っているとエラーの原因になる。
  • tmp、logフォルダに対して、wwwユーザーが読み書きできるようにしておくこと(“chmod -R a+w tmp”“chmod -R a+w log”)。

■Rubyの日本語処理

  • environment.rb に ”$KCODE=’u’と設定してUTF-8環境で動くよう明示しておく。ターミナル画面への出力や、正規表現ライブラリなどはここを参照して動く。
  • UTF-8の日本語文字は1文字が3バイト