2011年10月18日火曜日

トップページに掲載されている自転車の情報を知るには

たくさんの方々から投稿をいただき、MyBike.JPのトップページはいつも色彩豊かなバイクで飾られています。トップページの写真はユーザの投稿に応じて随時変更されており、このサイトを訪れる一つの楽しみになっています。

機械的に取得することが出来るとライブ壁紙やダウンロードが容易になるのでは?という意見を何度かいただき、夏前から試験的にAPIを実装していました(本業多忙のため夏の間は一時中断していましたが…)。

試行錯誤を重ね、写真URL、トップページの自転車およびオーナ情報が取得できるAPIを、先週から試験的に公開しています。


前者はトップページ画像の正式なURLにリダイレクトを行います。後者は自転車およびオーナの情報をJSON形式で返します。

とてもシンプルなAPIですが、これから様々なAPIへ拡張することへの第一歩であり、フィードバックを得るための足がかりとしたいと考えています。ご意見・ご要望はハッシュタグ#mybikeをつけてtweet, もしくはinfo@mybike.jpまでお問い合わせください。

これからも使いやすく気の利いたサイトを目指して開発を進めます!
Enjoy riding!

2011年10月15日土曜日

ストレージ障害から復旧しました

13日の晩から15日にかけて、画像へのアクセスを伴う各種処理が停止していました。画像(写真)の入出力に伴うソフトウェアが、仕様変更により処理が行えなくなったことが原因です。当該の時間にご覧になったユーザのみなさま、ご利用のユーザのみなさま、ご迷惑をおかけしまして誠に申し訳ございませんでした。




MyBike.JPは様々なソフトウェアスタックを利用して開発しています。利用しているソフトウェアは、ネットワークサービス周りのnginxやMongoDBといったミドルウェア、開発言語のPythonはもちろんのこと、これらに付随するライブラリまで多岐に渡ります。

ソフトウェアは不定期にアップデートがあるため可能な限り追従していますが、利用しているソフトウェアの仕様変更による不整合、開発環境とプロダクション(本番)環境の差異により、不具合が発生した形となりました。

ストレージシステムには分散ファイルシステム(MongoDB GridFS)を採用しており、Python製のストレージドライバ(django-storages)を使用して読み書きを行なっています。このストレージドライバは別途ライブラリ(django-mongodb-engine)を利用します。

今回、ライブラリのバージョン変更に伴う仕様の変更により、ストレージドライバとの整合性がとれなくなり、ストレージそのものへアクセスを行うことが出来なくなったことが問題です。

新旧のソフトウェアの違いは次のようになります。

django1.2.51.3.1
django-mongodb-engine0.3.00.4.0
django-storages1.1.3 + mybike patch 11.1.3 + mybike patch 2


django-mongodb-engineのバージョンアップに伴いデータベースへのアクセス方法が変更されたため、ストレージ障害が発生したというわけです。

これまで書いたとおりソフトウェアのバージョンアップはリスクを伴いますが、セキュリティホールの修正、メンテナンス性の向上など、サイトを運営し続ける上で様々なメリットがあります。もちろん障害を起こして良いわけではありませんが、リスクを取らずに硬直化するよりも、可能な限り前進する姿勢でいたいと考えています。

いろいろご迷惑おかけしましたが、今後ともどうぞよろしくお願いします!

2011年7月24日日曜日

検索機能を追加しました

以前から要望の多かった検索機能を追加しました。ページ右上のフォームから、自転車、コンポーネント、製造者(ブランド)を検索することが出来ます。



この変更に伴いフレームナンバー検索が停止しています。こちらは盗難車の捜索に必要な機能ですので、すぐに再開する予定です。

また、ユーザや日誌の検索、売り出し中の自転車検索なども続けてサポートする予定となっています。

素敵な自転車が見つかるといいですね!
Happy riding!

山と渓谷社「自転車人 2011年夏号」に掲載されました

今月発売となった自転車人 2011年夏号にMyBike.JPが掲載されました。



