Home > article

article Archive

大江戸Ruby会議01で発表してきました

昨日は大江戸Ruby会議という名のasakusa.rbの生活発表会があったので、普段の生活で考えてることを発表してきた。ちなみに実はasakusa.rbの参加回数はそんなに多くなかったりする。当日のスライドと動画はこちら。KaigiFreaksは仕事がはやくてすごい。いつもありがとうございます!

大江戸Ruby会議01 on Vimeo

この発表について何か僕にもの申したい人がいたら@ukstudioかy.akamatsu[at]ukstudio.jpまで頂けるとありがたいです。

発表内容についてちょこっとだけ書いておこうかな。パブリックスピーカーの告白で言う「講演家がこう話せばよかったと思うスピーチ」にあたる部分。

タイトルに戦略ってあるけど、正直そもそもそういったものがあるのかよくわからない。CIとかは環境の話だし、TDDとかリファクタリングとかはスキルだしでそれらが「戦略」かと言われると違う気がする。

結局のところ、継続的に改善していくしかないと思うんだよなぁ。そうなると後はもう手を動かすか動かさないかの話になる。そんなことを考えたら終始「熱意を持って頑張って」みたいな話になってしまった。これはこれで妙に好評だったけど(母数80ぐらいのうちサンプリング5ぐらい)。ちなみに熱意がなくとも仕事だと割り切って手を動かしてももちろんいいと思います。

で、手を動かす前提となるとClean Codeを保てるかは個々の設計能力に依存してくる。そういうわけでRubyでClean Codeってどう実現するんだろうね?というところをSOLID原則を取り出して話をしたつもり。

終わった後に@t_wadaさんからRubyConfで似た話をした人がいるから動画を見た方がいいと言われ、今日twitterで動画を教えてもらった。

SOLID Ruby – Jim Weirich – Ruby Conference 2009

資料も豪快にgithubにあがっていて、こっちは@kakutaniさんに教えてもらった。お二人共ありがとうございます。

jimweirich/presentation_solid_ruby – GitHub

まだ資料をざっと見ただけなんだけど、僕より全然良くできてるので皆さんこっちを見るといいです。まだまだ精進が足りない。

Rubyらしい設計って色々とまだ手探りなんだけど、参考になったのはRubyによるデザインパターンとかリファクタリング:Rubyエディションあたりかなぁ。

後はJavaだけど、Clean CodeとかAmazon.co.jp: アジャイルソフトウェア開発の奥義とか。両方とも結構ヘビーな本だけど勉強になる。

大江戸Ruby会議の全体的な感想は他のWeb日記力の高い人におまかせしたいと思うのでそちらをどうぞ。と言うのも、発表が最後の方だったので会議中ずっとそわそわしてたため、文章にまとめられるほどまだ消化できてないのだ。この辺はなかなか難しいところだけど、あの空気感の一旦を担えた(と思いたい)と言うことでよしとする。

最後に。発起人の@a_matsudaさん、実行委員長の@kakutaniさんを始め、スタッフ、発表者、参加者のみなさん、どうもありがとうございました!

近況

個人事業主になりました


この間の確定申告の際に、個人事業主届けを出してきた。去年は出さずに1年働いていたけど、今年は確定申告を青にしたのでそのついでに。届出の提出はすごいあっけなくて、改めて個人事業主なんてそんな大層なものじゃないなーと思った。

屋号は「UKSTUDIO」にした。屋号を取ったから何が変わるってわけでもないけど、本名とukstudioっていうIDの間にある溝を埋めるぐらいの意味はあるかな。

4月下旬からスケールアウトでお仕事


. @ukstudioと@yuumi3が仲間にくわわることになった! [♪ドラクエ調]less than a minute ago via Tween


@yamazさんからお声がかかって、4月下旬からスケールアウトで働くことになった。正社員ではなく1年の契約です。

