kamiのサービス制作ログスマートフォン用の表示で見るkamiのサービス制作ログひとりでサービスを制作している人の作業ログ的なブログこの広告は、90日以上更新していないブログに表示しています。2014-06-11ニートが1週間でアイデア共有サービスをつくったときの記録こんにちは、どうしようもないニート無職の@kami30kです。ここ最近つくっていたサービスをようやくリリースしたので、作業ログ的な記事を書いてみます。CAFEというサービスのアイデア共有サービスです。DESIGNにつづいて自身3つめのサービスとなります。CAFE簡単に説明すると、知っている人は多い(と思う)ideamiのようなサービスです。ぼくはこのサービスがとても好きだったのですが、最近あまり使われていないようで、とはいえサービス自体のニーズはあると思うので、今回サクッとつくってみました。機能自体はとてもシンプルで、Twitterで認証するアイデアを投稿するグッド(いいね!のようなもの)、コメントなどをつけてもりあがるだけのサービスです。一応スマートフォンでも閲覧できるようにしています。リリースすることだけを目標にしたので、ノーティフィケーションなどはまだついていないです。テストユーザの方にも意見をいただいたのですが、小さなバグもあるようで、そちらも対処しなければ......。ぼくはだれかこの手の記事って、書き手がどういう人かが大事とも思うので、簡単に自己紹介させていただきます。サービスをつくるにあたって、以下の技術を用いました。Railsじゃない理由は、Sinatraの勉強がしたかったからです。SoloRSpec/Capybara/FactoryGirl採用ツールまた、以下のツールを使用しました。PivotalTrackerからTrelloに移行してしばらくですが、個人的にTrelloの方がだいぶ手に馴染んでます。ツール選定の基準は、他の人が開発にジョインしても対応できるよう、コラボレーションの面に気をつけました。いっても、最近のツールであればなんでもいい気がします。タスク管理:Trelloバージョン管理:Bitbucketドキュメント管理:EvernoteCI:Jenkins制作プロセス以下、どうやってサービスをつくったかをつらつらと走り書きしました。ある程度時系列順になっています。Soloですが、今回は単にSinatraの準備をしました。Mac上で直接実装しました。Soloで数分で完了!独自ドメイン設定デプロイツール設定Capistranoを利用Unicorn起動関連タスク作成CIツール設定Jenkinsは以前CIサーバとして立てていたので、プロジェクトだけつくった実装ここに4日くらいかかってるセキュリティチェック動作確認さすがにIE8は無理でした本番環境用DBのバックアップ設定リリース時のプロモーション案決定たとえばこの記事もこれのひとつです公開リーンキャンバスの作成から公開まで、作業時間でいうと40〜50時間くらいでした。ニート無職の時間は無限大なのです。perfectこれはザッカーバーグの言葉らしいですが、常にこの言葉を念頭において作業しています。いうのも、以前つくったサービスは、1週間でつくるとの宣言をたやすく覆し、軽く1ヶ月かかってしまいました。最終的にモチベーションはほぼ0でした。これ以来、「とにかくはやくつくる」ことだけを考えてサービスをつくっています。サービス名は5分で決め、marginの1pxのずれにこだわりすぎないようにしました。質がクリティカルに響く部分についてはじっくり考えます。投稿/消費モチベーションを考えるこのサービスは、コンテンツの投稿者と消費者(閲覧者)の2者から成り立っています。「双方にサービスを利用するモチベーションはあるか?」という観点でサービスを設計しました。Professionalというクライアントが便利です。Onlyですが、別にクライアント側で操作はしないので、十分実用的です。SQLiteはバックアップが簡単SQLiteはデータが単なるファイルなので、cronで毎日cpするだけでバックアップになります。バックアップファイルをMacからsftpで定期的に手元においておくとさらに安心です(個人サービスでのみ許される愚行)。以前MySQLを使った時はBackup+Wheneverだったので、この点でもSQLiteは軽量アプリケーション向きだと思いました。スマホ向けメニューはSidrで実装ドロワーメニュー作成用のjQueryライブラリにSidrというものがあります。横幅が960px以下の場合、これでメニューを表示するようにしました。多少クセがありますが、とても便利です。Scrollは意外に簡単に実装できます。ページングを実装すればいいです。ローディングアイコンなども無駄にこだわってみました。VimからAtomに移行した最近昼食をとりながらRebuildを聞くのが習慣になっているのですが、その中で開発環境の話があり、ぼくもVimじゃなくモダンなツールに挑戦しないと駄目だな〜と思い、Atomに移行しました。使うだろうなぁ、と思う程度には馴染んでます(そもそもあんまりVimに慣れてない)。bashからzshに移行した以前からid:naoyaさんがシェルのTipsについて話しているのを聞いていたので、とうとうzshを入れました。ググっていたらoh-my-zshではなくPreztoの方がいいみたいなのでこっちにしました。結果、とてもよいです。すごい人が採用している技術はなんでもやってみなきゃ駄目だなぁと実感しました。多くの集中タイムをつくれるかが鍵ひとりでやっていて本当にそうだなぁと思うのは、没入して作業できる時間をいかに確保できるかが大事、だと思います。デタラメに作業の時間を確保するのではなく、いかに作業自体の時間を短くするか。作業の時間ではなく質の向上を頑張るべきだと感じました。時間とクオリティに相関関係はないと思います。結局「いかにRailsに近づけるか」になってしまうSinatraで実装したけど、「Modelを分けたい」「Helperがほしい」「ActiveRecordがほしい」という感じで、だんだんRailsな構造になってきました。ほかにもURLの設計やI18n、Session周りの設定だったり。Railsでいいじゃん、という話だけど、Sinatraは「コードを見渡せる感」があって好きです。Railsの場合、ぼくの技術が足りないのか「Railsに書かされてる感」があります。Sinatraとkaminariは相性が悪いどこかのissueでも見たのですが、kaminariはSinatraに正式に対応してないらしく、実際いくつかの問題がありました。kaminariを使っていないページでlayoutが読み込まれなかったり。今回はページングにwill_paginateを使いました。RSpecは仕様書である......という話をRebuildの結構前の回で聴いてたのですが、全然仕様書っぽく書けてませんでした。具体的に言うと-fdオプションをつけたときに仕様書っぽくなるように書けていませんでした。shavingを避ける今までは、問題が発生したらとりあえずエラー文でググって、なんか関連しそうなリンク開いて、いつの間にか関係ないページを見て......という問題が頻繁に起こっていました。これはいかんと思い、とりあえず問題が発生したら「発生した問題」と「考えうる原因」をホワイトボードに明示化し、この原因のみについて解明するようにしました。これで結構改善しています。Google先生のおかげで、自分の頭で考えない自分が形成されつつあるので、もっと自分の頭で考えるようにします。テストユーザの方の協力が嬉しい今回、リリース当日の昼間にTwitterでテストの募集をかけさせていただいたのですが、何名かの方に手をあげていただき、とても親切なフィードバックをいただけました。いうやりとりが、サービスづくりの醍醐味かもしれません。今後ユーザへのノーティフィケーション機能の実装コメントへのグッド!機能コメントの削除機能アカウントの完全削除機能グッド押下時のアニメーション改善その他いろいろおわりにとはいえ最初にコンテンツがないとアレなので、ぼくの方で一人でせっせとアイデアを投稿してます。ツイートはてなブログをはじめよう!kami30kさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。