「デジタルの世界で自転車はいま」という題材で、半ページほどMyBike.JPを取り上げて頂きました。もう半分は公私共に仲良くしていただいている竹谷賢二さんのiPhone / iPad向け電子ブックの話。サイトを立ち上げた経緯、今後の展望について簡単にまとめられています。

詳しくはお近くの書店で、誌面の131ページを御覧ください!

2011年6月19日日曜日

コンポーネントの編集機能

1ヶ月ほど前の事になりますが、コンポーネントの編集機能をリリース致しました。

コンポーネントは通常自転車に付随(もっと厳密に言うならばフレームに付随)するものですが、これまでは登録を行った後に編集することが出来ませんでした。

自転車とコンポーネントを個別に管理するよう改修を検討しましたが、改修範囲が広域に渡ることが判明したため、まずはコンポーネントの編集機能をリリースしました。

自転車の詳細情報表示ページのコンポーネントの一覧部分がリンクとなっており、クリックすることでコンポーネント情報の詳細表示ページへ遷移します。



この写真では表示されていませんが、ユーザが管理していコンポーネント名の脇に「編集」ボタンが表示されます。このボタンから、コンポーネントの編集ページへと移ることが出来ます。



自転車そのものと同様、コンポーネントのステータス、モデル名、メーカ、説明文などを編集することが可能で、また、要望の多かった写真も添付できるようになりました!

ページデザインのアップデートや、高度な自転車管理(「自転車から部品を取り外す」、「再度他の自転車に取り付ける」など)が行えるよう、開発を進めています。

Happy riding!

2011年5月16日月曜日

近況とMyBike.JPグッズ

ご無沙汰しております!

大きなアップデートはリリースしていませんが、ほぼ毎日のように少しずつ改修を進めています。先週は、いくつかの小さなバグ修正をリリースしています。大きなところではコンポーネントの管理機能を作成しており、コンポーネント単位で管理が行えるようになります。リリース時期は未定なものの、今月末、遅くとも来月中にはリリース出来ると思います。

ところで、CafePress.comというサイトをご存知でしょうか?



ドロップシッピングと呼ばれるサービスの一つで、画像などを登録して商品を選ぶと、誰でも簡単にオリジナルグッズのストアを開設することが出来ます。数年前に一度触ったことがあったのですが、この間ふと思い出して、開発メンバへのプレゼントにMyBike.JPグッズをいくつか作ってみました。






いくつかの画像をTwitterに投稿したところ「欲しい!」という方がいらっしゃいましたので、こちらでアナウンスすることにしました。

MyBike.JPグッズは次のURLからアクセスすることが出来ます。
MyBike.JP Online Store



また、サイトの下部にリンクを掲載しました。



英語圏のサイトですが、利用支払いはPayPalがご利用いただけます。PayPalはリファンド(返金)も効くので、万が一品物に問題があった場合でも安心かと思います。

個人的なチョイスでいくつかのアイテムを出品しました。よろしければお一ついかがでしょうか?売上はサービス維持のための費用に回されます(ちなみに、もともと開発メンバへのプレゼント用ですからほとんど利益はアリマセン)。

Facebook上で、MyBike.JPからFacebookへフィードの提供やアンケートなども行っているので、よろしければ「いいね!」おねがいします!
MyBike.JP | Facebook

梅雨になる前にたくさん自転車に乗りたいですね。Happy Riding!

2011年4月22日金曜日

利用規約を追加しました

しばらく前の事になりますが、MyBike.JPの利用規約を追加いたしました。ページフッタの利用規約のリンクからご覧くいただくことが出来ますのでご一読ください。



本来リリース時に用意しておくべきものでしたが、対応が遅くなりまことに申し訳ございませんでした。ユーザ目線の使いやすいサービスを目指して継続していく予定ですので、今後ともどうぞよろしくお願いします。

日誌のツイート機能を追加しました

すでにリリースされているためお気づきの方もいらっしゃるかと思いますが、日誌記述、編集時のツイート機能を追加しました。Twitter連携を行っている状態で日誌追加時に「保存してツイート」をクリックすると、Twitterへタイトルとリンクが投稿されます。