一応、別の仕事も請けることは可能だけど最初から複数の仕事をまわせる気がしないし当分はお仕事の依頼は請けられないと思います。あしからず。

「パフォーマンスを出してください」と言われたので頑張りたいと思います。よろしくお願いします。

TDDBC福岡に参加してきた

福岡TDDBCに参加してきた。今回で3回目の参加(1回目は東京、2回目は東北)。

3回は割と多めの参加回数だと思うけど、参加者層が地域によって違ったり、当然ペアプロする相手も違うわけでいつも違う刺激をもらってる。

今回は@mzpさんが参加するとのことなので普段使ってるRubyではなくOCamlで参加。OCaml組は2ペア(4人)いて、1日目の前半を@suerさん、1日目の後半と2日目を@mzpさんとペアを組んでやった。OCamlは初心者もいいところなので2人には大分お世話になりました。どうもありがとうございます。

コンパイルが必要な言語でTDDをやるとコンパイルがテンポを崩しがちなんだけれど、OMakeが結構よく出来ていてautotestみたいなことも出来るし、その辺は特に不自由ない感じ。OCamlの型付けの強さはなかなか慣れないけれど、コンパイルが通った時点で型の間違いがないって言うのは割と安心かも。

慣れない言語でTDDをやって一番実感したのは、普段Rubyの時は「こういうインターフェースで使いたい」と振る舞いの視点からテストケースを考えられるのに、OCamlだと「今回正規表現が必要そうだけどOCamlだとどうやるの?」といった具合で先に実装の詳細について考えはじめてしまうこと。本来は実装は置いておいてテストケースを考えるべきなのについつい実装の方を考えてしまった。

ただ、言語を習得していく過程でTDDが出来ないかと言うとそんなことはないとも思う。ペアプロの時はたまたま僕にとってオーバーペースだっただけで、落ち着いてbaby stepで刻んでいけば逆に習得しやすくなるかもしれない。今回はRubyと同じテンポでやろうとした俺のミスだなー。

後、ここ最近新しい言語を習得できないなーと思っていたけどこういうイベントで挑戦するのは悪くない。普段だとついついRubyに逃げちゃうんだけど、ペアプロだと逃げようがない。あとは@mzpさんのコードを書くところを横でみれたのは大きいと思う。こう書くのかーって発見がいっぱいあった。

2日目の休憩時間に@mzpさんがAsakusaSatelliteのテストコードを修正していて、RSpecで書かれていたので「ここはこう書けるよ」「こうした方がRSpecっぽいよ」と横で口出ししていたら@mzpさんと@suerさんにRSpecの魅力が伝わったようでよかった。

ここ最近、RSpecに興味はあるけどどう書いたらいいかわからないみたいな話を良くきく。構文だけだったらドキュメントみればいいんだけど、それをどう活用するのかみたいな話はなかなかまとまってないからかな。結構需要がありそうなのでそのうちるびまあたりに寄稿してみようかな。最近やっとletの使い方が見えてきたよ。

そう言えば、今回は結構若い人が多かった気がする。@mzpさんは1つ上らしいし、@bleisさんは同い年だった。主催の@pocketfberserkerさんも年下。講師の1人の@akinekoさんは俺より1つ2つ年下だったと思うし(年上だそうです)。こういうイベントで同世代や自分より若い人がいるとなんかうれしいなー。

今回のTDDBCもなかなか刺激的で楽しかった。次のTDDBCもいくつか開催決まってるっぽいし、今回で動きだす地域もあるみたいだし楽しみ。

最後に、主催の@pocketfberserkerさんを始め、今回のTDDBCの運営に携わっていた方々、どうもありがとうございました!
Togetter – 「TDD Boot Camp福岡」

Galaxy Tabを購入した

