<< 11月 2011 | Home | 1月 2012 >>

始めようUstream - 機材編

最近勉強会でUstreamをするのが趣味になっています。
ちょっと流してみるだけならばそんなに難しくありませんが見やすい映像、音を流すにはちょっとコツが必要。

うまくコツを抑えると3万円くらいの機材でこれくらいの配信ができます:
Twitterブログ: Tokyo Developer Teatimeレポート #teatimeTKY


で、機材編と放送編に分けてこれまで覚えたことを書いておきたいと思います。

・梅コース(予算1300円)
- Mac(またはPC)1台
- マイク内蔵WebCam(Logicool C270など)
一応パソコン内蔵のカメラ、マイクで放送することはできます。が、カメラをプレゼンターに向けるのが難しいのと、内蔵のマイクがキーボードをタイプする音が入ってしまうという問題があります。
マイク内蔵のカメラは非常に安価に買えるので1台用意しておくべき。
どうしてもパソコン内蔵のマイクを使う場合は放送中のツイートはガマンした方が良い。

・竹コース(予算8000円)
- Mac(またはPC)1台
- HD WebCam(Logicool C910 7500円くらいなど)
- マイク(SANWA SUPPLY MM-MC18 1000円くらいなど。100円ショップで売っているものでもok)
- (Macの場合)USB Audio(Planex PL-US35AP 1500円くらいなど)
- マスキングテープ
LogicoolのC910だとオートフォーカスが効くのでシャープな映像で配信できます。またマイクはWebCamとは別に用意しておくと質問者の声を拾ったりできるので便利。
Macの音声入力はLine-in端子で、マイクをそのまま接続できない(!)のでUSB接続するアダプタが必要です。
WebCamは軽くてケーブルをちょっと触っただけで簡単に動いてしまうのでマスキングテープを使って固定しておきます。

・松コース(3万円ちょっと)
- Mac(またはPC)1台
- HD WebCam(Logicool C910 7500円くらいなど)
- 指向性のあるマイク(OLYMPUS ME32 6800円くらいなど)
- (Macの場合)USB Audio(Planex PL-US35AP 1500円くらいなど)
- マスキングテープ
- Ustream Producer Pro(16,000円くらい)
竹コースよりも良いマイクとUstream Producer Proを揃えたセット。
マイクは指向性のあるものを使うことで周辺の雑音を極力排除して講演者の声を拾うことができます。
Ustream Producer Proを使うとHD画質の配信を手軽に行うことができます。

普段使っている機材:



このエントリーをはてなブックマークに追加   

JIRA、Jenkins、GitHubで始めるオープンソース #jiraadvent

JIRA Advent Calendarの最終日担当です。

趣味でなんとなく作ったものの放置してしまっているアプリケーション、ユーティリティ、ライブラリはありませんか?
オープンソースソフトウェアにしてしまいましょう!

もちろん懸念はあるかもしれません、例えば:
・オープンソースってやってみたいけど人に見せられるほどキレイなコード書ける自信がない
じゃぁいつやるの?
今感じる範囲でキレイなコードにして公開してみたら?

・同じようなコードは他にもあるし・・・
既存のコードで歯がゆいところがあったから書いたんじゃないの?
地球に70億人もいるんだから同じように歯がゆさを感じている人が1人や2人はきっといるはず。

・オープンソースにしたら盗まれちゃう!
死蔵してたらすぐに、またはいずれ陳腐化して新規性のないコードにきっとなります。
盗まれて困るようなコードだったらとっとと起業してビジネスにしたほうがいいかも?
またはオープンソースにして「盗んでもらって」改良してもらえればプロジェクトを始めた人間としてオイシイかも。


というわけであんまり公開することによるデメリットやリスクはそんなにないのでオープンソース化、オススメです。
誰かがほめてくれるかもしれません。
誰かが使ってくれるかもしれません。
誰かが改良してくれるかもしれません。