また、ログインしているときの画面上部に「日誌を書く」のリンクを追加し、日誌投稿への遷移を簡便化しています。




しばらく更新が空いてしまいましたが、今後ともよろしくお願いします。

2011年3月12日土曜日

東北太平洋地震について

先日発生した東北太平洋地震により、東北地方で多数の死者、行方不明者が出ている模様です。甚大な被害を受けた陸前高田、大船渡は開発エンジニアの@key3の出生の地であり、誠に勝手ながらしばらくの間、サイト上部に情報ポインタを掲載させてください。

2011年3月6日日曜日

走行距離のグラフ表示

先月のリリースで走行距離、時間、整備の記録などを記入できるようになりました。この情報は自転車の管理のために入力するもので、管理の指針となる別のページが必要と考えられました。

そこでjQuery jqPlotというライブラリを使用して履歴の表示ページを作成しました。

自転車ページの右側にある「履歴を見る」をクリックすると、履歴の表示ページへ遷移します。



履歴ページでは、日々の走行距離のグラフと走行距離が入力された日誌へのリンクが一覧されます。マウスカーソルをグラフの頂点に合わせると、ツールチップに走行距離が表示されます。



自転車と同様に個々のコンポーネント(こちらの方が距離や時間の管理が重要でしょう)のページ、寿命や交換時期の設定などが行えるように改善していきます。

Happy riding!

盗難情報の投稿にCAPTCHA認証を追加しました

MyBike.JPの盗難車量への情報提供は誰でも気軽に行えることが特徴でしたが、先月末より悪質な書き込み=SPAMの投稿が目立ったため、CAPTCHA認証を追加しました。

非ログイン状態で盗難情報ページへアクセスすると、左下にreCAPTCHAのフォームが現れます。投稿時には、この中の文字を読み取って正しくフォームに入力する必要があります。



残念ながら今のところ重要な手がかりとなる情報は寄せられていませんが、少しでも盗難車の発見の力となれれば幸いです。

2011年2月21日月曜日

RSSフィードを追加しました

すでに数日前からリリースされていたのでご存知の方もいらっしゃると思いますが、MyBike.JPにいかの3つのRSSフィードを追加しました(クリックするとフィードリーダーが起動する…かも知れません)。



RSSフィードの購読はGoogle ReaderLivedoor Readerなど任意のツールを利用すると便利です。

フィードを利用することで情報の取得が容易になり、また、自転車をお酒のツマミにしたいというニッチな欲求(笑)にも応えることが出来ると思います。

ユーザ個別の日誌、自転車のヒストリ(日誌による整備、ライドの記録)などもフィード出力を行うよう調整中ですので、今しばらくお待ち下さい。

Happy riding!

2011年2月17日木曜日

日誌機能を追加しました

ご無沙汰しております。前回の更新から2週間以上何をしていたかというと、表題のとおり日誌機能(ブログ)を作成していました。技術的にクリアしなければならない課題が多く、作業が難航してだいぶ遅れましたが、ようやくリリースすることが出来たのでここでご報告します。

日誌の表示:


アップデートされた日誌、自転車の管理ページ(古いページは廃止しました):


【日誌機能について】

日誌機能は前述のとおり簡易ブログとして扱ってもらえればよいでしょう。しかし、世にある様々なブログサービスとは異なる点があります。

MyBike.JPで提供する以上、自転車に特化した機能が必要だと考えており、今回のリリースで「自転車の走行記録」、「機材の整備記録」を入力することが出来るようになりました。

例えば、自転車のチェーンが、何キロ、何時間走行したかを計算している人はほとんど居ないでしょう。しかし、サイクリングに行くたびに距離や時間をメモしている人は少なくないでしょう。MyBike.JPの日誌としてこれらを登録することで、サイト側で自動的に積算値を計算することが出来ます。

日誌入力ページの「ライド」から自転車を選択して、走行距離、時間を入力すると、日誌として反映されます。



整備記録はそのすぐ下にある「メンテナンス」から登録することが出来ます。部品を選択し、整備内容(項目が不足しているという場合はご連絡ください!)、ノートを入力することが出来ます。複数入力する際には「さらに追加」をクリックするとフォームが追加されます。



