パスワードを忘れた? アカウント作成

tabateeさんのトモダチの日記みんなの日記も見てね。 みんなの日記はここから一覧を見ることができます。

89406 journal

tabateeの日記: リリース経路

日記 by tabatee
以前に開発したanthyというカナ漢字変換のソフトがユーザの手元に届く経路が複数あったので、ちょっと比較してみました。
  • OSS的なリリース: sf.jpでプロジェクトを持ち、MLで議論、ディストリビューションへの収録がメインの経路。
  • Webアプリ(Social IMEのバックエンド)としてのリリース:広く使われるクライアントもリリースされているが、webでのAPI公開によって色々な使い方が試行錯誤されているのが興味深い。
  • Windowsアプリ(WinAnthyのバックエンド)としてのリリース:Windows向けの単発のアプリであり、物議を醸す機能もないため使える環境は多い。
  • コミケ向けリリース(cシリーズ):内輪受け用。

コミケ向けを除けば、ネット上のあちこちでポジティブな言及(「設計がcool」「こんなのが欲しかった」等)やネガティブな言及(「この作者はアホ」「この動作は最悪」等)があり、適当に探せば作者として受けているであろうフィードバックが推測できるかと思います(当然、作者の所にしか来ないためネット上に公開されていないものもあるはずです)。同じソフトでありながら、出した経路によってフィードバックの性質が異なる点はかなり興味深いと感じます。

この例に限らず、作ったソフトに対するネガティブなフィードバックがいっぱいあればダメというわけでもなく、開発を楽しめるかどうかは個人の感性やら状況、虫の居所などに依存しそうです。自分としては、アマチュアとしてやる場合には、開発者への共感が得られることが重要だと考えています。(参考になりそうなストーリー)

リリースの経路の違いよりもソフトの性質や開発者の違いに依存する部分が大きいかもしれませんが、これから非ビジネスでソフトを作って楽しもうとする人がどの経路からどのようにリリースするのか考える時の参考になればと思います。


(このエントリ書く前に不適切な悪口のエントリを書いてしまったので削除済み)
そう言えば、夏が近い...

62978 journal

tabateeの日記: key/value storageの話 1

日記 by tabatee
key/value storageの話を聞きに行くので、ちょっと予習
人によって色々なのを思い浮かべそうなので、思いついたポイントを列挙。
  • 速度: 超高速(数十クロック~数百クロック/look up)←→人が見てインタラクティブ←→低速
  • キー: 数値、文字列、バイナリ
  • 更新: 不可、高速、低速
  • lookup: 1 per 1 operation, multiple keys
  • backing store: 無し、ディスク、ネットワーク
  • 構成: 1thread, multi threads, cluster
  • 記憶効率: compressed, succinct, 普通, 富豪
  • 信頼性: 耐タンパ、耐故障(RAMのソフトエラー等)、ACID、特になし

例によって何か抜けてるとは思いますが、こんだけ組み合わせがあると既存のものがフィットしないで悩むことも多そうです。SQLサーバが全部をカバーしてくれると楽で良いんですが…

454753 journal

tabateeの日記: implicit tasks 1

日記 by tabatee
下記のリストはオープンソースのソフトを作ってた時の経験を内輪で議論した時の資料で、資料としてはウケが良かったのでメモ的に公開しときます。(作るソフトの内容やユーザ層によっては意味のない項目も含んでいます)
自分としては、アマチュアとしてソフトウェアの開発を楽しみたい人が(ソフトの種類や開発者の気分によって異なりますが)どういう所を活動の場とすると良いのかに興味を持って議論していました。ありそうな選択肢としては、(1)sourceforge等にあるようなOSSとして、(2)vector.co.jp等、(3)コミケ等のイベント、(4)ウェブアプリ等、が思い浮かびます。
  • ソフトウェアの名前は十分に考えてつける
  • 一貫性のあるバージョン番号付けをする
  • 定まったリリースプロセスを持つ
  • 気まぐれに開発を終わらない
  • READMEやCOPYINGといったファイル名の慣習に従う
  • 公開リポジトリを持つこと
  • 各commitは論理的に一つの変更であること
  • 各commitには説明的なlogがあること
  • セキュリティ問題が発生した時には標準的なプロセスに従って迅速に対応する
  • API/ABIはむやみに変更しない
  • API/ABIを変更するときは前もって移行プランをアナウンスをする
  • API/ABIの変更時には適切なバージョン付けをする
  • リリース時には変更点の説明を付ける
  • 同じ名前でリリースしたものをさしかえない
  • 開発に参加する人向けの公開MLを作る
  • エンドユーザが参加できる公開MLを作る
  • MLで誰も返事しない質問には返事する
  • バグの対応方針をすぐに言う
  • 隣接レイヤーの開発者に負担をかけていないか確認する
  • ディストリビューションの担当者とのコミュニケーションを取る
  • 評判を適宜検索し、報告されていない問題がないか確認する
  • 一般的なスペックの環境でそれなりに動くようにする
  • メジャーでないOSでも動くようにする
  • メジャーでないCPUでも動くようにする
  • メジャーでない環境で動かせるようにする変更を受け付ける
  • リソースの消費は同等機能を持つ商用ソフトの数倍以内が望ましい
  • マイナーなライブラリ等への依存を避ける
  • パッケージのどのファイルにもライセンスを記載する
  • ソフトウェアを作るのに使うデータ、ツールもオープンソースで入手可能なものを選ぶ