オープンソースプロジェクトを始めるにあたってオススメなのがJIRA、Jenkins、GitHub。
・JIRA
JIRAは課題管理/バグトラッキングを行うためのツールで商用ではもっとも普及している製品(侍ズム調べ)です。
オープンソースプロジェクトでは無料で使えます。
ちなみに非オープンソースプロジェクトでは年間10人/$10〜(オンプレミス運用)または月間10人/$10(Atlassianによるホスティング)〜で利用できます。
JIRA - Track bugs, projects, issues with software development tools by Atlassian | Atlassian
誰に使って貰えるか、使って貰えないかわからないプロジェクトに毎月ホスティングフィーとして月間$10払う難しいので私は自宅サーバで運用しています。

あんまりおおっぴらに宣伝はしていないけれどもJIRA Studio for OSSというサービスでOSSプロジェクトをAtlassianでホスティングしてくれるサービスもあります。
たぶん長期的にはBitbucketの課題管理にJIRAを統合した上でGitHubよりイイよ!移行して!って言いたいんじゃないかと思ってる。

・Jenkins
Jenkinsは言わずとしれた継続インテグレーションツール。詳しくはJenkins実践入門を参照。
コードのテストやデプロイを自動化することができます。
Welcome to Jenkins CI! | Jenkins CI

ウチでは自宅サーバでJenkinsを運用していますがオープンソースプロジェクトであればCloudBeesのサービスを使うのも良さそうです。
- CloudBees & Open Source

・GitHub
今やデファクトスタンダードとなりつつあるコードホスティングサイト。公開しているリポジトリであれば300MBまでは無料で使えます。
Your Dashboard - GitHub

さて、3つともスバラシイツールなのですが連携すると一層強力です。
このエントリはクリスマス中に公開しないといけない関係上細かい説明は省きますが(ゴメンナサイ)、以下の設定やプラグインを使うことでスムースに連携させることができます。

1. JIRA→GitHubの連携
JIRAにはJIRA GitHub Connectorというプラグインがあり、課題(issue)とgithub上のコードを簡単にひもつけることができます。
今はなぜかJIRAの管理画面で検索してもヒットしません。
プラグインのサイトからjarをダウンロード、管理画面からアップロードすることでインストールできます。

2. GitHub→JIRAの連携
JIRA4.2以降はREST APIでissueを更新することができます。GitHubはservice hooksという機能でJIRAにデフォルトで対応しており、gitのコミットメッセージを元にissueをクローズしたりすることができます。(Twitter4Jではissueは完全手動管理しておりこの機能は使っていません)

3. GitHub→Jenkinsの連携
GitHubでPost-Receive URLというのを設定するとgithubへコードをプッシュしたタイミングでJenkinsにテストを走らせることができます。

4. Jenkins→GitHubの連携
Github Pluginを使うとgithubのコードをJenkinsでpullさせてビルドを走らせたり、コンソールで見えるコミットIDをgithubにリンクさせたりすることが出来ます。

5. Jenkins→JIRAの連携
JIRA Pluginを使うとJenkinsのコンソールで見えるコミットメッセージ内のissue#をJIRAとリンクさせることができます。


GitHubにもissue管理機能があるけど、正直なところまっだイマイチ。
デファクトスタンダードなだけありJIRAは柔軟、高機能で、そしてUIが洗練されています。
また、継続インテグレーションツールとしてAtlassianのBambooがありますが個人的にはJenkinsが好み。(正直Bambooはほとんど使ったことない)

3つのツールの連携具合を図にすると以下の様な感じ


さて、この3つのツールを使ってオープンソースプロジェクトを作ったらみんなに知ってもらう必要があります。
例えばブログエントリを書いてdzoneに投稿するとか、・TheServerSide.comの・Industry newsフォーラムに投稿するとか、Twitterでそれっぽいハッシュタグを付けてツイートするとか。
#日本だけでいいなら友達3人にハテブしてもらえばイイですが、英語で発信すると10倍リーチします

だれか興味を持ってくれるかもしれません。

タグ :
このエントリーをはてなブックマークに追加   

GroovyとQuartzとTwitter APIとTwitter4Jの甘い関係 #gadvent2011

