オープンソースにて開発を一緒にしませんか?
5〜6名程度のグループワークにてオープンソースで開発を行うイベントをイノベーション東北さんと現在企画中です。
(おそらく10月〜11月のどこかで実施を予定しています。)
作るものは、とある事業者さんのサイトをリニューアルするという内容になりますが
開発現場の第一線で使われている技術を利用し、その技術習得をできる場となればとも思っております。
言語は今のところ未確定(Ruby on Rails or Go ..etc)となりますが、GitHub、CIツール、PaaSを使って開発を進めます。
方であったり
- 普段ぼっち開発なので..チームでの..開発を..経験..したい..
- テーマが決まらない..(作ろう会メンバーの方)
また、企画の段階から一緒に参加頂く事を予定していますので、開発プロジェクトを一から経験する場にもなると思っています。
興味のあるデザイナー・プログラマーの方、上記技術を得意とするエンジニアの方(是非サポート頂きたいです..)と、
本イベントをきっかけに、一緒にワイワイ開発を行いませんか??
尚、普段お仕事が忙しい方や、時間の都合がつかない方も沢山いると思いますので、
無理のないスケジュールで、かつ、リモートでもお手伝い頂ける環境を整えたいと思っています。
本会のイベント詳細が決まりましたら、別途、makewith.Eventにて告知を行いますが、
現時点で興味がある方がいましたら是非、honbinまで!!
Enjoy!!
herokuでhubotをhipchatに
hipchatのユーザー制限がなくなったので、チャットをhipchatに移行した。hubotをherokuにて動かす作業をしていたら、思いのほか時間がかかってしまったのでそのとき対処した内容をメモに残しておきたいと思います。
※詳細な手順は以下記載しておりませんが、コマンド履歴はhttps://gist.github.com/honbin/64af90e4a5684c221deeに書いておきました。
! Push rejected, no Cedar-supported app detected
herokuへデプロイ時に上記エラーがでてあげられず、当該環境(Node.js)にて必要なファイルがない時に本エラーが起きるとのことだったので、https://devcenter.heroku.com/articles/getting-started-with-nodejsのマニュアルを確認。Node.jsのアプリとして認識するために、package.jsonが必要とのことなのでnpm install --save hubot-hipchat
とせずに、package.jsonからライブラリをインストール。そして、node_modulesを.gitignoreに設定した。
$ npm init $ vi package.json { "name": "hemhem", "version": "0.0.1", "private": true, "description": "hemhem is my company's hubot", "dependencies": { "hubot": "*", "hubot-scripts": "*", "hubot-hipchat": "*" }, "engines": { "node": "0.10.x", "npm": "1.2.x" }, "devDependencies": {}, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "honbin", "license": "MIT" } $ npm install $ vi .gitignore node_modules
デプロイ完了後にheroku ps
にてプロセスを確認したところ、crashしてしまい動いていなかったのでheroku logs
にてログを確認。
bash: bin/hubot: No such file or directory
PATH=vendor/node/bin:bin:node_modules/.bin:$PATH
とheroku側でパスを通してくれているとのことだったので、Procfileを以下に修正。
vi Procfile bot: hubot -a hipchat -n hemhem
修正後にプロセスを確認したところ、またcrashしていたので再度ログを確認。
/usr/bin/env: coffee: No such file or directory
coffee-scriptを入れていなかったので、dependenciesに追加。
$ vi package.json { "name": "hemhem", "version": "0.0.1", "description": "hemhem is my company's hubot", "dependencies": { "hubot": "*", "hubot-scripts": "*", "hubot-hipchat": "*", "coffee-script": "*" }, "engines": { "node": "0.10.x", "npm": "1.2.x" }, "author": "honbin", "license": "MIT" } $ git push heroku master $ heroku ps:scale bot=1
再度プロセスを確認し問題ないことを確認。hipchatにてhubot用に作成したアカウントからhttps://hipchat.com/account/xmppの情報を環境変数へセット。
$ heroku config:add HEROKU_URL=http://example.herokuapp.com $ heroku config:add HUBOT_HIPCHAT_JID="12345_12345@chat.hipchat.com" $ heroku config:add HUBOT_HIPCHAT_PASSWORD="password" $ heroku config:add HUBOT_HIPCHAT_ROOM="12345_hogehoge@conf.hipchat.com" $ heroku config:add TZ=Asia/Tokyo
※最後のタイムゾーン設定はhttps://github.com/miyagawa/hubot-cronを使いたかったため
$ mkdir scripts $ vi scripts/ping.coffee module.exports = (robot) -> robot.respond /PING$/i, (msg) -> msg.send 'PONG'
参考にさせて頂いたサイトm(_ _)m
特定のプロセスを殺したいとき
特定のプロセスをgrep→確認→killするという一連の操作を対話式で書いてみた。
PS=`pgrep -lf "${1:?引数に殺したいプロセス名を渡してね}"` echo $PS if [ -z "${PS}" ]; then echo "殺したいプロセス名は存在しないようですね、ウィー" exit 1 fi echo "これらのプロセスを殺してもよろしいですか? [Y/n]" read ANSWER case `echo $ANSWER | tr y Y` in "" | Y* ) { pkill -f "${1}" echo "ヒーハー!!" };; * ) echo "フー!!";; esac
休日(週末)のカフェ作業
チェックポイント
- 駅前、ショッピング街のカフェは避けた方がよい
- 飯があるカフェはランチタイムとか時間をはずした方がよい(15時くらいがよい)
- オシャレカフェは貸し切りがある場合があるので確認した方がよい
- ソファ席があるとよい
- 日曜日やっていないケースがあるので確認した方がよい
- タバコが嫌いな方は禁煙席があるか確認した方がよい
- コンセントがあるか確認した方がよい(2時間とかなら気にしなくてよい)
- サラリーマン街のカフェは狙い目でよい(やってない、早くしまるケースがあるので確認した方がよい)
- 長居する時はドリンク2杯とかご飯食べるとかすると精神衛生上よい
- イヤホン持参した方がよい
総括
ルノアールよい
エコシステム
http://event.makewith.jp/ のサービスを作ったときに使った各種ツールを紹介します。 Rails、各種ホスティングサービスの恩恵をうけ、なんとか形にすることはできました。これからサービスを作ろうと考えている方の参考になればうれしいです。
ミドルウェア、インフラ周り
を使用しています。herokuは、マニュアルがしっかり書かれているので設定周りで困ったことはありませんでした。heroku最高!!メール送信ではSendGridをフリープランで使用しています。一日200通の制限がありますが、当面は大丈夫そうです。作った後の運用も踏まえ、自分で出来ること、出来ないことを一度考えてから、技術選定をしてあげるとよい思います。
デザイン・フロントエンド関連
デザイナーではないので、一番苦しいフェーズでした。WebフォントやCSSフレームワーク、 フリーアイコン、勉強会でとった写真の素材を活用しなんとかしましたが、一番時間がかかったフェーズです。
WEBフォント(google)
フリーアイコン(Font Awesome)
https://github.com/bokmann/font-awesome-rails
アイコン表示のヘルパーを用意してくれます。
CSSフレームワーク(bootstrap)
今回はrails_layoutを使って、大枠のレイアウトを作ってからカスタマイズしていきました。 また、 http://bootsnipp.com/ にてスニペットと本家のマニュアルを参考にしながら、作りたいレイアウトのサンプルをピックアップし当て込んでいきました。bootstrapつらいですが、こういった所は、やはり利点と感じています。
※その他参考にしたサイト
http://railsapps.github.io/twitter-bootstrap-rails.html
pjax
https://github.com/kossnocorp/jquery.turbolinks
rails4からturbolinksがデフォルトで導入されていますが、onloadイベントが発火されない問題があるため、上記Gemをいれて解消しています。その他問題がいくつかあるようなのですが、今のところはそのまま利用しています。
ページ更新の進捗
https://github.com/caarlos0/nprogress-rails
youtubeライクにページ更新の進捗が表示されます。(ページ上部に表示される、ニョキニョキー、クルクルクルーのところです。)herokuなのでページ表示に少し時間かかる、また、pjaxの遷移だと更新を待っている間に少し違和感が出てしまうため、更新の進捗状況を表示した方がよさそうです。
フォーム
https://github.com/plataformatec/simple_form
イベント新規作成画面などで利用しています。
入力補助
日付
https://github.com/Nerian/bootstrap-datepicker-rails
時刻
https://github.com/tispratik/bootstrap-timepicker-rails
イベント新規作成画面で使っています。カレンダーからの日付入力、時間のところは上下キーを押すと時刻が入ります。
機能関連 ・認証
普通のログインと、facebook認証で使っています。https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview deviseでの連携の仕方が記載してあるので、参考にしてみてください。
ページング
https://github.com/amatsuda/kaminari
bootstrapのviewを作成するジェネレーターも用意されています。
マークダウン表示
https://github.com/vmg/redcarpet
イベント登録時に記載する内容はmarkdownの整形ルールを採用しています。
タグ
https://github.com/mbleigh/acts-as-taggable-on
イベントにつけるタグはこれを利用しています。
画像アップロード
https://github.com/thoughtbot/paperclip
s3へアップロードするインターフェースも用意されています。 が、今回herokuを使って運用しているため、画像アップロードする際にかなり時間がかかってしまいます。http://qiita.com/anoworl/items/35e75a20e70d2ad0f658 に書いている通り、herokuの場合はダイレクトでs3にアップロードする仕組みを作ってあげたほうがよいと思います。
URL
https://github.com/norman/friendly_id
カテゴリ別イベント一覧ページのURLで利用しています。 ユーザー名でアクセスすると、その人の情報を表示させるような利用シーンが一般的だと思います。
テスト・デバック関連
group :test do gem 'spring-commands-rspec' gem 'database_cleaner' gem 'launchy' gem 'factory_girl_rails' gem 'simplecov' gem 'simplecov-rcov' gem 'coveralls', require: false gem 'capybara' gem 'rspec-parameterized', git: 'git@github.com:tomykaira/rspec-parameterized.git' end group :development, :test do gem 'pry-rails' gem 'pry-doc' gem 'pry-remote' gem 'rspec-rails' gem 'mailcatcher' gem 'marginalia' end
紹介がめんどくさくなってきたので、その部分のgem貼ります。各種リードミーをよんでみてください。
その他
デコレーター
https://github.com/amatsuda/active_decorator
viewがすっきりする
初期データの投入
https://github.com/mbleigh/seed-fu
どーん
環境変数管理
https://github.com/laserlemon/figaro
ヤムラー
パフォーマンス、死活監視
ちぇけらちょ
そんじゃーね!1
一人開発を進める上でたった一つの大事なこと
個人の開発にてサービスを作った時に、よかった仕組みや、なぜ作り続けて形にすることができたのか、そんな振り返りをこめてプレゼンテーションに記してみた。名前付け、そして、一つ一つの言葉を考えることも本当に大変だったし、プレゼンに書いている通り決済を通すのも大変だった。決済に関しては、日々プロトタイプを見せて、完成した時に「決済したらリリースできるんだ!」って言ってなんとか通すことができた。特に技術で解決する特別な機能はない、けど、面白そう!と思えるイベントを増やして、物作りを始めるきっかけをつくることができたらうれしいなと思います。また、あらためて個人でサービスを運営している人だったり、ツールを作っている人だったり、その他創作活動をしている全ての人に敬意を払うとともに、引き続きがんばっていきたいと思います。