その他、日誌のタイトル、本文を入力して、「保存する」ボタンをクリックすれば登録完了です。

走行距離、時間、メンテナンスの内容はサイト上に記録され、ここの自転車(フレーム)、部品にヒモ付て管理されます。つまり、自転車や部品の履歴=ヒストリを管理することになり、将来のメンテナンスやモノ自身の信頼性向上に役立てることが出来ます。

残念ながらデータのサマリ機能はまだリリース出来ていませんが、現在のインターフェースで入力いただければ、後日サマリとして出力することをお約束します。

大掛かりな改修が一段落したので、前述のサマリ計算、グラフ表示、画像のアップロード(無いほうが変ですよね!)など細部の煮詰めを進めていこうと思います。

では、Enjoy riding!

2011年1月30日日曜日

iPhone用ビューをリリースしました

スマートフォン対応(iPhone用)のビューをリリースしました。PC版URLにアクセスを行うと自動的にリダイレクト処理が行われ、スマートフォンに最適化されたページが表示されるようになりました。






ページ下部のリンクから、PC版のビューに切り替えることも可能です。PC版へ切り替えるにはページ下部にある次の画像の「PC版」をクリック!



PC版ビューではログイン、ログアウト、会員情報の編集など、すべての機能が利用いただけます。





サイトのデータは逐次整理して確認しています。2週間ほど前にデータを確認したところ、実に驚くべきことが判りました。

元々MyBike.JPはTwitterとの結びつきが強いのですが、なんと全体のアクセスの半分が解像度320 x 480という解像度となっており、これはつまり、iPhoneからのアクセスがわたしたちの予想以上に多いと判断することが出来ました。

今月半ばに開催したMyBike Studyの際にスマートフォン対応にとりかかっていましたが、一部機能を整理してようやくリリースすることが出来ました。これでTwitterからのアクセスも快適です。

ログイン、ログアウト、会員登録など一部機能はまだ対応していません。また、Androidについても同様の対応を行う予定なので、アップデートを楽しみにお待ちください。

Enjoy!

2011年1月27日木曜日

nginxのGridFSブリッヂ

ここ数日サイトが非常に重たい状態となっておりご迷惑をおかけしております。エラーレポートが(メールで)送られてくるので問題は把握していたのですが、解決までに時間がかかってしまっています。

アプリケーション的、システム構成的、両面からのアプローチを検討し、2つの対策を行いました。


  • アプリケーションの見直し

  • システム構成変更による改善



アプリケーションの見直しは、モバイル対応を行った際に変更した部分が関係すると考え、その点を中心に見直しを行いました。いくつか問題点があったため変更を行いリリースしています。

もう一点、システム構成を変更して、保存された写真の提供方法を改善しました。

写真の提供方式について少し掘り下げて解説したいと思います。

旧方式ではnginxからFastCGIによりdjangoへ接続し、そこからMongoDB GridFSのファイルを取得していました。pythonで処理が行えるためプログラミング的にデバッグがやりやすい、加工等の処理が行い易いというメリットがありますが、反面、一度画像データをバッファリングする必要があり、メモリを圧迫する状況となっていました。



GridFSへのアクセスパスを効率的なものに変更できないか探したところ、nginxからMongoDB GridFSへブリッヂできるnginx-gridfsというライブラリを見つけました。

これはAPL / GPLで提供されるnginxの拡張モジュールで、nginxがHTTP経由で受け取ったリクエストに応じ、GridFS内のファイルを取得し、レスポンスすることができます。nginx内でも画像データのバッファリングは行っていると考えられますが、少なくともpythonプロセスでメモリを浪費することはなくなります。



パフォーマンス障害は深刻な問題だったため早急に対応を行う必要があり、構成変更前後でのベンチマークは取得していませんが、体感値ではずいぶんと高速化した印象です。

機能強化ももちろん必要ですが、ユーザが快適に利用出来ることも同じように重要です。時間は限られており様々な要望にすぐ答えることは難しいのですが、ユーザの体験を大事にして、便利で使いやすいサイトを目指して今後も改善を続けたいと思います。