G* Advent Calendar 2011の16日目です。

皆さんTwitterアイコンのローテーションはどうしていますか?
毎日0時に手作業でアイコンをアップデートするのは大変です。もっと早く寝ないとお肌に悪いです。

そこでGroovy、Quartz、Twitter4Jを使って自動でアイコンをアップデートするようにしましょう。
Groovyはそう、あのGroovy
QuartzはJavaでスケジューリングをするためのライブラリ、
Twitter4JはJavaからTwitter APIを呼び出すためのライブラリです。

コードは以下の通り。


CronTriggerというのはUnixのcronと似たフォーマットでスケジュールを設定できるもので、上記では毎日0時0分0秒にタスクを起動する設定になります。
# cronでは最小単位が分な気がするけどQuartzでは秒単位で設定できるみたい

twitter4j.propertiesをTimeAvatar.groovyと同じディレクトリ置いて実行すると毎日0時0分にyyyyMMdd.gifでTwitterアイコンをアップデートしてくれます。便利!

ちなみに最初はインターフェースが良い感じにスッキリしているcron4jを使ってみようと思いました。が、Maven Central Repositoryに置いてなかったのでQuartzを使いました。

あんまりGroovyっぽくないコードなのは許してください。セミコロンがないからGroovyです(`・ω・´)キリッ

明日は@nemo_kazです!

参考にした記事:
・Quartz scheduler example
http://www.mkyong.com/java/quartz-scheduler-example/

・システムアーキテクトのごった煮 - cron4jのご紹介
http://ameblo.jp/kozake/archive-201112.html

タグ :
このエントリーをはてなブックマークに追加   

なぜ JIRA を選んだのか、なぜ JIRA を選び続けるのか #jiraadvent

JIRA Advent Calendar 2011の2番手です。このブログでは時々Atlassianの手先ではないかというくらいJIRAに傾倒したエントリーを起こしていますが、どうしてJIRAを選択したのか、そしてなぜJIRAを使い続けているのかを改めて書いてみたいと思います。

結論:
Bugzilla、Clarify、Trac、JIRAを使った。JIRAが一番。


自分Issue trackingツール史
・記憶ベース
小中高大と趣味でプログラミングをしていた頃、issue trackingはしていませんでした。
自分の中で特にマイルストーンがあるわけでもなく、なんとなくやってみたいことを書いてみて、思った通りに動くと技術的関心が薄れ、おしまい。
自分が書いたものを公開する場はパソコン通信とかTAKERUとかオープンなようで閉ざされた空間しかなく、フィードバックもなかなか得られないので長続きしないのはしかたないです。
長続きしないので、継続的にバグをトラッキングしたり、追加機能のアイディアを書き留めておいたりという必要をそもそも感じないのでissue trackingをするという発想すらありませんでした。

・口頭とかメールとかExcelとか
新卒で入ったSIerでいくつかB2C、イントラ系のWebシステム開発をしました。
1人から数人規模のプロジェクトばかりで、進捗状況やバグの管理は体系立てて行わなくても問題を感じませんでした。共有フォルダにExcelスプレッドシートを置いたり、メールや口頭ベースで状況を伝え合うだけで済んでいた気がします。

・Bugzillaとの出会い
仕事で開発をするようになったのと同じくらいの時期、Jakarta ProjectのCommonsやStruts、Velocity、sourceforgeのSAXONといったオープンソース製品を使うようになりました。多くのプロジェクトは当時Bugzillaでバグトラッキングが行われていたように記憶しています。
あーこうやってバグとか新機能案とかを記録しておくんだーと感心しましたが、同時にBugzillaはどうも質実剛健で使っていてワクワクしないなーとも思いました。たぶんCSSはほとんど使っておらず素のHTMLの塊という感じの見栄えでした。(今ではだいぶしっかりしたL&Fになってます)

・ブログの立ち上げ、MovableTypeの導入
仕事で必要が生じて作ったツール「」を公開するにあたり、ブログを立ち上げたいなーと思い、当時流行っていたMovableTypeを自宅サーバに導入しました。
- movabletypeをインストール - 侍ズム
MovableTypeはブログウェアの走りなだけあってかなり良く出来たソフトでした。ただPerlベースでパフォーマンスが悪い(というと異論を呼びそうだけど・・・)のは難点。

・MovableTypeからPebbleへ、JIRAとの出会い
最初はあまり気にならなかった再構築(MovableTypeがデータベースに記録されているブログデータから静的HTMLを作成する処理)はエントリが増えれば増えるほど処理時間が長くなっていき、いよいよ耐えられなくなってきました。
#PHPを使って再構築を避けることは一応できるけど設定が面倒でやらなかった
そこで新しいブログウェアを、特に自分が扱いやすいようJavaで出来たものを探しました。確か@akrに教えて貰ったのがBlojsom。
- Blojsom味見 - 侍ズム
たぶんJavaベースのブログウェアでは当時一番ホットだったかも?
しかしシンプルさとカスタマイズのしやすさ、それからファイルベースかつLuceneを使っており動作が高速ということでPebbleを選択しました。
- 今度はPebble味見 - 侍ズム

カスタマイズのしやすさから選択したこともあり、実際数々の改造を施し、パッチを送りつけました。
- Pebble改造歴 - 侍ズム
パッチを送りつけるにあたり、Pebbleで当時使われていたJIRAに出会いました。見た目の良さ、高速な検索、使いやすさとどれをとっても良い感じでした。

・Clarify、Footprint
テクニカルサポート職で使ったケースマネージメント/CRMツールがAmdocsのClarifyやNumaraのFootprint。
どちらも商用ツールなだけあってナカナカの見栄え。
ただClarifyはパフォーマンスがイマイチ。検索するたびに海の向こうでOracleがガリガリをディスクを舐めているのが聞こえそうでした。(今は改善されてるかも?)
- Amdocs - Customer Experience Systems Innovation
- Help Desk Software | Service Desk Software | IT Service Management

・JIRA最高!

JIRAはオープンソース製品では無償で使わせてくれるので確か2007年からTwitter4J向けにライセンスを頂いています。
記念すべき第一号のissueはこれ↓
- [#TFJ-1] need support for destroying directmessage - JIRA
趣味だけでなく、ここ最近勤めて来た3社はどれもJIRAを使っているので公私ともにJIRAにお世話になっています。

ネタを考えることなくadvent calendarに参加表明してしまい、だらだらとまとまりのないエントリになってしまいました。
色々使ってきたけど機能の豊富さ、カスタマイズのしやすさ、見た目の良さ、パフォーマンスの良さとどれをとってもJIRAが一番良いと感じているというのが結論です。

明日は@oota_kenの予定です。何を書いてくれるんでしょう?
そして12/5(月)は@daisuke_mがやはりJIRAに対する愛を、
12/6(火)は@j5ik2oがGroovyを使ったJIRA黒魔術を、
12/7(水)は@EwigkeitがJIRA管理のtipsを書いてくれます。

追記:
Tracはインストールが大変だった。予算の関係からJIRAを使えずTracを使ったことがあるけどちょっと苦労した。
Subversion, Trac のビルド / インストール - 侍ズム
Subversion リポジトリの初期化 & Trac に認識させる - 侍ズム
Trac in action - 侍ズム
mod_python による Trac と Apache の連携 - 侍ズム

Scarabもちょっと使ったことあります。JIRAをインポートできるのがすごいと思った。
バグトラッキングシステムの 選別 - 侍ズム

Redmine/Mantisは使ったことないです。どちらも見た目がかっこよくて良い感じ。
ただTrac/Redmine/Mantisを使っている人はプラグイン開発やカスタマイズにものすごく手間暇かけている印象。インストールしたらさくっと使えて標準の機能で必要なことが一通りできると言う点でJIRAが好き。
githubとの親和性が高いのもJavaベースなのも好き。
githubのissueトラッキング機能はいまのところ残念。

このエントリーをはてなブックマークに追加