HT-03AからGalaxy Tabに機種変した。と言っても電話はこれしか持っておらず、さすがにGalaxy Tabで通話するのは不便なので機種変した後SIMを抜いてHT-03Aに戻した。Galaxy TabはWi-Fiメインで使う予定。今のところ外でGalaxy Tabからネットに繋ぐことはあまり考えてない。とは言え繋げるにこしたことはないので、今持っているイーモバをPocketWiFiにするか、b-mobileを契約するかぐらいのことは検討している。

Galaxy Tabを購入した目的

Galaxy Tabを購入した最大の目的は電子書籍。本については基本的に紙で読みたい派なのでちょっと前は「別に電子書籍とかいいや」と思っていたけど、仕事中に「あの本に書いてあった気がする。けど手元にない」みたいなことは結構良くあるので、その辺りのメリットを考慮して踏み切った。

仕事中にという限定で言えば別に端末を買わずともPCにデータを入れておけばいいだけだ。にも関わらず端末を買ったのは本の大きさが原因で読む機会を減らしている物があること。例えば通勤中とかで本を読むのだけど、ある一定以上の大きさになると鞄から出すのが億劫になったり、そもそも鞄に入らないことが多い為。

あともう1つの理由は、PCはやはりじっくり本を読むにはあまり適していないため。つまりは電子書籍買ったり自炊するんだったら、読み終わった本をデータとして持ち歩くだけでなく、最初から読むことも考えたかった。

電子書籍としてのGalaxy Tabの評価

評価と言っても他の端末を使っていないのであまり比較したものは言えないけど、僕からすると「必要十分」と言ったところ。PDFやepubのデータで読んでいるけど速度的には十分。流石に紙の本みたいにあるキーワードを探しながらペラペラめくるというのは厳しい。ただ、せっかくのデジタルなのでそこらへんは検索でカバーしたいところ。

ちなみにPDFを読む為に使っているアプリはezPDF Readerと言うアプリ。有料だけど$1ぐらいだったと思うので問題ない。このアプリを使っている理由はブックマーク機能と文壇合わせ機能があること。Adobe Readerで読んでいる時はPDFの余白が結構邪魔で、端末のサイズが小さめのこともあって拡大を適宜調節するのがちょっと面倒だった。ezPDF Readerの文壇合わせは文章のブロックごとに余白を詰めてくれるので拡大をわざわざする必要がない。この機能が今のところezPDF Reader以外見当らなかったのでこれを使用している。

端末のサイズ的には電車内で片手持ちをするならこのサイズが限界と言ったところか(人にもよるし女性だと辛いかもしれない)。逆に単純に電子書籍端末として考えると少し小さい気もする。この辺のバランスは人によって違うだろうから何とも言えない。個人的には満足してるし、現状販売されている端末の中だとこのサイズがベストだったと思う。

Galaxy Tabを買って最初にやったこと

root権の取得

Galaxy Tabでrootを取得するには[APP] z4root – xda-developersからz4rootのapkを取得してインストールすればいい(要会員登録)。インストールや使い方の詳細は検索すれば出てくると思うので割愛するが、とても簡単にroot化できる。root化は自己責任で。

システムフォントをTakaoフォントに

個人的にTakaoフォントが気に入っているのでGalaxy TabのシステムフォントをTakaoフォントにすることにした。手順はちょっと面倒だが以下の通り。ちなみにパソコンがUbuntu 10.10前提の話。

まずは、Android SDKを用意してadbコマンドを使えるようにする。Galaxy TabはそのままだとDeviceとして認識されないので/etc/udev/rules.d/51.andorid.rulesにlsusbからidVendorとidProductというパラメータを記述しなければならない。この辺はDev Phoneと同じ問題っぽいので詳しくはDev Phoneについて検索するといいかも。

SUBSYSTEM='usb', ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="681c", MODE=="0666"

ファイルを保存したらsudo service udev restartしてやる。

これだけでもまだadbで繋ぐには不十分でadbのserverをsudoで立ち上げてやらないといけない。

$ adb kill-server
$ sudo adb start-server
$ adb devices # ここでdeviceが?????とかじゃなくちゃんと表示されていればOK