2011年1月26日水曜日

MyBikeのタグ設計

MyBikeでのソーシャルタグの設計、採用しているフレームワークであるDjangoの特性について、BeProudさんの勉強会で話してきました。発表資料をslideshareで公開したので興味のある方は御覧ください。



日本語の名寄せなど課題は残っていますが、少しずつ改善していきたいと思います。

2011年1月22日土曜日

携帯電話用ビューをリリースしました

PC用サービスとして提供を続けていたMyBike.JPに携帯電話用のビューを追加しました。フィーチャーフォン、いわゆるガラパゴス携帯=ガラケー用の画面で、主要国内3キャリアの携帯電話に対応しています。



新着、自転車の詳細ページ、オーナページなど一部機能のみの対応ですが、これで出先でも自転車を紹介できますね。http://mybike.jp/m/ もしくは以下のQRコードからアクセスすることが出来ます。



お楽しみください!

2011年1月20日木曜日

退会方法についてのご案内

サービス再開後のMyBike(mybikenote.com)はメールアドレスをもとにしたユーザアカウントの照会が行えないため、Facebookページからメッセージでお問い合わせください。

現在、MyBike.JPにはアカウントの退会を行う機能がありません。退会を希望される方は、MyBike.JPに登録しているメールアドレスから、info@mybike.jp宛に「退会希望」と添えてご連絡ください。数日中にアカウントの退会処理を行い、折り返しご連絡いたします。

なお、登録外のメールアドレスの場合、退会処理を行うことが出来ません(アカウントの検索が出来ません)のであらかじめご了承ください。

タグ機能をリリースしました

自転車へのタグ機能をリリースしました!

MyBike.JPには自転車のカテゴリがありません。これは、システム的にカテゴリを作成することで自転車を強制的に分類することになり、様々な種類の受け入れる方針と相容れないと考えているからです。しかし、やはり自転車を分類したいという要望が多く、最適な(最大公約数的な)解決策を考えていました。

写真サイトのFlickrや、ユーザ参加型動画サイトのニコニコ動画には「タグ職人」と呼ばれる方々が活躍していて、コンテンツにタグ付けを行っています。

これらにならい、MyBike.JPでもログイン済みのユーザは他のユーザのコンテンツにタグ付けを行うことが出来ます。

タグ付けは自転車の詳細画面、右下のフォームから行います。



以下のフォームに任意のタグを入力し、保存をクリックするとコンテンツにタグ付けが行われます。複数入力する場合には半角のカンマ(,)で区切ってください。



タグそのものをクリックすると、タグつながりの自転車を一覧ページへ遷移します。また、タグの右にある赤いアイコンをクリックすることで、不要なタグを削除することが出来ます。



ユーザによりつけられたタグは今後の統計解析に利用します。

メーカつながり、タグつながりなど、ユーザ入力データによる一覧ではなく、ショッピングサイトのAmazonで提供されているおすすめ商品のように、似かよった自転車や人に出会えるような仕組みを提供する予定です。

お楽しみに!

Happy riding!

2011年1月17日月曜日

MyBike Studyを開催しました

去る1/16に、BeProudさんのオフィスをお借りして、MyBike.JPのデベロッパミーティング「MyBike Study」を開催しました。今回は主にWebアプリケーションデベロッパの集まりで、MyBike.JPの内部構造、開発やバグ修正のフローなどの共有が目的です。

(後ほど資料を入れるかも)

システム構成の紹介を済ませた後は、環境構築、開発のハンズオン。

開発環境はほぼ全員Macを使っているのですが、構築者はずの環境構で画像ファイルのバリデーションエラーが発生したり、非同期タスクがクラッシュしたりとトラブルが続きました。しかし結局、PIL=Python Imaging LibraryのJpeg supportが無効になっていた(コンパイル後にはsupportedと表示されるのに!)ことが原因とわかり、開発に進むことが出来ました。

作業内容はチケット(作業内容や課題が書いてあります)の中から興味のあるものを自由に選びます。

