タグ

ブックマーク / blog.masuidrive.jp (18)

  • 組織も人も最適化の果てにあるのは緩やかな死

    なんか会社のチャットネタが続きますが、先月、会社のチャットでマクドナルドの衰退と吉野家のリンクから最適化の話しになり、「もしトレタが最適化しすぎると、どういう風に発展の妨げになるんでしょう」って話しが出てちょっと面白かったのでブログにまとめて見ることにしました。 私がアプリ開発で一番怖いと思うのは、既存ユーザへの最適化です。 既存ユーザはある程度使いこなした上で「あの機能が欲しい」と要望を出してきます。確かにその機能があると便利ですし、他のユーザでも喜ぶ人が大勢います。 実際、その機能実装すると多くのユーザが便利になり満足度があがります。画面にボタンは増えましたが使わないユーザが不便に思うほどではありません。 誰も困らないし、この機能追加はとても正しいことに見えます。 でもその機能があることで、初めて触るユーザはどう感じるでしょうか?画面にボタンが多いほど、マニュアルが厚いほど初めてのユー

    組織も人も最適化の果てにあるのは緩やかな死
    kamipo
    kamipo 2014/11/07
  • チャットで勤怠管理する「みやもとさん」をリリースしました

    トレタで使っている、チャットで勤怠管理する「みやもとさん」をオープンソースでリリースしました。 https://github.com/masuidrive/miyamoto Slackの#timesheetsという部屋で、「おはようございます」と書き込みと出勤が記録され、「お疲れまでした」と書き込むことで退勤となります。「明日はお休みさせて頂きます」と書き込むと、休暇の届け出になります。 チャットで勤怠管理する最大のメリットは、オフィスに居なくても誰がいつ出勤・退勤したのか全員が分かることにあります。出退勤管理アプリは色々出ていますが、営業で直行直帰する人や、リモートワーカーなどは、帰った時間がリアルタイムでわかりにくいという欠点があります。 「みやもとさん」では、チャットでやりとりする事でみんなの見える形で出退勤が記録され「あ、帰る前にあれも!」など、ありがちなコミュニケーションがスムー

    チャットで勤怠管理する「みやもとさん」をリリースしました
    kamipo
    kamipo 2014/10/20
  • 軽量Ruby – mrubyとRubyの違い

    MobiRubyで書いた”さめがめ” 去年の春からずっとコツコツと作っているmrubyでiOSアプリが書けるMobiRubyが久々に動く様になったので、1年近くmrubyを触ってきて気になった所を少し書いてみます。 以下、mrubyと区別しやすくするために、普段みなさんがお使いのRubyをCRubyと書いています。 mrubyって? mrubyはMatzが去年発表した省メモリ版のRuby実装です。CRubyの機能を全て実装している訳ではなく、JIS/ISOの規格をベースに設計・実装されたものです。JIS/ISOの規格書は有料なのですが、最終ドラフトがIPAのサイトから確認できます。 mrubyの経緯や概要は、日経ITProによるMatzへのインタビューが分かりやすく、内部などについては、IIJさんや東芝情報システムさんがまとめている記事が参考になります。 現在の所リリース版はなく、GitH

    kamipo
    kamipo 2013/01/28
  • iPad miniで持ち歩けるコーディング環境を作る

    iPad mini + Cellularを朝一番から並んで買いました!軽くてLTEでネットが使えるということで、外に持ち歩き端末としてはApple史上最高な端末です。 しかし、私は出かけるときには常にコードを書ける環境を持って歩きたいので、結局MacbookProかAirを持って出かけることになってしまいます。 最近、MBP15に代えたのでちょっと持ち歩きが厳しいなと思っていたので、この際iPad miniでコードを書く環境を構築することにしました。 まずはキーボード。前に買ってあったrapoo E-6300をBluetoothで接続してみます。一発でつながったし、サイズ感も良い感じです。 蓋になる形のキーボードも出ているようですが、とりあえずE-6300で問題なさげ。 次にメインとなるエディタです。iPadでソースコードを書くのに適していて、Dropboxに対応しているエディタといえば、

    iPad miniで持ち歩けるコーディング環境を作る
    kamipo
    kamipo 2012/12/05
  • Appceleratorを退職しました

    2012/09/30を持ちまして、Appcelerator, Inc.(以下Appc)を退職しました。2010/12に入社して以来、Titanium Mobile(以下Ti)のエバンジェリストとして活動し、多くの方々にお世話になりました。この場を借りてお礼申し上げます。 私はAppcを離れますが、Appcに取って日は世界で2番目に大きなコミュニティを持つ、大切な場所であることに変わりはありません。CEOのJeffやCOOのSandeepが先週来日し、その講演の中で日のビジネスについても、近々発表すると話をしています。Jeffは海外のメディアによるインタビューの中でもAppcは今年、日を含むAPAC地域に投資をする明言しており、これからも日でのTiビジネスが加速していきます。 Tiは大変多くのユーザー支えられおり、各地でも有志によるイベントなどが開催されています。また先日、Titan

    kamipo
    kamipo 2012/10/01
  • リビングにIKEAで作る2畳の快適仕事環境

    予定では年内に、AppceleratorのHQのある、Mountain Viewに行く予定だったのですが、いろいろありまして、アメリカへ戻ることなく、しばらく日で腰を据えることになりました。引き続き、日でよろしくお願いします。 そこで東京でマンションを契約して、半年以上アメリカに置きっぱなしだった荷物を取り寄せることにしました。アメリカでの家具や家電はほとんど処分してきたので、また全部買い直しです・・・ orz 「IKEAと5万円で作る快適仕事場」が好評だったので、今度は日バージョンで書いてみることにしました。前回と同じでリビングで快適に仕事をするための環境を作ることを目標にしています。予算も前回と同じぐらいな感じで。 リビングに机を置くため、家を探すときにも、都内でリビングが広い1LDKを中心に探しました。家探しについては、Togetter – 「@masuidrive / @ka

    リビングにIKEAで作る2畳の快適仕事環境
    kamipo
    kamipo 2012/03/11
  • Geohashのアルゴリズム

    Photo by Ludovico Cera 前回、最後にGeohashのエンコード・デコード方法を解説、とか書いたのですが、私が書く前にyuroyoroさんがブログで解説していました。しっかり解説されているので、ぜひ、そちらをご覧ください。 Geohashのミソは、座標を2進数にして、それを交互に並べる所にあります。そしてそれをBASE32でエンコードすることで、座標を文字列にして表現しています。 BASE32は、5ビットで1文字なので、Geohashの長さが奇数の場合は、経度の方がビットが短くなります。 (例: 5文字の場合 全25ビット 緯度が13ビット、経度が12ビット) そのため、グリッドの大きさが、Geohashが奇数の場合は縦長、偶数の場合は横長になります。 ビット列から文字列へのエンコード方法に、BASE32を使っているのは大文字小文字を区別しないためだと思いますが、これを

    Geohashのアルゴリズム
  • 緯度経度を文字列で表すGeoHash - @masuidrive blog

    なんか世間的に位置情報アプリが流行ってるらしいし、Google App Engine(GAE)も楽しそう。どうせだから、GAEでなんか位置情報アプリでも作ってみよう!と思ってTwitterに書き込んだところ、Geohashという、位置情報のプロトコル?を教えてもらいました。 これは、その名の通り、位置情報をハッシュで表す規格なのですが、いろいろおもしろい特徴があり、調べているうちに楽しくなってきたので、勢い余ってPure Rubyのライブラリまで書いちゃいました。 そのあと、結局ライブラリを作ったところで満足して、アプリは何も作らなかったので、せめてGeohashの解説でも書いておこうと思います。 位置情報は通常、緯度経度で表します。たとえば東京タワーの緯度経度は35.65861, 139.745447です。 北を上にした地図でいうと、緯度がY座標で経度がX座標です。英語では緯度をlati

  • Ubuntu / OSXにPerlbalをインストールする

    Photo by stebulus nginxなども調査してみたのですが、Perlbalが一番細かくキャッシュコントロールできること、Perlで書かれているので改造がしやすいことから、これを使う方向で進めてみることにしました。 まずは、S3にreproxyする場合に、認証用のヘッダを付けるようにしないとな。 ときどき死ぬとの情報もあるのですが、これはプロセス監視と複数起動することで対処することにします。 OSXや、UbuntuにPerlbalのパッケージが無かったので、インストールする方法をまとめておきます。 パフォーマンスはまだ計測していないけど、WassrもPerlbalを使ってるんですね。 # CPANの初期設定 cpan <<EXIT no o conf urllist push http://t.ring.gr.jp/pub/CPAN/ o conf prerequisites_

    Ubuntu / OSXにPerlbalをインストールする
  • masuidrive on rails - RailsアプリをチューニングするならNew Relic RPM

    Photo by Riverman72 あとで自分メモを書こうと思うけど、先に一言。 37signalsも使っているといううたい文句に惹かれて試してみた、Railsのパフォーマンス記録ツール/サービスNew Relic RPM(Rails Performance Management)が、すばらしい。 RPMは開発時用のDeveloperと、実機用のProductionのが二つあり、まだ開発時用のDeveloperモードしか試してはいないんだけど、専用の管理画面で、アクションを実行時のメソッド単位の実行時間、生成されるSQLSQLの実行時間やインデックスの利用状況などが非常に簡単に把握できます。 Railsで開発している人なら、下のムービーを見れば、そのすごさが分かるはず。 RPM developerのデモ動画 | RPM production のデモ動画 いまこれを使って、PhotoS

  • Capistranoでmigrationsする前に自動でバックアップ

    Photo by mondopiccolo Capistranoではdeployしても、前のソースが残っているために、すぐに前のバージョンに戻せますが、データベースはそうはいきません。 そこで、deploy:migrationsを実行する前に自動でDBのバックアップを取るようなタスクを探してみました。 MySQL専用ですが、これでローカルのbackupsというディレクトリに、migration実行前のダンプがダウンロードされます。 require 'yaml' desc "Backup the remote production database" task :backup, :roles => :db, :only => { :primary => true } do filename = "#{application}.dump.#{Time.now.to_i}.sql.bz2" fi

    Capistranoでmigrationsする前に自動でバックアップ
  • EC2の固定IPを使ってみる

    初期状態では、一つのインスタンスに、EC2の中だけで使えるPrivate IPと、外部からアクセスするためのPublic IP(グローバルアドレス)が割当たってます。 インスタンス自体への割当IPはPrivate IPですが、上位のルータに1:1のNATがあり、これによって外部からPublic IPでアクセスできる様になっています。 今までの、Private IPとPublic IPに加えて、今度は固定IPのグローバルアドレスが割り当てられるElastic IPを選択出来るようになりました。 これは、Public IPと同じ様に、外部からアクセスするためのグローバルアドレスですが、AWSアカウント毎に発行されるので、インスタンスの再起動などによって代わる事はありません。 これを使えば、EC2で最大の問題点であった、「インスタンスを再起動するとIPアドレスが代わる」という問題から解放されます

    kamipo
    kamipo 2009/02/04
  • masuidrive on rails » Blog Archive » masuidrive的プロジェクトの方針

    初めて会社員になって早3ヶ月。会社の仕組みもやっと分かってきたし、そろそろ格的に開発プロジェクトも動いて行くということで、今後、社内で私と一緒に開発して行く人に、「私がどういう考えで仕事を進めていきたいか」という事を知ってもらうためのプレゼンを作ってみました。(今のところ一人だけど) NIFTYさんと仕事した時も、作業に入る前に「今までどうやって遠隔地で仕事を進めてきたのか」をプレゼンしていました。特に初めて仕事をする場合、「今まで自分はどういう風に仕事をしてきて、この仕事はどういう風に勧めていきたいか」を明確にしておくと、スムーズに仕事を進めることができます。 仕事、特にその上でのコミュニケーションをうまく進めていくためには、信頼と共通認識が必要だと思ってます。信頼は当たり前の話ですが、開発を進める上での共通認識についてはあまり重要視されることが無い気がしています。 仕事をする上ではコ

    masuidrive on rails » Blog Archive » masuidrive的プロジェクトの方針
    kamipo
    kamipo 2008/11/28
    まずはここを目標にしたい。
  • masuidrive on rails » Blog Archive » プロジェクトの始まりはTracから

    そんなわけで、プロジェクトの始まりはTracから。これがないと仕事が始まりません。 Tracが一番良いわけでも無いんだけど、日語マニュアルがあるところと、ユーザが多いことから、subversionとの連携スクリプトなどが多数公開されているところが、選択理由です。 Railsベースでも複数、プロジェクト管理ソフトが出てきているので、どれか良い物に育ってくれると嬉しいなと思っています。 さて、tracのインストール方法はwebで沢山見つかるので、それを参考にインストール。 Tracは初期設定でも十分使いやすいんですが、チケット登録で担当者をドロップダウンリストにするために設定を変更します。 tracの設定ファイル conf/trac.iniの下記の項目を変更してください。 [trac] default_charset = utf-8 # 文字コードはUTF-8で [ticket] restr

    masuidrive on rails » Blog Archive » プロジェクトの始まりはTracから
    kamipo
    kamipo 2008/11/27
  • RailsでMemcachedが落ちていてもエラーにならない方法

    Photo by masuidrive76 Railsで高速化するためには、Memcachedによるキャッシュが欠かせないですが、もしmemcachedが落ちてしまうと、サービス全体でエラーが発生してしまうのが、気になるところでした。 Takiuchiさんと話をしていて、fiveruns-memcache-clientを使うことで、memcachedを再起動さえすれば自動で再接続されることはわかったのですが、やはりmemcachedが落ちている時はエラーになってしまうのが問題でした。 どうせ、キャッシュはキャッシュなのだから、memcachedが落ちている間はキャッシュを使わない様にするパッチをmemcache-clientに組み込もうと思って作業をしていたら、実はcache_fuにその機能があるのを発見しました。 config/memcached.ymlで、「raise_errors:

    RailsでMemcachedが落ちていてもエラーにならない方法
  • EventMachineを使ったクローラの書き方の足がかり

    Photo by pnoeric いま、PhotoShareで使うために、高速なEvent Driven方式のネットワークライブラリ、EventMachineを調べています。 このEventMachine、ほとんどの場合はサーバを作るときに使われていますが、HTTPクライアントの機能も実装されており、実はクローラの様な物を作るときにも利用することができます。 今回はこっちを使いたかったのですが、ググってもほとんど情報が出てこなかったので、Seattle.rbで相談したところ、Aaronさん(RubyKaigi 2008でプレゼンしているのをustで見てコンタクトしました)からサンプルが貰えたので、それを元に、同時接続する様にしてみました。 このコードだけだと役には立ちませんが、情報が少なかったので参考に上げておきます。 require 'rubygems' require 'eventma

    EventMachineを使ったクローラの書き方の足がかり
  • masuidrive on rails - ブログにはてブのコメントを表示するhatana_bookmark_anywhere.js

    Photo by puddles for snails ブログを書いていると、はてなブックマークにいいコメントが付くことがあって、これが多くの人に見てもらえないのは、勿体ないなぁーと思うことがたまにあります。 当はブログのコメント欄に残してもらえるとうれしいのですが、敷居が高いのかなかなか書いてもらえません。 それなら、ブログにはてなブックマークのコメントを表示すればいい!と思って作ってみました。 どこでもはてなブックマークのコメントを表示するスクリプト、「hatana_bookmark_anywhere.js ver 0.1」をリリースします。 実際の設置例はこのページの下の方を見てください。 設置方法は超簡単。https://raw.github.com/masuidrive/hatena-bookmark-anywhere/master/hatena-bookmark-anywhe

    masuidrive on rails - ブログにはてブのコメントを表示するhatana_bookmark_anywhere.js
  • HyperEstraierで個人データを検索する[まだ調べ中]

    mixiでも使われているって言う全文検索エンジンHyperEstraier。mixiの膨大な件数を処理するぐらいだから相当スケーラビリティもあるだろなーとおもいつつ、SQLだけで全文検索できちゃうMySQL+Sennaが便利なんで、そっちばっかり使ってました。 MySQL+Senna(Triton)も、PostgreSQL+Senna(Ludia)も、属性付きで検索した場合、Sennaで全文検索してから、その答えをSQLで絞り込みを行っているようで、たとえば、個人のメッセージを保存しているテーブルを検索した場合など、属性の値が多い場合には、かなり効率が悪くなる事が見えてました。 当は、メッセージみたいなものは、個人ごとにインデックスをもって処理するべきなんだろうなと思っていて、SennaでやるかHyperEstraierでやるか迷いつつ、ぐぐっていたところ、HyperEstraierがど

  • 1