adb shellで無事端末につなげたらフォントを書き換える為にsuしなくてはならない。suするとGalaxy Tab側でx4rootのアプリがrootを許可するかポップアップを出しているので許可してやる。システムフォントは/system/fonts以下に入っている。日本語フォントはDroidSansJapanese.ttfで、英語はDroidSans.ttfとDroidSans-Bold.ttf。他にもあるかもしれないけど今回書き換えたのはこの3つ。ちゃんとバックアップ取っておくこと。ハードリセットしても元には戻らない。

/system以下がread onlyになっていたら再マウントする必要がある。最初にmountを叩いてどのデバイスがsystemにマウントされているか確認して再マウントしよう。

# mount
# mount -o remount,rw /dev/block/stl9 /system

インストールするフォントはadbからpushするなり、USB接続してコピペするなりして転送する。僕は一旦/sdcardに置いてから、busyboxのcpで/system/fontsに移した(mvだとうまく出来なかったので)。busyboxはマーケットからインストールすることが出来る。日本語のフォントはサイズが大きいのでrenameしたものを3つ用意するよりは1つ置いてシンボリックリンクを貼るといい。リンク先は必ずsystem以下に置こう。/sdcard以下だとUSB接続した時とかにリンクが切れて、フォントを見つけられなくなったGalaxy Tabが延々と再起動を繰り返したりしてリセットせざるを得なくなる。

# busybox cp /sdcard/TakaoGothic.ttf /system/fonts/
# cd /system/fonts
# ln -s TakaoGothic.ttf DroidSansJapanese.ttf

これで端末の方でフォントを「標準フォント」に変更すればOK。

全体的な使用感

これもまた比較する端末がHT-03Aになるので何とも言えないけど、少なくともそこそこ快適に動作する。特にもたつきもないので、HT-03Aが余計に苦痛に感じられる程。画面サイズはTwitterやFacebook、Gmailなどのアプリを使うには非常に快適で、ブラウザでPCサイトも拡大・縮小がピンチイン・ピンチアウトでラクなのでそこそこ快適。ネットする程度ならPC起動する必要がないぐらい。ニコニコ動画はブラウザでもアプリでも見れてない。ブラウザはFlashがうまくうごいてない気がする。アプリはローディングが遅い(最初に全部読み込もうとしてるっぽい)から挫折しただけでもしかしたらちゃんと見れるかもしれない。

そんな感じでGalaxy Tabは非常に満足している。今はちょうどキャンペーン中で4万しないぐらいで購入できた。値段的には割引価格後で個人的にはちょうどいいかなぁって感じ。もし買うなら今だし、買わないならせっかくなら他のタブレットが販売されるのを待った方がいいかもしれない。

ソフトウェア設計とは何か?(ソフトウェア工学とは何か?)

ソフトウェア設計とは何か?というとても良い論文の翻訳があるのだけど、いつのまにか記事が無くなっていた。手元にあるテキストデータを公開しようにも翻訳者の方との連絡手段がない。

幸いなことにarchive.orgに記事のアーカイブが残っている。ただ、このarchive.orgが検索でまともにヒットしないので、せめて今後この記事を探す人がいた時のことを考えてここにリンクを貼っておく。

ソフトウェア設計とは何か?

2010年のふりかえり

新年あけましておめでとうございます。今年もどうぞよろしくお願い致します。

去年のふりかえりの記事を去年中に書けなかったので、新年早々ブログを書いております。

お仕事

去年頭からフリーランスとして働きはじめてるけどまずは1年過ごせた。特に営業をせずともいくつかお仕事の紹介を頂いたり、実際にお手伝いさせてもらったりできるのは本当にありがたいことだなぁと思う。もし愛想つかしていらっしゃなければ今年もどうぞよろしくお願い致します。

