2013/06/21(金)リーグ戦再開

2013/06/21 22:30
【埼玉西武 vs オリックス 第7回戦】
(2013年6月21日:西武ドーム)

オリックス  0 0 0  0 0 0  0 0 0  0
埼玉西武   0 0 0  0 0 2  0 0 x  2

[勝] 菊池    8勝2敗0S
[S] サファテ  4勝0敗2S
[敗] マエストリ 1勝2敗0S
今日からリーグ戦が再開です。 ライオンズは2回に1アウト一二塁から、帰ってきたカーターがファーストゴロダブルプレイ。3回には林崎のプロ入り初ヒットなどで作った1アウト満塁から、栗山がセカンドゴロダブルプレイ。4回は1アウトからヒットで出塁したヘルマンが盗塁失敗。チャンスを作っては潰すという、連敗中によく見た光景が繰り広げられました。 ようやくチャンスをつかんだのは6回でした。林崎、栗山の連打のあと、浅村が送った1アウト二三塁から、ヘルマンのタイムリーで2点を先制。ようやく菊池に援護点をあげることができました。 ライオンズ先発の菊池は、調子自体はあまり良くありませんでしたが、好フィールディングで送りバントを阻止したり、上手い牽制球で一塁ランナーを刺したりと、粘りのピッチングを見せてくれました。結局、7回を投げて5安打無失点。悪いときでもこれだけ抑えられれば言うことはありません。 ライオンズは菊池のあと、岡本篤、サファテと繋いで逃げ切り。Saitamaユニフォームのお披露目試合を白星で飾りました。 ちょっと心配なのは途中交代した浅村の状況です。試合後の監督のインタビューでは「アクシデントではない」というお話でしたが、テレビ中継の解説の伊原さんは「肘を痛めたかも」という発言。Twitterでは「バントの指示にふてくされたのではないか」という説も流れていますが、そういうふてくされてしまうタイプじゃないと思うんですよね。 いずれにせよ、理由がわからないだけに変な想像をしてしまって逆に心配になります……。

2013/06/20(木)SIerの我々がWebサービスを作った理由

2013/06/20 23:23
Tustle!の技術面の話は昨日書いたので、今日は開発に至った経緯を書いてみたいと思います。 Tustle!の開発がスタートしたのは2009年のことでした。もちろん、4年間ずっと開発を続けていたわけではなく、本業が忙しくなって手つかずになったり、環境面の問題で一から作り直したりとずいぶんと回り道をしました。今から作り直すのであれば、週末を何回か使えば完成させられると思いますw そもそもなぜTustle!を作ろうと思ったかというと、仕事では身につけられない技術面の勉強をしたいということもありましたが、我々のポートフォリオが欲しかったという面が大きいです。 2009年ごろは我々が前に所属していた会社の経営が悪化していた時期で、給与の遅配も発生していました。こうなると別の会社に移ることになるわけですが、その転職活動のときに職務経歴書にプラスアルファするものになればいいな、くらいの思いがありました。もっとも、実際には誘われた会社に移ったので、堅苦しい面接のようなことは一切やらずに転職が決まったのですが。 さて、転職の必要はなくなったのですが、ポートフォリオが欲しいという気持ちは変わりませんでした。今度は自分たちが仕事を取るための足がかりにするためのものとして。 私もjoeくんも、自分の技術を売るのではなく、自分の時間を切り売りする人売りの業態にうんざりしている部分があり、できれば社内で開発をしたいと考えていました。 近頃、SIerはオワコンだとたくさんの方が喧伝していらっしゃいます。それが正しいか否かはここでは議論しませんが、私は「オワコンではないものの規模的には縮小して行くだろう」と思っています。また、ソーシャルゲームバブルが弾けたら、そちらの技術者たちが我々の業界に流れ込んでくるかもしれません。残念ながらこの業界の先行きが明るいとは思えません。 一方、そう考えない人もいます。うちの営業は、ゼネコンピラミッドの頂点に近い会社さんと契約できたことで満足してしまっています。でも、それって間にピンハネ業者が入っていないだけであって、いつでも代わりが効く労働力として人売りしてることには変わりがないですよね……。 やりたいことがあって、でも会社ではそれができなくて。じゃあどうするかというと、会社と関係なく、自分たちで勝手にやるしかないじゃないですか。もちろん、Tustle!だけでお金を稼げるとは思っていませんし、これだけで仕事が取れるほどの技術力のアピールになっているとも思いません。ただ、これは一歩目なんです。この一歩が踏み出せたことは大きいと思っています。 Tustle!自体もまだまだ追加したい機能がありますし、ほかにもアプリの企画がいくつか立ち上がろうとしてます。今後ともTustle実行委員会をよろしくお願いいたします。 最後に、Tustle実行委員会では、システム開発のお仕事を募集しております。わりと真剣に。