Pythonに不慣れなエンジニアもいたのですが、つまずくところをフォローしながら進めると数時間後にはiPhone / Android用のビュー、国内モバイル3キャリア用のビューのプロトタイプが動くようになりました!

この成果は二月の上旬リリースを目標に作業を進めています。お楽しみに!

Enjoy coding!

2011年1月13日木曜日

プロフィールページをリリースしました

ユーザプロフィールページをリリースしました!

以前より「ユーザ別に自転車を見たい」、「この自転車のオーナは、他にも持っているのかな?」という意見、要望をいただいていました。ユーザプロフィールページをリリースしたことにより、そのユーザが所有している自転車の一覧表示が出来るようになりました。



ユーザプロフィールページは http://mybike.jp/people/usernameでアクセスすることが出来ます。私のアカウント名はkey3なので次のようになります。

http://mybike.jp/people/key3

また、自転車の個別ページから、オーナ欄をクリックすることでプロフィールページへ遷移することが出来ます。



素敵な自転車仲間が見つかると良いですね。

Happy Riding!

2011年1月11日火曜日

製造者別フレーム登録数

製造者別に自転車(フレーム)の登録数はきっと重要な統計情報なので、毎日バッチで取得しています。運用開始から一週間ほど経った現在、登録数はどうなっているでしょうか?上位15件を公開します。

             name              | count 
-------------------------------+-------
Cannondale | 35
LOOK | 27
GIANT | 27
Specialized | 27
TREK | 27
ANCHOR | 20
Colnago | 18
TIME | 16
Panasonic | 15
Cervélo | 14
Pinarello | 14
RIDLEY | 11
Ravanello | 11
Bianchi | 11
ORBEA | 11


Cannondaleはダントツトップ。その他に、Specialized, TREKも上位にランクインしており、アメリカ勢が強いと言えそうです。台湾GIANTは孤軍奮闘ながら3位に位置しているのは世界最大の自転車メーカとしての意地(?)でしょうか。

日本やイタリア、フランスなど、その他の国も上位につけており、個人的には意外と散らばったなという印象です。

2011年1月10日月曜日

フレームナンバーはどこにあるの?

ほとんどの場合、ボトムブラケットシェルの裏側に打刻されています(部品に打ち込まれています)。次の写真は、自転車を左後ろから撮影したもので、赤くて丸い部品がボトムブラケットで、ねじ込まれている部分がボトムブラケットシェルです。



自転車を裏返すと、ボトムブラケットシェルにこのように刻印されています(全体像と拡大像の車両が異なっていてすいません)。



TREKは何故か3行もあるのですが、WTUから始まる文字がフレームナンバーのようです。

防犯登録番号やその他のシリアルナンバも入力したいという意見をいただいているので、こちらの制限は順次緩和する予定です。




フレームナンバーは自転車に固有の情報ですが、個人との直接的な結びつきはありません(MyBike.JPではメールアドレス以外の個人情報を取得していません)。

MyBikeは現在、自転車ギャラリーとして機能していますが、あらかじめフレームナンバーを登録しておくことで、盗難抑止、万が一盗難された際に、オークションサイトなどでの発見が比較的容易といったメリットがあります。

実は、自転車の写真を持っていない方が多く、「そういえば車台番号知らなかった…」という方もいらっしゃるなど、自分の自転車について意外とよく知らないことがあるものです。掃除ついでに確認してみてはいかがでしょうか?

Happy riding!

よくある質問とその回答

毎日のようにTwitterのハッシュタグ #mybike を検索して確認しています。よくいただく質問がまとまったので、こちらに掲載します。


Q. フレームナンバーってなんですか?

A. フレームそのものに振られた「車台番号」のことです。フレーム毎に固有のため、メーカは車台番号から製造ロットや場所などを検索できます。

Q. フレームナンバーはどこに書いてありますか?

A. ボトムブラケットの下に刻印されています。え、見たことない?一度確認してみてはいかがでしょうか。このQAの最後に写真を掲載します。

Q. 写真がアップロード出来ないのですが