あと去年執筆したWEB+DBの記事は、思いの外好評で結構色々な人からお褒めを頂きました。たまに自分で読み直すけど、結構良く書けてるなぁと我ながら思う。あの時の自分すごい。この記事がきっかけでもう1つ進んでいるものがあるのだけれど、こっちも良いものにしたいなぁ。来年の夏頃にはお見せできるはずです。

プログラミング

去年はずっと自分なりのClean Codeを考えてたおかげか、ここ最近書くコードは以前に比べると大分マシになったと思う。あとはTDDを含めたTestingについても考えてるけど、この辺はまだまだ勉強不足な部分はあるなぁ。TDDそのもののやり方は大分馴染んできたけど、テストコードの書き方とか受け入れテストやモック/スタブの使い方がまだまだ。

あとは使えるプログラミング言語が去年は増やせなかったなぁ。興味ある言語だけなら結構あるんだけど。今年はSmalltalkと関数型言語を何か1つ勉強したいなぁ。あとDCIやドメインモデルあたりの勉強もしたいな。去年中に理解することが出来なかったと言うか、そもそも勉強できてないというか。

英語

英語は去年も本当にだめだった。1年でそこそこ話せることを目標にしてたけど途中で頓挫した。今年こそはと意気込んでも多分また頓挫するので、ちゃんと計画を立てよう。これは英語に限らず。普段仕事で計画とか見積りとかやってる割には普段の私生活はそういうことあまりしてないのは良くないな。

人とのつながり

あと、去年一番強く意識したのが「人とのつながり」。Ruby会議やオブラブ、RailsDevConで会った人達、他にもasakusarb、mitakarb、ブログやWEB+DBの記事を見てお仕事を依頼してくれた人達、前々から知り合ってた人達。本当に色んな人に会ったと思う。色々な人とのつながりのおかげでできたことも多いし、人と合うことで新しい刺激と自分を見つめ直すことができた。去年は本当に色んな人から色んなものをもらえた、すごい良い年でした。

今年

去年は本当に良い年だったけど、それでもやっぱりいくつか出来なかったこともあるし、自分の未熟さを痛感することも多かったのでその辺は今年ちゃんとしたいな。毎年、あれやりたいこれが必要だをその場で判断してきてて、それはそれでそれなりに上手くまわっていたけど、今年はもうちょっと計画をたてていきたい。

あとはRubyConfは今年こそ行こう。行きたいなーだと行かなそうなので、行くよ!とここに書いておこう。んで、現状のままで行っても英語よくわかりませんでしたで帰ってきそうなので、やっぱり諸々計画立てて動かないといけないのだ。

IRCでミサワをいつも側に…

このエントリーはRuby逆引きレシピAdvent Calendarの参加エントリです。担当は12月24日です。前日のエントリは@kei-sさんの Ruby逆引きレシピで作る、忙しい人のための『地獄のミサワの「女に惚れさす名言集」』- 札幌市西区です。

さて、私達プログラマが使うソフトウェアの中で最も起動時間の長いものは多分エディタでしょう。では次はなんでしょうか?そう、IRCですね!今回は逆引きレシピの中から「レシピ109 IRC botを作りたい」を紹介します。

レシピのサンプルコードを参考に「ミサワ」のキーワードに反応して地獄っぽい返答をするBOTを作ってみました。これでいつでもミサワ先輩のありがたい御言葉を頂戴することができますね!


上記のコードだとありがたい御言葉がハードコーディングされていますね。ミサワ先輩のありがたい御言葉はたくさんありますから全て書くのはあまり効率的ではありません。なのでRuby逆引きレシピAdvent Calendarの12月17日を担当した@june29さんの地獄のRuby札幌の「女に惚れさす逆引きレシピ集」 – 準二級.jpを参考に御言葉のかわりに画像へのパーマリンクを取得しておいて返答するという方法もありだと思います。

このエントリを書きはじめたのは火曜日でしたが、前日の@kei-sさんがまさかのミサワネタ。「おいおい天丼なんてレベルじゃねーぞ」状態でも動じない。それが俺の流儀だ。