2013/06/19(水)目標管理Webサービス「Tustle!」の仕組み

2013/06/19 23:10
6月6日に[Tustle!](http://tustle.jp/)という目標管理Webシステムをリリースしました。このブログをご覧のみなさまにも使っていただけると嬉しいです。 このシステムは私とjoeくん([@joe_uragami](https://twitter.com/joe_uragami))で作ったのですが、その仕組みについて簡単にご説明したいと思います。またの名を「こんなところで苦労したリスト」です。 #### ■ 言語 最終的にはPython + Djangoに落ち着いていますが、実はこのシステム自体は紆余曲折がありまして、以下のような変遷を辿っています。
Java + Wicket
Wicketで始めるオブジェクト指向ウェブ開発を読んで惚れ込んだ私のわがままで環境が決定しました。しかし、当時は現在のように安価なVPSはなく、肝心な公開する方法が思い当たらなかったので、やむを得ず方針転換することになりました。
PHP + kohana
PHPであれば動かすサーバーには困らないだろうということで決定しました。kohanaを選んだのはやはり私のわがままです。しかし、Javaがメインである私もjoeくんも、フレームワーク云々よりもそもそもPHPに馴染めなかったこと、また、GAE/Jの存在を知ったことで、またもや方針転換することになりました。
Java + Slim3
joeくんと二人で「Slim3すげぇ」「これGAE以外でも動くといいのになぁ」と言いながら、かなり楽しみながら開発することができました。このときに、副産物としてテスト用ユーティリティを作っています。しかし、本業の参入プロジェクトが派手に炎上したため、残念ながら開発が遅々として進まず。その間にGAEの料金体系が変更され、これならVPSを借りたほうがいいんじゃないかということで、三度方針転換することになりました。
Python + Django
Java開発者の読むDjangoの設計思想が決め手になりました。また、これまでに何度もリスケしていて、いつになったら公開できるかわからない状況になってしまったので「もう機能は削ってでもリリース日は絶対に動かさない」と決めました。もっとも、システムテスト中に本業のほうがどうしようもないくらい燃え上がったこと、最後の最後でどうしても実装したい機能が追加されたこと(後述)もあり、4月1日リリースを5月→6月と延ばしたのですが、なんとか6月6日に公開することができました。
#### ■ ログイン認証 これは早い段階で「自分たちでアカウントを持ちたくない」ということを決めていました。個人情報を預かりたくないというのもありましたが、アカウント作成のメールを出す処理とか、パスワード忘れ対応とか、作りたいシステムの本質とは直接関係ない部分の作り込みが多数発生するのが嫌だったというのが大きいです。 GAE上で動かすときはGoogleアカウントを使おうと思っていたのですが、Djangoに方針転換してからは、自分たちが使っていること、Python用のTwitter APIライブラリであるTweepyが非常に使いやすいことから、Twitterアカウントを認証に使わせてもらうことにしました。ちなみに、Twitter API1.0から1.1の対応も、Tweepyのバージョンアップだけで済んでいます。素晴らしい。 また、Djangoは認証のバックエンドを簡単に差し替えられるので、Twitter認証バックエンドとして[Twingo](https://github.com/7pairs/Twingo)を作って公開しました(全文検索用の対応などもあったため、実際にTustle!で動いているのは公開しているソースに手を加えたバージョンです)。 #### ■ 全文検索 GAEのときはgomokuを使って分割した値をListのまま保存し、検索時には検索ワードをgomokuでバラしてからListの値をチェックしに行く、という方法を取っていました。 DjangoになってからはRDBを使用するので、Listのまま保存するということはできません。検索用キーワードを別テーブルにするというのも考えましたが、新規作成時のINSERTはともかく、変更時のUPDATE(実際にはDELETE/INSERTになりそうですけど)が面倒そうだし、パフォーマンス的にもどうなるか疑問です。もちろん、一番楽なのはLIKE検索なのですが、それもやはりパフォーマンスが微妙なことになります。 いろいろ調べてみたところ、textsearch_jaのことを知りました。うん、これならやりたいことができそうだ。 というわけで、現在のTustle!はPostgreSQL + MeCab + textsearch_jaで実現しています。[開発用マシンであるMacBook Airに環境構築する際は非常に苦労しました](http://short-circuit.jp/programming/20130106183427)が、環境が組み上がってからは満足の行く結果を出してくれています。 #### ■ 画像アップロード 実は土壇場で追加した機能です。 VPSの容量的な問題もありますので、画像の機能を実装するのは諦めていたのですが、ベータ版を見ていただいた先輩に「Flickrに上げればいいんじゃない?」と言われ、悩んだ末にリリースを少し遅らせて実装することにしました。先ほど書いた「機能は削ってでもリリース日は絶対に動かさない」の逆を行く行為でしたが、出来上がったものを見てみるとこの判断は正解だったと思います。さすがに仕事だったらこんな判断はできませんが……。 Flickrとの連携には[Python Flickr API kit](http://stuvel.eu/flickrapi)を使っています。最近あまり更新されていないので少し不安ではあったのですが、ひととおり確認してみたところ、問題なく動作するようなので使わせてもらいました。 問題はFlickrが米Yahoo!のアカウントを要求するため、新規にアカウントを作るハードルが高いことでしょうか。joeくんが詳細なマニュアルを作ってくれましたが、英語サイトということで抵抗が出てしまう人も多いと思います。でも、こればっかりは仕方がないですよねぇ……。 #### ■ デザイン ほぼ100%デザイン担当のjoeくんにお任せしていましたので、私はまったく苦労していませんw そのうちきっとjoeくんがデザイン面のお話をしてくれると無茶振りしつつ、今日のエントリの締めくくりとさせていただきたいと思います。

2013/06/18(火)カーターおかえりなさい!

2013/06/18 21:41
カーターがライオンズに帰ってきました! [【西武】カーター「タダイマ」背番号は10 - プロ野球ニュース : nikkansports.com](http://www.nikkansports.com/baseball/news/f-bb-tp0-20130618-1144350.html) 昨年、勝負強いバッティングと気持ちを全面に出したプレイでファンの心をガッチリつかんだカーターでしたが、膝の具合が思わしくなく、残念ながら自由契約となってしまいました。 あのときはヘルマン、オーティズがいるし、外国人枠を考えると仕方がないのかなぁ……と納得はしたのですが、今年はオーティズが完全にヘタれてしまい、新外国人スピリーもまだ本領を発揮しているとは言いがたい状態です。こんな状況で帰ってきてくれてのは本当にありがたいです。 今年プレイしていたBCリーグの石川ミリオンスターズでの動きを見た上での再獲得でしょうし、膝はある程度治っていると考えていいのかな。少なくとも去年より酷いということはないのでしょう。 [youtube]http://www.youtube.com/watch?v=rmCO2BP-vtI[/youtube] ライオンズに帰ってこれたことをこんなに喜んでくれるなんて、本当にいい奴なんだなー。一軍の試合で会えるのを楽しみにしています。

2013/06/17(月)西武ドームに行ってきました

2013/06/17 12:22
20130617 01 20130617 02
[勝] 岸  3勝5敗0S
[敗] 藤井 4勝2敗0S

[本塁打]
  6回裏 浅村 11号 2ラン (藤井)
南流山の方々と西武ドームに観戦に行ってきました。 今日は一塁側内野席ということで、ライオンズのTシャツの下に一枚羽織るという微妙な格好だったのですが、周りの方々を見れば、別にレプリカユニを着ても大丈夫だよなーという程度にはライオンズファンが多かったです。 試合のほうは正直言って微妙な内容でした。3回まではお互いに壮絶な譲り合いで得点が入らず、点は入らないのに緊張感もないという、家でパ・リーグTVを観ているような状況だったら間違いなく裏で別の作業を始めるなという展開。 試合が動いたのは4回でした。2アウトからヘルマン、スピリーの連続フォアボールでチャンスを作ると、熊代が三遊間をしぶとく破るタイムリーヒットでライオンズが1点を先制。対するベイスターズは5回、石川のタイムリーで同点に追いつきます。ようやく眠気が吹き飛ぶ展開になってきました。 ベイスターズの藤井はライオンズの拙攻にも助けられて5回まで1点に抑えていましたが、6回につかまります。ヒットの栗山を一塁に置いて、浅村がバックスクリーン左に運んでライオンズが勝ち越し。さらにヘルマンにもヒットが出たところで藤井はノックアウトとなりました。 代わった2番手小林太、3番手林も勢いを止められず、熊代のタイムリー、秋山のタイムリー、山崎の2点タイムリーツーベースでライオンズはこの回計6点。試合をほぼ決定づけてしまいました。 7回以降は両チームとも打線が大人しく、特にチャンスもなくそのままゲームセット。同じ得点でも、1~3回と7~9回が逆だったらもうちょっと緊張感のあったゲームに感じられたかもしれません。ともあれ、せっかく行った試合なので勝てて良かった。 **熱心なライオンズファンである** 私は、[来週の日曜日](http://www.seibulions.jp/news/detail/7775.html)も西武ドームに行きます。あー、野球楽しみだなー。