(適当に過不足があるので真に受けないでください。アマチュアの場合は全部やるのは無理っぽいので、どれを省くかの選択も重要になってくるかと思います)

457909 journal

tabateeの日記: late excuse

日記 by tabatee
Linux等で日本語入力のソフト等を色々なレイヤーで協調して開発ができてるうちに開発者の誰かが日本OSS貢献者賞(参考)を取れたら良いなあなんて思ってたのですが、結局、誰も受賞しないうちに現役開発者と呼べそうな人がほとんどいなくなってしまっているのが現状だと思います。
実際のところ、審査に関わられたmatz氏の日記によると、ビジネス的な側面も求められるようで、さもありなんという感じです。

...という感じで残念と思ってたところで、anthyをバックエンドに使ってくれているSocial IMEネットランナーの賞受賞したというのを知って、ちょっとうれしかったです。

#IPAのOSSなんとかによる頭越しの"標準化"に嫌気がさしてinput methodsの周辺から逃げてしまった身としては色々申し訳なく思う今日この頃です。(2004年頃のフレームワークがどうとかの時は対立を辞さなかったのですが…)
45659 journal

tabateeの日記: rx

日記 by tabatee
Tx: Succinct Trie Data structureというライブラリのサブセットをCで書いてみました。rx-0.1
Txより良い点や今後の見通しがあるわけではないですが、色々と勉強になって面白かったです。

追記:構築の時にメモリをバカ食いするのを修正したrx-0.2に更新しました。trieの実装で素直に長さ256のポインタ配列を使ってたのが原因です。trieを使うのを止めて構築を高速化するのと、pop countで遊んでアクセスを高速化することぐらいが次のネタでしょうか。
追記:rxのページ作りました。ライセンスの変更、高速化、8bitより小さい文字のサポート、ついでに、高速かつコンパクトで要素が可変長な配列のライブラリの追加をやってます。
467337 journal

tabateeの日記: 最近した議論 1

日記 by tabatee
自分も含めて以前にオープンソースのソフトウェアを書いていた人たちで自分たちの書いたソフトウェアの性質について議論する機会がありました。その場のメンツの書いたソフトウェアの特徴として(1)Computer Science系の手の込んだアルゴリズムとデータ構造を持ち、その部分は開発に参加する敷居が高い。(2)それらのソフトウェアの出力は比較的エンドユーザに見える形で利用される。このような特徴を持ったソフトウェアの開発には往々にして周辺を肥大化させてコアのメンテナンス性を悪化させる方向に圧力がかかってしまうという傾向があるんではないかという話がありました。

コアをいじる側の人間としては、自分のバックグラウンドと小難しい技術を振りかざして周辺の開発者を妨げるような最悪最低なことはしたくありませんし(そんなことするぐらいならどこか別の所へ行くべきでしょう、特にこれはオープンソースの話ですし)、周辺の開発者も悪意があってやっているわけではないはずです。
とは言っても、コアの側への理解の無い人間がフレームワークとか言ってたり、予算を取って(コアのメンテナンス性を犠牲にした上で)コアの部分以外で色々な成果っぽいものを出してたりすると、もっと適切なバランスはないものかと考えてしまいます。
473681 journal

tabateeの日記: フェルテ4

日記 by tabatee
ここ数年、手帳に フェルテ5を使ってたんですが、去年まで黒かったのが微妙な色になってしまったので フェルテ4を買ってきました。一日分のスペースが小さくなってしまってるんですが、普段はpost itにラクガキしてベタベタ貼って使うだけなので問題ない感じです。

(内輪向け連絡:僕のもう一方のblogを読みたい人は連絡plz)
474679 journal

tabateeの日記: winnow 8

日記 by tabatee
何かに勝利するって話じゃなくて、Computer Science系の話です。

以前のエントリで紹介した論文「Scaling to Very Very Large Corpora for Natural Language Desambiguation」のFigure 1の右の方で最高の性能を出しているWinnowって手法を知らなかったんですが(他の3つは知ってたんですが)、Winnowのわかり易い解説を見つけました。
理論的な方まで追うと他のものよりも大変そうですが、コードを書くレベルでは驚くほど簡単な手法に見えます。
anthyの最近のはMemory basedのclassifierを使ってて、Social IMEとかで使ってるものにはvotingを追加してみたりしてますが、将来に検討するようなことがあればこの辺のアルゴリズムもアリな気もします。
typodupeerror

アレゲは一日にしてならず -- アレゲ見習い

読み込み中...