さて、ミサワ先輩以上に偉大なレシピ先輩ですが、@noplansさんに頂いてから「○○やるにはどうするんだっけ」と思ったらレシピ先輩に聞くようになりました。Rubyのコードを書くときは横に置いておきたい一冊です!ありがとうございます!

うっかりnetwork-manager-gnomeを消してネット繋がらなくなった

xubuntuを以前インストールしててもういらねーやと思って色々消してたら、気づいたらnetwork-manager-gnomeも消えていてインターネットに繋がらなくなったでござる。

とりあえず手元のHT-03Aで適当にぐぐった結果、Ubuntu日本語フォーラム / [Ubuntu 9.10] ネットワーク・マネジャーを復元したいが見つかったので試してみるもそれっぽいパッケージがCDから見つからず挫折。

んじゃ、コマンドラインからなんかネット接続する方法があればなんとかなるかな?と思ってこれまた適当にぐぐるとUbuntu/emobile-H11HW接続方法 – Felix-labo's Wikiが見つかったので試した結果なんとかインターネット接続成功。

あとは Ubuntu Packages Searchからnetwork-manager-gnomeのdebパッケージを落としてきて、recovery consoleからaptitudeでインストールで無事終了。

「問題→解決→原因調査→開発プロセスに組込む」 それアジャイルだよ

普段、イテレーションの終わり(ちなみに1週間)にKPTをやって問題点をだして、それを解決すべくTryを実践してはいる。けれど、短期的な解決で落ち着いてしまってしばらくすると似たような問題が発生する。 結局のところ、問題が発生したらその場の解決だけではなく、問題の原因を検証して、自分達の開発プロセスに再発防止の仕組みを組込まなければならないなと思った次第。

そんなことをFaceBookやTwitterに書き込んでいたら、諸先輩方(@kdmsnrさん、@nawotoさんありがとうございます)から「それがアジャイル」みたいなことを言われてしまった。確かに言われてみればそうだ。一定のプロセスにこだわらないからこそ、柔軟に問題・変化に合わせてプロセスを変えていけるのがアジャイルなんだよね。うーむ、勉強不足。

今までやってきたことを繰り返したところで結果は同じなのは当然。今までのやり方で「何かうまくいっていない」と思ったら、やり方を変える必要がある。その辺りの検証が今のチームには不足してるなぁ。

あとは開発の遅れやバグの発生などが開発チームの問題として捉えられがちだけど、結構開発プロセスが上手くまわってなかったり、プロジェクト関係者のコミニュケーションロスが原因で発生してるものもある。そういう意味でちゃんと開発メンバー外のプロジェクトに関わる人を全員まきこんでやっていかないといけないわけだけど現状出来てないなぁ。そろそろアジャイルごっこから抜けだすべき時期なのかもしれない。(アジャイルな見積りと計画づくりの訳者あとがき)

その辺もなぜコミニュケーションが上手くいっていないのか、なぜデモ直前のテストで問題が多発するのかとか、ちゃんと原因を調べてプロセスに組み込んでいかないといけないなぁ。

ちなみに僕が再発防止の仕組みをプロセスに組込まないなといけないなと思ったのはリーン開発の本質 ソフトウエア開発に活かす7つの原則がきっかけ。リーンが何かと言うのはまだまだちゃんと理解しきれていないけれど、現状を色々考えさせてくれるいい本でした。

RSpec日本語化計画

やっぱ僕達は日本人なので仕様記述的と言うからには日本語で書きたい。とりあえずRubyは日本語を一応識別子に使えるのでその辺で適当にやってみた。shouldが鬼門すぎるのだがどうしたもんか。「it should_not 空であること」って明らかにおかしすぎる。@takaiさんが少し修正してくれた。

本当はもっとちゃんとした記事を書くつもりだったんだけどなんか脇道にそれてしまった。

Home > article

Feeds
Meta
Others

Return to page top