2008年9月5日金曜日

Androidに触ってきた

先日「第5回EMS-JPグループ展示会に来ませんか?」みたいなメールが届いて、「armadilloもあるよ」みたいなことも書いてあったので、興味本位でちょっと見てきました。

まいむぞう × armadillo

おいらは組み込み系には疎く、せいぜいGainerで「わーおもしろーい。でも基盤焦がしちゃったせいでこのセンサーうごかなーい」とか言うぐらいなんですが、前に仕事で組み込み系の機材を調べたことがあって、armadilloの事は知ってました。

結局その案件ではarmadilloは使わなかったのですが、タバコの箱ぐらいの基板上でLinuxが動いていて、メモリの制限はキツイもののよく見るオープンソースモノが動いていたのは、いろんな可能性を感じました。まぁ、結局使わなかったので感じただけで体験できなかったんですけど。

armadillo × android

で展示会のarmadilloブースに行ってみると、なにやらもっと面白そうなモノがありました。

armadillo_android.jpg

ちょっと見づらいですが、armadilloのボードに十字キーとタッチパネルを付けて、androidが動いてました

えー!? アメリカでクリスマス商戦時期に最初の端末がでるんでしょ? 日本ではまだスケジュールさえ出てないのになんでココに?って感じだったんですが、話を聞くとまだ試作品段階とのこと。秋口にはでるかもって言ってましたが。

androidは全てオープンソースで構成されているので、SDKから必要部分を突っ込んだら動いちゃったーって感じみたいです。