A. iPhone / iPadは添付ファイル付きのフォームに対応していないため、写真をアップロードすることが出来ません。アプリの提供を予定しているので今しばらくお待ち下さい。それ以外の問題がある場合には次の項目をお読みください。

Q. どのような画像ファイルに対応していますか?

A. 2MBまでのJPEG画像に対応しています。この値が十分なものかどうかは、今後運営していく中で改めて検討します(おそらく拡大することになるでしょう)。

機能の追加、変更など

以下が変更となりました。


  • 新規登録時に写真を登録できるようになりました

  • 自転車詳細ページのURLをリンクするようにしました

  • 自転車編集時にTwitterにつぶやくか選択できるようにしました

  • その他あちこちバグの修正



大きな変更はありませんが、少しずつ改善しています。

2011年1月6日木曜日

機能の追加、変更など


  • 最近登録された自転車最近盗難に遭った自転車のページを新設しました

  • 自転車詳細ページのHTML Descriptionを追加しました

  • 横幅が540px未満の写真をアップロードした際の画質を改善しました

  • Twitter連携が解除できるようになりました

  • Twitter連携を行っているアカウントで、編集時につぶやいていたのを停止しました

  • 縦横比の同じ画像(Instagramなど)をアップロードした際にサムネイルが生成されない不具合を修正

パブリックベータになりました

すでに一昨日の出来事でTwitter界隈には伝わっていると思いますが、MyBike.JPをパブリックベータとして公開しました。つい一昨日まではクローズテストステータスで、招待した方しかサービスを利用することが出来なかったのですが、メールアドレスをお持ちの方であればどなたでも登録することが出来ます。

以下のURLからメールアドレスを入力することで登録できます。

サインアップ - MyBike.JP

パブリックベータに変更したとたんに大量の問題が噴出し、せっせと修正を行っていたためこちらでの告知が遅れてしまい申し訳ございません。

現在のステータスですが、ユーザ数は270人超、自転車は(1度に1台しか乗れないのに)350台登録されています。登録されたみなさま、本当にどうもありがとうございます!

MyBike.JPへの機能要望は、ハッシュタグ #mybike や私(@key3)へのmentionでTwitterにつぶやいていただくか、こちらのブログへのコメントで受け付けています。

これからもよろしくお願いします。

2011年1月2日日曜日

製造者の入力欄にサジェスト(提案)を追加しました

製造者(メーカ)入力欄は自由に記入することができます。システム側では入力内容で既存データとのマッチングを行い、存在すれば既存データと紐付け、そうでなければ新規に登録するという処理を行っています。

これはユーザの自由度の高い方法といえますが、システム的には入力内容の細かい差によってデータが異なってしまいます。データが異なると「◯◯つながり」など、検索が行えないため問題です。

具体的には、例えばサドルメーカのセラ・イタリアという会社があります。「SELLE ITALIA」や「Selle ITALIA」、「SELLA ITALIA」と入力することが出来ますが、これらはすべて別のメーカとみなされます。セラ・イタリア本家のウェブサイトを見る限り、「selle ITALIA」というつづりが正しいようです。

テストに協力いただいている方々のデータを確認していると、大文字、小文字、カタカナ、漢字など、複数の文字がまぜこぜに利用されていることが判りました。次のような具合ですね。



人間は入力を間違ったり、勘違いして覚えていることが多々あるので、入力ミスをユーザのせいには出来ません。システム的に、入力・編集時に候補を挙げることで、入力ミスを減らすことが出来ると考えました。

アシアルさんの「jQuery用プラグイン「Autocomplete」を使って入力補完機能を実装してみる」を参考にjQuery Autocompleteを導入し、製造者名の入力欄にサジェスト機能を追加しました。



入力ミスが減り、データが綺麗になり、より多くのフレーム・パーツなどが発見できると、きっと素敵だろうと思います。

Twitter投稿機能をリリースしました

Twitter投稿機能をリリースしました!連携は次の手順で行ってください。

ページ上部の「アカウント」を開いてSIGN IN WITH TWITTERをクリックします。