実際、まだ試作機っぽく、ちょっと動かしたら固まってました(笑 そして担当の方も使い方がわかんないようでした(笑

android × 組み込み機器

androidって携帯電話に載るモノだとばかり思ってたおいらにはちょっとショックでした。

でもまー、よく考えたら、Javaが元々目指していた家電製品などの組み込み機器のための言語(および周辺アプリケーションと開発環境)と考えると、結構しっくり来てるかも。とも思いました。

特に、OSがLinuxなので足回りが強い感はありますよね。ネットワークとかファイルシステムが(ハード的な制約が許せば)PCの世界のスタイルでそのまま作れてしまうので。

実際Androidアプリを作った訳じゃないんですが、armadilloandroidが動いちゃうぐらいなんだから、それこそfelicaライタくっつけて「はい、会員カードシステム」とか、何もくっつけなくてもWeb連動POSとか居酒屋のオーダーシステムぐらいは簡単にできちゃう気がしてきました。(や、完全素人の考えなんですけど)

なんかそう考えると、androidのプログラミングって結構面白そうです。

写真ではちょっとわかりづらいですが、タッチパネルも手のひらぐらいの大きさはあるので、結構実用的に感じました。

android vs Linuxベース組み込み機器

今までもLinuxベースの組み込み機器で、タッチパネル付きというのがあるにはあったんですが、流石にX Windowを載せるわけにもいかず、独自というか組み込み向けWindowシステムを使うことが多かったように思います。(繰り返しますが、素人なので一部しか見えていません)

で、そういう独自Windowシステムって、「このGUIはCで作ったんだよ、がんばったでしょー」的な違和感を感じ、日頃使っているWindowsとかMacのようなしっくり感はあまり感じませんでした。

でも、試作とはいえ動いていたandroidは、「あ、コイツいつも使ってるGUIの血筋のモノだ」と思わせるようなしっくり感を感じました。

まぁ、その分リソースは食ってるんでしょうけど、どちらを選んでも実現できることには大差がないので、この感覚は大きいかも。

android vs Windowsベース組み込み機器

現状では狙ってるモノが違うので、この比較は意味があるのかどうかわからないですし、正直Windowsの組み込み路線は種類が多くてイマイチ方向性が解らないんですが、androidのGUIの競合になるのはこのへんなのかなぁと。

ただ、天下のMicrosoft様なので、プログラミング環境はWindowsベースの方が整っているでしょう。ライブラリも。(や、素人(r)

でも、windowsベースって、その元になるOSがね…。おいらはWindowsCE 1.0のユーザだったんだけど、未だにあの感覚なんだよなぁ、今の奴も。

あと、どうしてもMicrosoft様はマジメなので、ネットと絡めて面白いアプリを作ろうとか、ゲームを作ろうってなったらandroid優勢になる気がする。

あと、android market構想もあるんだっけ?

android on armadilloの将来

展示会から戻ってくるまで、このandroid × armadilloで何が出来るか考えてみたんだけど、やっぱり携帯電話などの常時接続ネットワークを持たないandroid端末は、ちょっと微妙な存在なのかも。

常時インターネットに接続できるなら、非力なマシンでもそこそこ使えるんだけど、いざスタンドアローンマシンとなると、まだPCベースの方が何かと便利に感じられる。値段も最近のAtom搭載ノートの方が安いし。(このandroid on armadilloは12万越えだそうです。まぁ、組み込みにしてはかなり安いイメージ)

じゃあまったく無駄かというとそうじゃなくて、armadilloのような組み込み機器にandroidが載って、それが普及することで、androidが組み込み向け標準windowマネージャ(widnows3.1みたいな感じ?)になってくると、その先が結構面白いことになる気がする。

iPhoneのように閉じた環境ではなく、各ハードメーカーとか、中小の技術者が面白いギミックをガッチャガチャくっつけて「ドライバだけ作っておいたから後よろしくー」みたいに投げてあって、それをおいらみたいなフリーランサーとか数人でやってるようなベンチャーが、趣味がてらにPC上のEclipseからJavaを使って変なアプリを作る、みたいな環境はけっこーおもしろいと思うのだ。やっぱりCでメモリ量を計算しながらプログラムするより、Eclipse上で富豪的に作りたいよね。(笑

ただ、これを実現するためにはarmadilloだけではダメで、他の主要組み込み機器メーカーもandroidを搭載して、windowsかlinuxかandroidかぐらいまで持ってくる必要があるし、armadillo自体も現状ではバッテリー駆動できないし、防塵や衝撃や防水とか耐久性の話もあるので、あと1世代か2世代ぐらい(あるいはもっと)待たないと、じゃあandroidで行こうかと簡単に言える時代にはならない気がした。

てなことで、暇が出来たらiPhone SDKではなくandroid SDKで遊ぼうと心に誓った日だった。

2008年9月4日木曜日

たとえばこんなプロフィールサービス

最近北海道のIT系イベントの紹介してて、一緒に自分の興味範囲を書き出してみたりしてるんだけど、これを能動的に書き出して示しておくのって、友達が出来やすい(とっつきやすい)気がする。

で、たぶん既にあるよなーと思ってabout meとかソレ系を調べてみたんだけど、自分の欲しい機能を持ったプロフィールシステムは見つけれなかった。

ってどんなシステム?

探しているシステムはこんな感じ

  • 一般的なプロフィールを登録・閲覧できる
  • マインドマップ的に言うと、自分が中心にあって、そこからの枝として「Rubyに関する興味範囲」「Javaに関する興味範囲」「PHPに関する興味範囲」など、既に登録してある(もしくは自分で登録できる)カテゴリから、興味範囲を羅列できる。
  • 自分のプロフィールをURLで指定できて、ログインなど無しにみんなに公開できる
  • ブログパーツなどで簡単に格好良く貼れる
  • 他人の興味範囲に対して検索できる

「プロフィールをサイトで示す」という意味と、上記機能って結構被ると思うから、既にあるよなーと思ってるんだけど。

こんな感じで使えたらもっと面白そうってのを突っ込むと

  • 既に他の公開プロフィールを持っている人にも、追加プロフィール的に興味範囲だけ書かれたページを表示できる。
  • ユーザ認証にOpenIDを使う(ID見て「あぁやっぱりあの人ね」という使い方がしたい)
  • ついったーのフォローみたいな感じに、簡単にコネクションを増やせる
  • 興味範囲を仲介して繋がったコネクションをグラフ化(ネットワーク図?)

SNSとかソーシャル系のサービスのいち機能となってる気もするけど、誰か知ってたら教えてください。


2008年9月2日火曜日

LOCAL PHP部 aka PHP北海道のイベントに参加しようかと

最近北海道のイベント紹介ブログのようになってきましたが、別にそういう意図は無くて、単純に北海道でのコミュニティ活動が活発になってきた(ように感じる)からなのです。

たとえば、9月は新しく先日紹介した札幌Java勉強会や、今回紹介するLOCAL PHP部が活動を開始しました。定期的に活動しているコミュニティって片手で収まらなくなりましたね。

で、おいらはまたどんなもんか参加してみようかと。(や、決して呑みたいからとかとかいう理由ではないよ)

概要

  • 日時 9/21(日) 14時〜16時ごろ
  • 会場 ちえりあ  サークル活動室4
  • 締め切り 当日イベント終了まで(笑)
  • 内容 docTestについて(by bobchinさん) 及び 今後のLOCAL PHP部の活動を考える会
  • 参加方法 こちらからログインして参加登録する

地理的に地下鉄の端に位置する「ちえりあ」で行うので、ドニチカ切符買った方がお得かもとのこと。

てか!!

2年前のOSC2006 Hokkaido内セッションでPHP関係のコミュニティメンバー募集しますーと言ってたのは、この布石だったのかー(笑

突っ込み

ちょっとまだ流れが決まってないこともあって、

の使い分けがはっきりしてない感がありますが、 まぁ、全部見れば良いと思うよ。(たぶんそのうち決まるでしょう)

おいらの立ち位置

PHP on ZendFrameworkを使ってきたとはいえ、個人的には既にRailsに移行してしまっているので、正直今からPHPを追うってのは考えてない。

PHPとRubyって、自分の使い方では同じ領域をカバーしているように見えてるし、Rubyの方がコマンドラインで動かす時に便利に感じるので。(や、PEAR使えば同じなんだろうけど)

個人でRails使いながら、会社でZendFramework使ってたので、不満いっぱいあってイメージ悪いってのが大きい気がする。やっぱり浮気はいけないと思った瞬間だった。(何?

ただ、Railsを使うべきではない領域(個人的にはテンプレートが10ページ以内の小規模システムかな。メールフォームだけなど)とか、Railsが動かない(もしくは動かすのが現実的ではない)サーバもあるから、これからもPHPは使うこともあるだろうけど。

あーでも、ぶっちゃけると、現時点で(アプリケーションサーバ的)負荷が高いシステムを作るなら、迷わずPHPを使うだろうけどね。(苦笑

実行速度やサーバの管理(インスタンスが落ちてないかどうかとか)は、圧倒的にPHPの方が楽だから。まぁ、組み方によるけど。

個人的興味範囲

こんな感じなので、PHPそのものというより、その周辺事情とか使い分けの方が興味あるかな。

  • 個人的には言語がどうというより、言語の上にフレームワークとか、プラグイン的ライブラリとか、IDEとかなどの開発環境が載って、「どこまで作ることに楽を出来るか」みたいなところ
  • 他言語も含めて、「こんな用途(問題領域)」には「この言語でこんな使い方(解決領域)」みたいな使い分け
  • 言語非依存の「設計」「テスト」「デーモンやライブラリとの絡ませ方」あたり

みんなの興味がありそうな範囲

最近PHP周辺であたらしい話題がない気がするので、王道的な

  • PHP4からの移行ポイント
  • PHP4システムのメンテ方針
  • どういうバックグラウンドがある人には、どういうフレームワークが良いか(もしくはコレサイコーなのでコレ使え)
  • どういう用途には、どういうフレームワークが良いか(もしくはコレサイコーなのでコレ使え)
  • PHPでのUnitテストの仕方(知り合いのPHPerでUnitテストしてる人見たこと無い)
  • PHPでの開発環境(IDEとかSCMとかBTSとか。だまされたと思って今からいうモノ全て入れろ的なノリで)
  • 初学者向けのsmartyの使い方(システムも手がけ始めたデザイナ対象とか)
  • 中上級者向けのPHPとAjaxを絡める方法(特にjQueryあたりぽん付けで動くのが多いので)
  • 中上級者向けのPHPでのセキュリティ対策方面(最近の傾向と対策的な)

的なところにみんなの興味がある気がする。

てか、おいらはこれらに興味があった。(でも、最近PHP追ってないので既に一般では対象外のものも含まれている気もする)

興味ある人集まれー

で、全然上記と関係ないけど、こんな興味ある人お友達になりませんか?

  • Amazonのリコメンドシステムのように、「見た」「買った」などから「オススメ商品」を計算する系(うまく言えない)
  • Flex系(Flashをシステムちっくに使っている人含む。AIR含む)
  • 自然言語処理系(自然文から意味や統計を導き出すあたりに興味を持っている人)

一緒に勉強したり呑みたいので、北海道の人で友達が出来ると嬉しいです。 もちろんネット前提の遠方の方でも嬉しいですー。

興味がある人はとりあえずmaimuzo@gmail.comにメールくださいなー。

2008年8月31日日曜日

札幌Java勉強会に参加してみようかと

先日アナウンスが流れたようですが、札幌でもJava勉強会が開催されるようです。

思いっきりアウェーですが、どんなもんか参加してみようかと。

  • 日時 9月20日(土)13:00~17:00
  • 会場 白石区区民センター集会室A
  • 内容 読書会「ユースケース駆動開発実践ガイド」
  • 参加費 300円~500円(学生は安いって事? 現地徴収?)
  • 参加方法 事前に連絡いれるといいみたい。(正式ではないですが)googleグループに参加すれば詳しくアナウンスありそう

詳しくは札幌Java勉強会-01参照のこと。

おいらの立ち位置

正直おいらの興味範囲+仕事ではJavaの必要性をあまり感じてなく、Javaの経験もEclipse使ってソケット通信するちょっとしたツールを作ったぐらいなので、あまりJavaJavaするようなら参加を見送ろうと思っていたところですが、初回は地均しも兼ねてちょっと汎用的な題材(設計・モデリング)を扱うようなので、参加してみようかと。

ただ、自分的にはRailsを使うことが多く、規模も小さく、おおよそ一人で作るので、あまり重厚な設計プロセスは必要ない(考えを整理するツールとして使えればよい)感じです。ただ、全体的な考え方や概要は知っておいた方が良いかなと思って。

おいらの場合は企画段階から参加することが多いので、打ち合わせ内容をうまくまとめたり、発注者側にイメージをうまく仕えられるようにしておきたいって言うのもあるかな。

個人的興味範囲

せっかくなので、Javaに関する興味範囲をまとめてみると

  • Andoroidアプリ作りたい(かも。まだ日本でのAndoroidが現実味を帯びてないので。規約で縛るiPhoneアプリ開発環境よりイメージは良さそう)
  • Rails on JRubyに関するノウハウ(でもこれってJavaの範疇じゃないかもね)
  • JavaサーブレットやTomcatを使ったデプロイのノウハウ(実際にサーブレットを動かしたこともないので)
  • Red5のようにコアコンポーネントだけ公開されていて、制御するためにJavaを使う必要があるアプリを使いたい(個人的には使うならJRubyでいいかーと思ってるけど)

特に、Flashを使ったシステムを扱っていると、旧マクロメディア系のサーバサイドミドルウェア(という表現が正しい? LiveCycle Data ServicesやBlazeDSって)を使う必要が出てくることがあって、これってJavaが使えることを前提にしていたりするので、Flash系のシステムを極めるなら(極めなくても比較対象に含めるなら)Javaを使ったシステム開発の流れは知って置いた方が良いかなぁと思っています。

ただ、Adobe製品を買って使うとカネもノウハウも使用用途も限られてしまうので、Javaで書き換えられたオープンソースのクローンを使いたいなぁと思っているところです。その方がおいらのような立ち位置で仕事をしている人には使いやすいと思うので。

特に、サーブレットを使ったサービス(アプリケーションサーバ)の公開・運用ノウハウってあると思うんだよなぁ。PHP使っていると全然気にしないんだけど、RailsとかJavaってPHPに比べてアプリケーションサーバ!!ってのが前面に出るから。


2008年8月27日水曜日

札幌における勉強会に対しての助成制度を調べてみた

昨日のエントリーに続き、行政側からなにか支援は受けれないかなぁと思って、実際に問い合わせの電話をかけまくってみました。(流石に突撃してたらい回しにされるのは避けたかった)

結果としてあまり良い情報は出てこなかったのですが、一応こんな感じだったよーという報告をまとめます。

札幌市の助成(金銭的補助)方面

今年から市民活動のための寄付を元にした基金が設立され、団体登録の後選考されれば助成が受けられるみたい。

  • NPOである必要はなく、任意団体でOK
  • 札幌市民が参加者の大半である必要がある(札幌市民が他の市町村で活動するのはアリだが、他の市町村のために勉強会を開くなどは不可)
  • 詳しくは団体登録及び助成の概要(PDF)を見るべし

ざっとした流れ

  • 9/17 応募締め切り・書類選考
  • 10/25 二次審査(公開プレゼンテーションでの審査)
  • 11/初旬 選考されれば助成開始
  • これを毎年繰り返す

ただし、寄付は使い道や団体名を指定して受け付けるものもあり、現状は指定されている寄付が大半なので、「勉強会のため」という名目で助成を受けるのは難しいかも、とのこと。(地域振興云々みたいな書類を書ければ通るかもねー的な)

なにぶん、今年からなので流れが良く読めないみたい。(かつ大人の世界の雰囲気が・・・)

窓口

札幌市市民まちづくり局市民自治推進室市民活動促進担当課

011-211-2964

札幌市の広報(告知方法の多様化)方面

札幌市のホームページへのバナー掲載は、一般企業からの広告料を取って行っているものなので、金さえ払えば可(もちろん審査はあるだろうけど)。

その他札幌市が配布している印刷物に、お知らせ欄や広告を掲載するような方法はあるものの、札幌市が主催するのものに限られるので、任意団体が広告を掲載するのは現状では無い。

ただし、地下鉄の掲示板などに任意団体のポスターなどを貼る事は可能。この条件は

  • 管轄する市の部署から後援を受ける必要がある(名義貸し程度。影響小)
  • ポスターは作ってから持ち込む必要がある
  • ポスター関係の受付は札幌市総務局広報部広報課(011-211-2036)になる
  • 広告掲載の2ヶ月前までに予約が必要(内容が大体決まっていればよい)
  • IT関係の勉強会についての管轄部署はどこになるか、いろんな部署に電話をかけたが全て「いやー、うちの部署じゃないわ」ばっかりで、話にならない。ので、市長にタレコミメールしておいた。(進展があれば続報する)

あー。縦割り。まぁこんな事問い合わせてくるやつぁ少ないだろうから、イレギュラーフローだとはしても、それでも対応悪すぎ。かなり心証悪いです。電話で良かったぜー(実際に市役所に行ったら何時間かかったか…)

ポスターだけなら別に頑張らなくてもいいかなぁと思って萎えた。もう忘れた。何も覚えていません。

北海道方面

札幌市とは打って変わってとても対応が良かったのが道庁。

上記のような助成や広報は担当部署が複数に跨るんだろうけど、ワンストップで返答してくれた。

しかも、道だけじゃなくて、経済産業省や、札幌市(ごめんね)とか他の所にも問い合わせしてくれたみたい。

ただ、結果としてIT勉強会系で使えそうな支援制度は無かったとのこと。

使えそうな施設としては

かでる2・7

あと、道の施設じゃないけど

札幌市産業振興センター

札幌コンベンションセンター

を紹介してくれたけど、これも王道だよなぁ。

なんにせよ、とても丁寧な対応感謝します。

窓口(?)

北海道経済部商工局産業振興課IT産業グループ

011-231-4111

まとめ

札幌市には市民団体が使える基金があったけど、これを勉強会で使えるかどうかは微妙。まぁ、やらんよりはいいか、程度。

他、道や国レベルでは直接の支援策は無いみたい。

まぁ、言い方とか裏技はあるんだろうけど。(でも大人の世界の臭いがしたので入ったら睨まれる気もする)

なーんか、あまり実のある話にはならなかったけど、現状は掴んだので、あとはこのエントリーが議員さんの目に入ることを祈って閉めます。(続報が有ればまた後で)

2008年8月25日月曜日

地方における勉強会について考えてみた

昨日Ruby札幌勉強会に参加してきて、RegionalRubyKai(ryの一環として札幌Ruby会議01 を行うことになった過程とか勢いを感じてきました。

雰囲気のわかる資料↓。

この動画の23分27秒あたりに出てくる「 Regional RubyKaigi の御提案 - 角谷さん」あたり参照。

これに被るんだか被らないんだかよくわかりませんが、色々思うことがあったので、地方におけるIT系勉強会について書いてみたいと思います。

なお、おいらがイメージしやすいように、地方のいち都市として札幌を前提に書いていますが、話の趣旨としては全国の各地方都市に当てはまるかと思います。

なお、あまり深く考えて無いので(w)ブレストの結果集まったアイデアぐらいに受け取ってください。

話に出てくる団体の説明

札幌にて勉強会(やそれに類するモノ)とかイベントを1.5月/回ぐらいの頻度で主催している団体。たぶん共通の問題を持ってると思う。

Ruby札幌 〜札幌でRuby絡みをわやわやしているところ。プログラマ・技術者向け。Rubyist向け。

北海道WEBコンソーシアム 〜札幌で主に受託Webシステム・サイト開発絡みをわやわやしているところ。プロデューサー・デザイナ向け。

LOCAL 〜北海道における技術系地域コミュニティの活動をバックアップするためのコミニュティ。OSC2008 Hokkaidoは実質ここのメンバーで運営されていた(?)

他にもアレとソレとコレぐらいのコミュニティが活動してるんだけど、おいら実情をよく知らない。

地方における勉強会の意義

現状に即した地方での勉強会のあり方を考えてみた。

  • 絶対的なマス(特定の問題に興味がある人や、その有識者)が少ないので、東京のように「いち企業が公開したサービス」や「いち新技術」に対する突っ込んだ勉強会は成立しにくいのでは? IT 勉強会カレンダー で東京ではどんなことが行われているかあたりを参照。(てか実質的には中の人と話さなければ、かつ「中の人と話して良いよ」と親分と話を付けれるコネがなければ成り立たないと思うので、中の人が居ない地方では成立しない)
  • 特にIT関係の勉強会では、ビデオキャストされたり、勉強会のまとめがブログ記事として流れるので、よほど突っ込んだ話か、コネクション目的でなければ、勉強会そのものに参加する必要性は低いのでは? (特にRubyの勉強会などではチャット経由で遠隔地から質問できたりするし)
  • 突っ込んだ勉強会に参加する必要がある人(ビジネス上の理由や本流に触れたい人)ならば、東京まで行ってでも実際に参加してきた方がメリットは大きいのでは?(なので、地方ではこれの優先度が低くて良いのでは? もちろん開催できればそれに超したことはないけど)
  • 地方ではむしろ、「参加者間の横のつながりや情報共有・雑談(ある程度自立できる技術力を有する人に多い?)」とか「勉強方法や新しい世界への導入(特定分野について勉強したい初心者に多い?)」が主な目的になるのかなぁと思う。

たとえば、おいらの興味範囲として「Amazon EC2&S3&EBS」とか「集合知プログラミング」とか「Hadoop」があるけど、これは北海道では開催できない(開催できたとしても身内のみとか)だと思う。(という具合に諦めている)

地方における勉強会の問題点

Ruby札幌北海道WEBコンソーシアムの主催者からの話や、LOCALのサイトから鑑みるに、

  • 必要な会場設備(電源・無線LAN・スクリーンとプロジェクタなど)を備える施設が少ない。会場確保が大変
  • ビジネス的な理由抜きで協力してくれる企業(研究機関など)が少ない。これがあると会場やセッション内容に幅が出る気がする。
  • せっかく勉強会を開いても、それが参加者予備軍に知れ渡っていない(これは地方だけの問題ではないかも)
  • 日付決定、会場等確保、案内等の負担が大きい。 このへん参照
  • 懇親会の負担も大きいけど、これはイベント終了後に挙手で決めても良いのでは?(予約無しで呑もうなんて甘い? もしくはxx呑み部とかね)
  • 有識者を呼びたいけど予算が無い(招待のための交通費・宿泊費など)
  • 勉強会の意味合いから見ると、動画配信した方が何かと良い気がする(というか全ての勉強会は動画を配信して欲しい)けど、実際問題として機材が高額だったりノウハウが無ければ配信できない。うまくシェアする仕組みがあればいいんだけど…
  • コミュニティに貢献しようという人の絶対数が少ないので、成り行き任せでは運営に協力してくれる人が集まらず、結局コアメンバーの負担が増えて、勉強会が続かなくなる気がする。なので、地方では手伝ってもらうためのフローをあらかじめ盛り込んでおいては?
  • 上記全てを内包するけど、主催者側のコアメンバーに負荷が集中(労働力や金銭的)してしまっている。現状自腹&努力?
  • 全ての勉強会を知っているわけではないけど、「勉強会」というスタイルである以上、「提供側」と「甘受側w」に分かれると良いことがない気がする。やはり持ち寄り精神が大事じゃないかなぁ。営利目的じゃないんだし。

まとめると、「会場確保」「広報活動と参加者取りまとめ」「活動予算」あたりが問題になるのかな。

特に「時間があったらちょっと来てくださいよ」と簡単に呼べる東京と違って、地理的制約が大きい地方では、有識者を呼ぼうにもまずはカネになってしまう。(Ruby札幌は今までこの予算はどうしてきたんだろう?)

あと、一般的問題点として

  • 参加者のスキルや立場によって、勉強会に求めるモノが違う(かも)

があると思う。

地方の勉強会では、どうしてもマスの小ささから、勉強会が乱立できないので、広く浅くになってしまう気がする。

参加者のセグメント分け

たとえばRuby札幌を例にすると

スキルレベル

  • ruby初心者(主にRubyを使ってちょっとした業務ツールを作りたい人)
  • rails初心者(主にWebアプリを作りたい人)
  • 中上級者(作ろうと思えばRubyに限らずそこそこ何でも作れる人)

立場

  • ホビーユーザ
  • 仕事で使う人
  • 研究者(学生含む)

単純にかけ算の関係ではないけど、6セグメント以上あるのでは?

北海道WEBコンソーシアムだともっといろんな人が居ると思う。(プログラマ・デザイナ・営業・プロデューサー・経営者etc)

テーマ重要

全ての人に満足できる内容を用意するのは無理だと思うので、開催毎にテーマを決めて興味ある人に参加してもらうようにして、毎回初心者でも理解できるセッションと、マニアック(でも聞いていて面白い)セッションを盛り込めばいいのかなぁと思う。

ここ2年くらいで、札幌でも勉強会やイベントなどが増えてきたイメージ(実際には情報共有が出来てきたせいかもしれないけど)があって、さらに増える気もするけど、さすがに毎週勉強会に参加するのは辛いと思うので、あまり興味ない勉強会は参加しないという考えが出てくる。(今のところ、機会が少ないのでどんなものでも全て参加したいと思っている。はず)

そうなってきたとき、広く浅くであっても、参加したことに満足感を得るように、開催毎にある程度の方向付け(テーマ)が重要になってくると思う。

勉強会に何を求める?

たとえば、初心者は

  • プログラミング言語やアプリケーションの効率的な使い方(勉強の仕方)
  • またはそれによって広がる世界(今は仕組みを理解できなくても、xxを使えるようになると、こんな事ができるようになるよーとか)

に興味があるんだろうし、ある程度スキルがある人なら

  • 新技術に突っ込んだ話(特定企業の新サービス・WebAPIや流行ってきた新技術など)
  • 昔から存在するけどあまりなじみのない技術に突っ込んだ話(負荷分散、高可用化、仮想化、自然言語処理、全文検索、Linux運用方法、apacheやpostfixなどのデーモンなどとの絡ませ方などなど)
  • 同じ分野に興味を持つ人(またはビジネスに繋がりそうな人)と知り合いになる

に興味があるんだと思う。この理論で言えば、Ruby札幌のコアメンバーはRubyの使い方に対して長けている(裏を返せば飽き始めている)ので、純粋にRuby関連の技術ではなく、Rubyと絡めることが可能な「Ruby以外」の技術の方が興味あるんだと思う。他の団体も然り。(や、言い過ぎか?)

※更新 論点から外れたところで誤解を招く表現があったため、削除します

参考として、おいらがRuby札幌や北海道Webコンソーシアムに何を求めるかと言うと、あまり具体的に思い浮かぶモノはないんだけど、強いて言うなら

  • 技術者間の友達を作る(コネ含む)
  • 特定技術に関する雑談がしたい(情報交換含む)
  • 自分がまだ知らない技術に対するとっかかり(刺激)が欲しい
  • 自分の興味がある分野を題材にした勉強会ならば、それに対して深く突っ込みたい

って感じかなぁ。

個人的にはフリーランサーしてるのでこういう機会じゃなければ酒を飲めないってのも大きいw

極端な話、勉強会じゃなくてもいいかな。開発集会とかその後の呑み会(+気の合う人と後日メールとかチャット)だけで十分なのかも。

特にオープンソース系の言語だと「いろんな技術のつなぎ役としての言語」という意味が大きいと思うので、Ruby中上級者全員を満足させるのは難しい気がする。逆にそういう人は(地方では)メタ的なものを求めてるんじゃないかなぁと思う。そういう意味では「開いて」「呑めれば」それでいいのかも。(そういう意味でRuby勉強会って難しいよなーとか)

勉強会におけるスタンス

勉強会やコミュニティに貢献することで、自分の生活が貧しくなるのは嫌なので、特定の人が疲れないようにうまく回すには以下のことが必要になると思う。

  • 参加者をお客さんとして扱わない。みんなで勉強会を成立させようというスタンスでやる。
  • 費用・労働力の分担をフローに盛り込む
  • 参加者を巻き込む。(あ、オープンソースみたいだね)

(野外のジンギスカンパーティに呼ばれたとき、最初から最後まで箸と皿抱えて座っている人は居ないのと同じ考え。北海道にはこの土壌はあるんじゃないでしょうか)

勉強会という特性から考えると、むしろこっちの方が都合の良い事が多い気がする。

具体的には、こんな感じ?

  • 必要経費として参加料を徴収する(300円ぐらい?)
  • 動画配信できてないコミュニティでも、動画配信できるようにする財源(労働力や機材代)として、サイト上から募金を受けては? (地理的問題や時間の都合で参加できない勉強会で、録画ビデオが存在すれば購入してでも見たいものはたくさんある。ちょっとの募金で金銭的問題はクリアできるなら、おいらは募金すると思う。で、募金と言えば PayPal 。でも実際どうなんだろう?使ったこと無いし。興味はある)
  • テーブルやイス、電源周りの用意や後片付けなどは参加者に手伝ってもらう(サイト告知時や終わった後などに声かけする)
  • 勉強会で何をしたいかを発言/集約する仕組みを作る。(具体的にはアンケートシステム?)
  • スピーカーやってみようかなぁって人も居ると思うので、ライトニングトークや公募スピーカーに向けての時間枠を確保し、Web上などで常時募集する。
  • USTREAM を使ったリアルタイム中継や、その後のニコニコへのアップロードとかは、興味のある人を募って手伝ってもらう(ちなみにおいらは興味がある)
  • 懇親会は参加者主導にする。好きに行けと。ただし、行きたい人で固まって行こうと。(勉強会の後に親睦会があること自体は告知し、店の予約などはしないが、各自行くかどうかは心に決めて来いと。で勉強会の締めで挙手。10人くらいなら入れるでしょ? おいら呑みたいw)
  • 主催者側の肉体的・経済的負担を目に見えるようにする。たとえば、準備するためのタイムテーブルを公開したり、勉強会を開催するために協力してくれた人や、費用(有識者を招いたときの費用も含む)をまとめて、こんなに大変なんだからちょっとで良いから手伝って風に協力を仰ぐ。(そこまでしなくても実情がわかれば手伝ってくれるかも。Webコンの主催者は「部活動」という表現をしていた。的確な表現だと思う)
  • 以上をいきなりやれと言われても出来ない(参加者が戸惑う)と思うので、まずは流れを作る。

※北海道Webコンソーシアムは毎回参加料として500円(会員は300円)取ってますが、参加者側としてもあまり苦にはなってないようです。(会場費に使ってますとアナウンスがあるため)

※ただ、お金を取る以上Web上などで会計報告は必要かも知れません

逆に、主催者側で主導すべきは

  • 会場確保
  • イベント内容や日時を決める
  • スピーカー(主に有識者)への根回し・招待・調整(これが一番疲れるんだろうけど、これはコネが必要だからねぇ)
  • 会計

ぐらいで、あとは状況によってその場で協力者を募ってもいい気がする。

会場を押さえるノウハウの共有

これをうまく共有できると、開発集会とかSusukino.rb/.js/.mxml/.airとかが勢いで開ける気がする。

実際、Java絡みの勉強会を北海道で開きたいって声もあった気がする。

既存の勉強会のお手伝いも、しやすいかもね。

上記の通り、ある程度なんでも出来る人は、自分の興味範囲を深く突っ込みたいんだと思うので、適切なタイミングで一期一会的に単発の勉強会があってもいいんだと思う。(まぁ、前提として数人集まらないと話にならないので、声かけ出来るぐらいのコネ+開けた広報システムが無いとダメだろうけど)

コンテンツマッチ広告業界について勉強した | IDEA*IDEA あたり参照

要点

  • 20人以上入れて、机と椅子があって、電源が取れるところ(ここまで必須)
  • 無線LANが使えるところ
  • プロジェクターとスクリーンが使えるところ
  • あまり高額ではないところ(多少なら割り勘でも負担にならない)

検討すべき他の事項

  • 会場はどこかの会社の会議室などを使えないか?(その方が機材が揃いやすい?)
  • 札幌駅脇の紀伊国屋の上の小樽商科大学のフロアを使わせてもらえないか?(大学の施設は何かと使いやすい。ただし大学の職員による責任者が必要。パイプ求む)
  • 条件を満たす施設はあるけど予算がないということであれば、道や市役所などから補助はもらえないか?(NPO法人化必要?)
  • 交通の便はどうか?
  • 近くに飲み屋街はあるか?

行政からの補助制度

行政からの補助とか言うと「えーメンドー」とか聞こえてきそうだけど、簡単なら申し込めばいいし、面倒ならスルーで良いと思う。(そこまで本格的に困っているわけでもないだろうし)

予算と広報に関しては、行政の力を借りるのが良い気がするので、補助してくれる制度があるのかどうか調べてみた。

受け入れ体制はありそう。ただ、よくわからんので明日にでも個人的に市役所・道庁へダイブしてくる。(勢い大事。相手してくれるかなぁ?)

質問事項のメモ

  • 上記設備を備えた会場はあるか?
  • 行政から経済的補助は受けれるか? またそれによって行政側からの干渉はあるのか? 受けれるとしたら条件は?
  • 広報活動を行う上で、定期発行物やホームページなどに載せてもらうことはできるか?
  • 特定団体の代表ではなく、いち個人として、実現可能性や具体的にどうすりゃいいの?って部分を聞いてきて、叩き台にする。

個人的にはLOCALで受けて、その下に各コミュニティがついて予算をもらう&ノウハウ共有ってのがいい気がする。

ただ、実際補助を受けるとなると色々関係者が動かなきゃならないんだろうし、おいら的にも本気で推しているわけでもないので、さらっと調べて叩き台になればそれでいいかなぁと思っているだけ。役所対応されるとムカッとくるので、明日には「あんなのダメだ」と言い切るかも知れませんw

広報活動

やっぱり参加者(今回は自分の興味に合わないからやーめたーと言ってる人含む)は多い方が面白い。(その分大変だろうけど)

特定団体だけ(縦割り)ではなく、特定地域で行われるイベント全て(横割り?)を集約して、集約したモノをみんなに使ってもらうのが便利だと思う。

これは実質IT 勉強会カレンダー でいい気がする。

ただ、たくさん登録されてて見にくいのでIT 勉強会カレンダー検索 (能動的に絞り込み)、またはこのスクリプトの様なgoogleカレンダーをフィルタリングするプロキシ(のようなもの)を経由して、北海道絡みだけのイベントカレンダーを公開(受動的に絞り込み)して使ってもらうのが良いかも。誰かサーバ資源余っている人設置してみてください。(Herokuでやろうとしたらrobots.txtが邪魔してダメだった。現状ではプロキシ的なものを経由させなければ、googleカレンダーだけではフィルタリング・自動同期できない)

あと、勉強会に参加するような人が見てるかどうかわからないけど、市役所や道庁が出している広報や、道庁・札幌市のHPに勉強会の情報を載せてもらうとかすれば、裾野は広がる気がする。(リンク先が上記特定地域版googleカレンダーになっているのが理想)

お、忘れてた。おいら北海道のIT関係イベントをまとめるコミュニティ(と言えるのか? トラコミュって)を作ったんだった。現時点では意味がないけど、みんなが使ってくれると意味のあるモノになる気がする。(でもマジメに広めようという気はない)

あと、人が集まるであろう所にポスター(までは行かなくても、告知できるもの)を貼るとか、特定スペース占有可能な掲示板的なものを使わせてもらう事って出来ないのかなぁ。たぶん、参加者予備軍(IT関係の会社などに勤めている人とかとか)の大半は、勉強会があること自体を知らないと思う。

知っていて来ないのは良いとして、知らなかったから来ない(知ってたら来てたのに)ってのはとてももったいない気がする。

個人的意見

  • みんなが楽しめればそれでいいのでは? (学問的にストイックな内容が含まれてもいいけど、それが主体だと辛いのでは? 意味が無くてもそれが楽しいならいいのでは? OSCでのマラカスコントローラーのように)
  • かつ、主催者側も自分が楽しければそれで良いのでは? (あまり参加者の顔色を見ずに、自分の興味範囲を好きなようにしゃべれば良いのでは? おいらなら、みんなのためとか、地域のためとか言ってると、たぶん疲れて嫌になる)
  • 基本的に勉強会に参加するだけで楽しいと思うんだけど、主催者側だけが肉体的・経済的に辛いとうまく回らないと思うので、コミュニティ全体として回るような工夫が早急に必要では?(とりあえず受け入れ準備だけでも整えては?)
  • 「自分は初心者なので勉強会に参加することで勉強したい」と言う人が多い印象だけど、実際には刺激を受けてモチベーションが向上するぐらいしか、効果がないように思う(そりゃそうだ)。スキルを上げたいなら、ちゃんとまとまっている書籍なりサイトを読んで、ニュースを追って、かつ自分で何かを作り上げてみないとスキルアップはしないと思うから。この「勉強方法を伝える」という意味では、勉強会の中でセッションがあっても良いとは思うけど、最終的にはWeb上にまとまっていた方が使い勝手が良いと思う。
  • 逆に自分で勉強してみて、どうもうまくいかない時があると思うので、そんな時に気軽に聞ける場所(SkypeのオープンチャットやIRC、もしくは開発集会)があれば理想かも。現状こういう意味ではあまりうまく機能してない気がする。
  • なーんで、プレゼン資料をネット上で公開しない人がいるんだろうねぇ。特定のイベントでしか話さないことに意味がある(金を取ってるとか)とか、その一時期だけしか意味がない(あとは著作権上問題がある)ならわかるけど、ノウハウの固まりみたいなプレゼン資料(パワポとかにまとまっているやつ)を、サイト上で広く公開しない理由がよくわからない。なんの為にプレゼンしたの?みたいな。
  • イベントを開くためのノウハウや支援団体(北海道ならLOCAL?)が広く公開・認知されている状態ならば、ちょっと何かやってみようかなぁという人が出てくると思うし、既存の団体(Ruby札幌やWebコン)のイベント内のセッションや、分会となってもいい気がする。「時間だけ確保しといたから好きに使って」みたいな。(主催者側があれこれ考えて疲れちゃうよりよっぽどいい気がする)
  • と、いう意味でもっとLOCALが強権と金握って、協力するからどんどん訪ねてきなさいはっはっはーぐらい言っても良いと思う。(現状Webコンとかは未参加だよね)
  • 悪影響がないなら、NPO法人化してでも行政から補助を受けた方が(主催者・参加者共に)良いと思う。もっと有名人の話を「北海道で」聞きたいよねぇ。

さて、巻き込もう

おいらはどのコミュニティの運営側の人でもなく、内情や今までの経過を知らないので、上記のようにはならない可能性は十分にあるのですが、まぁ、どうせ外野なので言うだけ言ってもいいだろうとw (徹夜で書いたのであまり現実的ではない話もあるし)

企業の力をもっと使った方がいいとか、カネカネ言うなとか、いろんな意見があると思うので、トラックバックなりコメントなり、電話や呑み会で仲間と話してみてください。

んで、積極的に勉強会に参加してみてください。

おいらはとりあえず、LOCALのMLに参加して、道庁と市役所に行ってこよう。

しまった、増田で書いた方が話題性があったか?!


2008年8月23日土曜日

RubyOnRailsの設計手法もレールに乗せよう

「Ruby on Rails によるシステム開発をモデリングで効率的に行う」連載記事を書いた - Akasata's Page(あかさたのページ)

という記事を見つけまして、これが自分の考えとピッタリだったのでご紹介。

経緯

以前においらはmasuidrive on rails - アジャイルな環境作り - そんなに急いでどこへ行く を見て、railsって書き始めたら便利な機能がたくさんあるから早いんだけど、それ以外の部分(デプロイとか設計とか)はrailsはノータッチなんだなぁと思ってました。

資料から見えるmasuidriveさん的な答えは、

  • rails-create-svnなどのrails環境セットアップツール
  • capistranoと連動したapacheのconfジェネレータ(最近はEC2上で動いている模様)

のようで、おいら的な答えは

  • rocketstarter(rails-create-svnと同じ範囲をサポート)
  • sqld4r(WWW SQLDesignerのデータファイルからマイグレーションとモデルの関連付けを生成)
  • adminpage_scaffold_generator(rails標準のgeneratorの見た目だけを本番で使えるレベルのモノに置き換え。controllerやviewは書き換えて使う前提)

でした。

これで思い立ったときにコーディングを始めることは出来るけど、でもやっぱり、ある程度の規模のシステムなら先にER図を書いておきたいし、ある程度レイアウトや機能をモックを使って煮詰めて関係者の合意を得てから、本格的なコーディングに入りたいです。

でも結局、rails用に整備された設計を支援するツール類は無い状態でした。

また、rubyやrailsの強みであるgemやrailsのプラグイン をうまく使うと、作業効率がとても向上するなとは思っていましたが、日本語のサイトでは情報が集約されているところは少なく、結局は使い方を覚えるのに1つ1つ試してみるしかない状況でした。これは非常に時間がかかりました。(プラグインの性質上、どこで公開されているかもまとまっていない状況なので)

railsの設計手法もレールに乗せる

おいらはPHPを使ったシステムで設計手法の「せ」の字ぐらいは知ってるつもりでしたが、railsぐらい作り方が決まっているモノなら設計手法も決まり切っていて良いんじゃないか、と思っていたところでRuby on Rails によるシステム開発をモデリングで効率的に行うを読みました。

あーそーそー、これこれ。という感じで読んだ瞬 間から全肯定でした。

まず読むべきモノ

さらっと上記の概要をまとめると

  1. 5W1Hを明確にし、作ろうとしているアプリケーションの存在意義を洗い出す。これはユースケースモデリングにて行う。
  2. 必要な機能とその実装方法を検討する。これはフィーチャモデリングにて行う。
  3. データ構造を検討する。普通railsはデータベースを使うので、これはER図にて行う。

となり、図にすると

rails_design

になるんですが、 今までにおいらが用意したモノを使うと、

rails_design_flow

てな感じで、実装方面は結構網羅できてました。これはもうrocketstarterとsqld4rに任せて、細部調整ぐらいで良いでしょう。

なので、ここではモデリング方面を中心に、自分で作業してて思ったことを交えてまとめてみます。

大事なこと

便宜上順序立てて説明してますが、実際にはほぼ同時進行的に設計を進めることが多いです。特にフィーチャモデリングとモック作成とER図作成は。

たぶんそれでいいんです。設計って全体を俯瞰しながら細部を詰めていく必要があるので。

ユースケースモデリング

これはユースケース図で「誰が」「どこで」「何をするか」をまとめ、ユースケース記述でさらに「いつ(フローの順番を明記)」「なぜ(ユーザ行動の動機)」「どうやって(作業の詳細を明記)」することで、このシステムに求められていることは何で、どういう方針を持って設計に当たるか、を自分(ないしチームメンバー)が理解するために作ります。

実際書いてみればわかりますが、結構単調な作業で、前に進んだ感が少なく、面白みには欠けるかも知れません。

ただ、昨今のペルソナを使ったユーザ中心設計はコレを具体的に外さず煮詰めるときに使う手法の一つですし、そもそもサービスが流行るかどうか、極端に言うとサービスの存在意義はココでいいところを押さえられたかどうかによる気がします。

よって、一番時間をかけるべきはここなのかなぁという感じです。既に競合サービスがある場合は特に。

ユースケース図を描くツールとしては、当初Web上に最新状態のドキュメントが置ける点でKodougu がいいかなと思ったんですが、ちょっと完成度の低さが目立った(重なりの順番変更さえできたなかった。や、使い方がわかってないだけかも知れないけど)ので、netbeansのUML作図プラグインで良いかと思っています。どうせコーディングには使うし。あまり良いツールだとは思ってないけど。

ユースケース記述はテキストファイル、または(windowsなら)iEditのようなアウトラインプロセッサでしょうか。Mac用はいいのがないんだよなぁ。テキストでいっかぁ。

フィーチャモデリング

これは聞いたことが無くて、実作業ではやったことも無かったんだけど、要は必要とされる機能を列記し、それをどうやって実装するかをまとめることかな。

Railsの場合はプラグインやGemが豊富なので、うまく使うと一気に効率が上がる。逆に言うと、プラグインをうまく使えるように必要とされる機能側をうまく調整するために必要な図かな。

これを描くのはマインドマップがちょうどいい気がする。オススメはmind42.comかな。

ER図とモック

設計として必要なのはER図だけで良いのかも知れないけど、実際には関係者との摺り合わせ、必要な項目を洗い出すためにモックを作る必要があると思う。

この作業を今まではExcel+生HTML(もしくはパワーポイント)で行ってたんだけど、ExcelでERを描くと修正が入ったときに面倒だし、考えると言うより清書的な意味合いが強くなる気がするし、生HTML描いちゃうとなにげに細かいところまで描かなきゃいけない気がして、モックを作るのに時間がかかる。

で、これをWWW SQL DesignerMockupsに変えてみたら非常に効率が上がったので、以後コレばっかり使ってる。

北から南や西を見て思うこと: Balsamiq Mockupsを使ってみた(ペーパープロトタイピング風モックを作るツール)

Balsamiq Mockups Home | Balsamiq

WWW SQL Designer (ER作成)

ER図の作図ツールは結構種類があって、たとえばDBDesignerとか MySQL Workbenchがありますが、以下の点で気に入って使ってます。

メリット

  • 外部キー(FK)と主キー(PK)が線で結ばれるので、テーブル同士を結ぶような表現方法より、関係が明瞭。特にテーブル内で自己参照するような構造になっている場合や、ARの制約の外(FK側の絡む名がテーブル名_idでは無い場合など)に見やすい。
  • データベースの種類に依存しない(ただしSQLDesigner 1.0系の話ね)
  • sqld4rを使うと、ER→migration→関係付与まで一気に終わる
  • 無料。かつシンプル。
  • 基本Webアプリだからネットワークがないところでは使えないが、ローカルにXAMPのような環境があればどこでも使える。Macならファイル配置するだけで使える。
  • データ形式がXMLなのでsubversionなどでバージョン管理すればdiffで差分が見える。

デメリット

  • テーブル同士の関係が、1:1なのか、1:多なのかが表現できない。まぁ、普通は1:多の方が多いけど。(sqld4rだとコメントを元に判断しようかなと思っている)
  • ERの保存が面倒。特にsubversionなどでバージョン管理したいならWWW SQLDesignerからデータXMLをコピペでエディタに張って、そこからファイルに保存しないとならない。読み出し時は逆の動作が必要なのでもっと面倒。

まぁ、テーブル同士じゃなく、カラム同士が結線されるのが大きいです。

落とし穴

フィーチャモデリングをするには、「Gemやプラグインにはどういう種類があって、どんな時にどれを使うべきで、データベース上にはどういうものを用意しておく必要がある」のようなものをあらかじめ把握しておく必要があるんだけど、これをうまくまとめてあるサイトが皆無。

プラグインならRuby on Rails プラグイン まとめ wiki とか英語アレルギー無ければRuby on Rails Plugins - Agile Web Development あたりは結構いい線いってるんだけど、Gemに関しては全滅。RubyForge自体の検索機能も腐ってる。

Gemに関しては、今まとめサイトを構想中だし、プラグインに関しては上記2つでよく使うモノは押さえてあると思うので、あとはググってみてコツコツやるしかないね。

で、実践

上でちらっと触れたGemの情報を集約するサイト構想ですが、オープンソースにする予定なので、ついでだから上記設計手法でチュートリアル風にまとめてみようかなと思っています。

ちょっと妄想が妄想を呼んで機能が膨れあがりそうなのと、仕事が忙しくなりそうなので、そのうちあがると思って気長に待っててください。