Twitter.comのMyBike.JPアプリケーションの許可画面に切り替わります。内容文をよく読んで許可をクリックしてください(同意しない場合はTwitter投稿機能は利用できません)。



再度MyBike.JPのページに切り替わるのでアカウントページを確認します。「Twitterと連携しています(スクリーンネーム)」と表示されていれば連携完了です!



この機能を利用すると、自転車の登録時、編集時、削除時、(考えたくはないですが)盗難時にTwitterへ自動的に投稿が行われます。ハッシュタグ #mybike で検索することで、MyBike.JPに登録している他のユーザのアクティビティを見ることが出来るでしょう。

現在のところ簡単な内容文ですが、将来的に「盗難されました」、「売出中となりました」「処分されました」など、自転車のステータス変更に応じた文面に変更する予定です。この機能を利用することで、迅速に情報を伝播することができるようになり、盗難車両の早期発見、売出中自転車の里親募集などに活用できることでしょう。

oauth-python-twitterのパッチ

MyBike.JPではTwitterの連携にoauth-python-twitterを使っています。このライブラリを使うと容易にTwitter OAuth連携が作ることが出来ます。

しかし、開発環境などで別のドメインを使っている場合に、コールバック先URLを変更できない問題がありました(ちなみに、MyBike.JPでは商用環境がhttp://mybike.jp, 開発環境は主にhttp://localhost:8000で行っています)。

リクエストトークン取得部分に以下のようなパッチを当てて、コールバックURLを直接指定することで任意のURLへリダイレクトしています。

--- __init__.py-orig 2011-01-02 01:01:08.000000000 +0900
+++ __init__.py 2011-01-02 01:01:24.000000000 +0900
@@ -192,13 +192,14 @@
token = self._FetchUrl(url, no_cache=True)
return oauth.OAuthToken.from_string(token)

- def getRequestToken(self, url=REQUEST_TOKEN_URL):
+ def getRequestToken(self, url=REQUEST_TOKEN_URL, oauth_callback_url=None):
'''Get a Request Token from Twitter

Returns:
A OAuthToken object containing a request token
'''
- resp = self._FetchUrl(url, no_cache=True)
+ parameters={'oauth_callback':oauth_callback_url}
+ resp = self._FetchUrl(url, no_cache=True, parameters=parameters)
token = oauth.OAuthToken.from_string(resp)
return token


Twitter OAuthのコールバックの挙動は、Application Type, Callback URLの指定内容により異なるようです。[OAuth]【宿題】twitterのcallback URLのあたりについてはっきりさせたい!のエントリを参考に確認と実装を行いました。

2011年1月1日土曜日

トップページの画像表示を変更

トップページの画像表示方法を変更し、マウスポインタを載せると車種名、年式などがオーバーレイされるようになりました。一見して何の車両だかわからない場合はマウスを載せてみてください。また、画像をクリックすることで詳細ページへ移動することが出来るようになりました。



今思いましたけど、これ、タッチデバイス(iPhone / iPad)では有効ではないですね。こうしたデバイスへの対応は将来的に行なっていく予定です。

ちなみに、オーバーレイはjQueryというJavaScriptのライブラリとプラグインの組み合わせで動いています。

最初はjquery.imageoverlayというライブラリ(公式サイトダウンロードサイト)で開発を行っていたのですが、処理のタイミングにより画像が表示されたり、表示されなかったりすることがありました。問題がわからずjquery.imageoverlay 1.3.2のソースコードまで追いかけたところ、環境によっては既知の問題のようでTODOの記載がありました。

imageoverlayの使用を諦め、別のオーバーレイ用ライブラリを探し、現在はcaptifyというjQuery用のライブラリを採用しています(公式サイト)。こちらは大変シンプルなライブラリで、10行くらいの導入部とスタイルシートを記述するだけでオーバーレイを実現することが出来ました。

ここ数日、少しずつ見た目の変更を行っているのですが、いかがでしょうか?開発環境がMacのため、実はApple Safari, Google Chrome, Firefoxのみでしか確認を行っていません。もしMicrosoft Internet Explorerでおかしな表示などを見かけましたらご連絡いただけますと助かります。