2011年12月26日月曜日

Androidアプリ「牛トレーサー(ぎゅうとれーさー)」 1.3.0 リリース

A3 Together賞をもらってしまいました、拙作Androidアプリ「牛トレーサー(ぎゅうとれーさー)」でございますが、バージョン 1.3.0 を先ほどリリースいたしました。

今回の修正はバグフィックスが主な内容でございます。変更点は以下の通りです。

  • 「死亡牛の譲渡先」情報が含まれる場合にアプリケーションがクラッシュしていた問題を修正
  • 「死亡牛の譲渡先」情報が含まれる場合にその内容を移動記録に反映させるようにした
  • SPECIAL THANKS に A3 TOGETHER についての情報を掲載した

「死亡牛の譲渡先」情報は一部の個体にのみ記録されている情報ですが、その情報があった場合にアプリケーションがクラッシュしてしまうという問題を抱えておりました。不具合を修正するとともに、「死亡牛の譲渡先」情報が記録されている場合には譲渡先の情報(氏名または名称,所在地)を追加で表示させるようにいたしました。

一時期にくらべて牛肉についての不安は大分解消されてきているように感じられますが、引き続きご活用くだされば幸いです。

不具合報告が相次ぐ富士通東芝製のREGZAフォンシリーズのユーザを不必要に揶揄することについて

富士通東芝製のREGZAフォンシリーズの不具合の報告が相次いでいます。ちょっと書きだしてみると


といった事例があるようです(今回はすべて ITMedia さんの記事から書き出しました)。

このような端末を手にされた方で期待を裏切られた方は正直非常に気の毒に思えますし、メーカー側の主張も「仕様」だということで逃げを打っている状況が垣間見えます。実際のところでは「仕様を決めるための設計がお粗末だった」ということになるのでしょうけれども、それを認めてしまうと見栄や体裁やメンツを失ってしまうので、そういったことはやりたくないというのが本音なのでしょう。

具体的な根拠を持ちあわせているわけではありませんけれども、今回の件はうわべだけの体裁やメンツなどを最優先させ本当に必要なことが後回しにされた例の一つになりそうな予感がします(往々にしてメンツを守る代わりにマーケットシェアを失うことになるのですが)。

さて、今回問題にしたいのは問題のある端末自体のことではなくて製品の欠陥を必要以上に揶揄する昨今の風潮です。REGZAフォンの場合は誰がはじめに言い出したのかはわかりませんが「アアアッ」というセリフとともにREGZAフォンユーザーを揶揄する言動をあちこちで見ることができます。

従来から、特に家庭用ゲーム機では 2ch などを中心にメーカーの代理戦争としか思えないような貶めあいが続いていますが、Androidスマートフォンの場合アプリケーション開発者や将来的に開発をしようと考えている人はこういった「メシウマ(他人の不幸で今日も飯がうまい)」的な揶揄は控えるべきだと思います。

少し考えるとわかることなのですが、不運にして問題のある端末を手にしたユーザであっても開発したアプリの顧客になりえる可能性があるわけで、自分の顧客になる可能性を無視して不必要に揶揄するということは、アプリ開発をしていないか、開発者としてのマインドを欠いているかではないかと考えられます。逆の言い方をすると、この手の揶揄をしている人たちはあくまで「単なる消費者」でしかなくエキスパートではない人だと自ら告白しているような気がしてなりません。

もちろん欠陥のある製品をリリースし、その欠陥を「仕様」と言いはるのは非常にマズい状況であることに変わりはありません。東芝がテレビ製品の代名詞として育ててきた「REGZA」ブランドに泥をぬることをやめるために一層の努力と自省を関係者の方々に促したいところです。

2011年12月24日土曜日

Solaris 11 のカーネルソースコードが Bittorrent に流出

先週末の話になりますが、オープンソースOSからプロプライエタリOSに華麗な転身を遂げた Oracle(Sun) の最新OS Solaris 11 のカーネルソースコードが Bittorrent に流出したようです。

流出が発覚したのは、 Phoronix のフォーラムに投稿された書き込みで、Google で "solaris11.tar.bz2" と検索すると 100MB ほどのファイルがヒットし、その内容はカーネルのソースコード(いわいる onnv 相当)だったということのようです。これを受けて投稿されたフォーラムを運営する Phoronixこのような記事を起こしSoftpedia も追従して記事を書く状況となりました。

この状況について現在は第一報が投稿されたフォーラムOpenIndiana-Discuss ML で活発な議論が展開されています。流出したソースコードは TRUNKID が 175, zpool のバージョンが 33 だということで確かに先日リリースされた Solaris 11 でのバージョンと一致します。

今回の流出が何を意味するのかを推し量るのかは非常に難しい部分があるのですが、ただひとつ言えることがあるとするならばそれは 「Oracle 公式のソース配布ではない」ということだと思います。単に内部の人間がソースコードを持ちだして Bittorrent に流したのか、IllumosOpenIndiana といった派生プロジェクトを牽制するためにあえて流出させたのか疑いだすとキリがない状況です。

変に近づかないほうがいい毒饅頭が放たれたということなのかもしれません。

2011年12月22日木曜日

(続報) Ubuntu 11.10 "Oneiric Ocelot" での sun-java6-jdk パッケージについて

全くもって面倒なことになりました。

何がというと Japanese Team からもアナウンスと解説が ML にポストされた Oracle(Sun) 由来の JDK に関する問題です。

sun-java6-jdk に関する話題はこの Blog でも Oneiric Ocelot (11.10) にからめて取り上げましたけれども、過去の Ubuntu においても直面することになりました。さらに悪いことに partner レポジトリや LffL Java PPA で配布されてきた最終版はセキュリティ上の問題があるということで、本格的に対処する必要が出てきました。

ML での解説では OpenJDK もしくは Oracle JDK を本家からダウンロードしたものを導入するという 2つの選択肢が示されていますが、Oracle JDK を前提とした開発を行わなければならないシーンがまだまだ存在するのも事実です。

そういったわけで、前回の記事の続きという位置づけで、Oracle JDK の導入方法について書いてみたいと思います。

Oracle JDK 配布ファイルの入手


まずは Oracle のサイトから JDK を入手します。Java SE Downloads のサイトから Java SE 6 Update 30 ( Update バージョンは今後も更新される可能性があるので適宜読み替えてください ) の JDK Download リンクとたどります。

そして、 Oracle Binary Code License Agreement for Java SE に同意した上でファイルをダウンロードします。 Ubuntu の場合パッケージ管理は .deb 形式ですので、 i386 アーキテクチャでは jdk-6u30-linux-i586.bin 、amd64 アーキテクチャでは  jdk-6u30-linux-x64.bin をダウンロードすることとなります(バージョンが変わるとファイル名も変わりますが適宜読み替えてください)。

JDK の展開


次にダウンロードしたものを展開します。従来であれば /usr/lib/jvm/ 以下に展開すべきところなのですが、このようなひどい仕打ちをするものを /usr 以下に入れるのはちょっとはばかられるので、/opt 行きにしたいと思います。 /opt 以下は /opt/(パッケージ名) もしくは /opt/(LANANAプロバイダ名) といった風にディレクトリを作成することになっていますが、LANANAプロバイダのリストには Sun は登録されていますが、Oracle は登録されていないという状況なので、/opt/jvm を使うことにしたいと思います。とりあえずディレクトリを作成しておきます。

# mkdir -p /opt/jvm

そして、先ほどダウンロードした配布ファイルを展開します。配布ファイルは自己展開することを前提に作られているようなので、chmod +x で実行できるようにして -noregister オプションをつけて実行します。

余談ですが、 -noregister をつけずに実行すると現状では Oracle にこういった情報が登録されるようです。この辺のポリシーについては今後も変更されうることを念頭に入れながら、 -noregister オプションをつけ忘れることも考えて一旦展開は一般ユーザで実施し、その後しかるべき場所にコピーするくらいの慎重さがあっても良いような気がします。

i386アーキテクチャの場合:
$ cd /path/to/download (ダウンロードしたディレクトリに移動)
$ chmod +x jdk-6u30-linux-i586.bin

$ ./jdk-6u30-linux-i586.bin -noregister

Unpacking...
Checksumming...
Extracting...
UnZipSFX 5.50 of 17 February 2002, by Info-ZIP (Zip-Bugs@lists.wku.edu).
   creating: jdk1.6.0_30/
   creating: jdk1.6.0_30/jre/
   creating: jdk1.6.0_30/jre/bin/
  inflating: jdk1.6.0_30/jre/bin/java

... (途中略) ...

Creating jdk1.6.0_30/lib/tools.jar
Creating jdk1.6.0_30/jre/lib/ext/localedata.jar
Creating jdk1.6.0_30/jre/lib/plugin.jar
Creating jdk1.6.0_30/jre/lib/javaws.jar
Creating jdk1.6.0_30/jre/lib/deploy.jar
Done.

$

amd64アーキテクチャの場合:
$ cd /path/to/download (ダウンロードしたディレクトリに移動)
$ chmod +x jdk-6u30-linux-x64.bin

$ ./jdk-6u30-linux-x64.bin
... (以下メッセージ省略) ...

展開が終わったら /opt/jvm に JDK のファイル群をコピーします。また、コピー元のファイルは不要なので消しておきます。

# cp -r /path/to/download/jdk1.6.0_30 /opt/jvm/
$ rm -r /path/to/download/jdk1.6.0_30
i386アーキテクチャの場合:
$ rm /path/to/jdk-6u30-linux-i586.bin
amd64アーキテクチャの場合:
$ rm /path/to/jdk-6u30-linux-x64.bin

なお、展開されるディレクトリはアーキテクチャによらず jdk.1.6.0_30 となっているようです。また、間違ったアーキテクチャの配布ファイルを展開しようとするとエラーになります。

インストールした JDK を使えるようにする


従来は update-alternative コマンドで使用する各種コマンドを切り替えるということをやってきたわけで、その気になれば Oracle JDK についても同じように設定することが可能ではあるのですが、もはや「Ubuntuの外のモノ」として扱わざるをえない状況になりましたので、使いたいユーザがそれぞれ設定をするということにとどめることにしたいと思います。

基本的に JAVA_HOME 環境変数と PATH を適切に設定すれば使えることになっているので、ホームディレクトリの .profile に

11 # if running bash
12 if [ -n "$BASH_VERSION" ]; then
13     # include .bashrc if it exists
14     if [ -f "$HOME/.bashrc" ]; then
15         . "$HOME/.bashrc"
16     fi
17 fi
18
19 JAVA_HOME=/opt/jvm/jdk1.6.0_30
20 for binpath in jre/bin bin ; do
21     if [ -d "$JAVA_HOME/$binpath" ] ; then
22         PATH="$JAVA_HOME/$binpath:$PATH"
23     fi
24 done
25
26 # set PATH so it includes user's private bin if it exists
27 if [ -d "$HOME/bin" ] ; then
28     PATH="$HOME/bin:$PATH"
29 fi

といった具合に書いておくとよいかと思います(この例では19~24行目に記述を挿入しました)。
ログインしなおすか

$ . ~/.profile

として設定を再読み込みさせた上で

$ which java
/opt/jvm/jdk1.6.0_30/bin/java
$ java -version
java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) Client VM (build 20.5-b03, mixed mode)

と表示されるようになれば作業完了です。

あとは必要に応じてOracle JDK を必要とするユーザに同じような設定を行います。

古い sun-java6 パッケージの削除


最新の Oracle JDK への移行が一段落ついた段階で、古い(そしてセキュリティ上問題のある)sun-java6 パッケージ群を削除します。MLでの解説にもありますがパッケージは

$ dpkg -l '*sun-java6*'

コマンドで調べることができますので、それぞれ

# apt-get purge sun-java-6-jdk

などといったようにして削除します。また、前回紹介しました LffL Java PPA でインストールした場合には、

# add-apt-repository --remove ppa:ferramroberto/java

でレポジトリを削除することができます(がちょっとバグがあって deb-src ラインが削除されなかったりもしますがその辺は現状で必要に応じて対応して下さい)。

ちょっと苦言言わせてください


開発元が買収され方針が変わったということは理解できるのですが、このように各方面に大きな影響を与えうるビジネスやライセンス上の変更を予告などをすることなしに実施してしまうという体質は正直ほめられたものではないと思います。

ベンダーにはベンダーの考え方というものがあるのでしょうけれども将来自分たちの首をしめることにならないように自制の効いた運用をして欲しいと切に願います。Java に限った話ではないのですが、エンジニアの反感を買うようなことは何も生み出さないと思います。

2011年12月16日金曜日

Android の日本語入力環境が今アツい

ここにきて、Android の日本語入力環境がアツい状況となっています。

まずは Android 黎明期から提供されてきた人気日本語入力ソフトの Simeji が Baidu に買収されるというニュースが飛び込んできました。成功した製品や会社が買収されることはよくあることなのですが、Simeji の場合は Adamrocker 氏とデザイナーの 矢野りん 氏による開発ということで、「個人を買収」という形となり驚かされるニュースとなりました。

その一方で、Google は 「Android版 Google日本語入力 Beta」 を 12月15日にリリースし Android Market にて公開しました。こちらはベータ版という位置づけながらも Android 2.1 以降の端末で動作し、PC版のGoogle日本語入力で話題になった、よく検索される言葉についての変換機構もできるだけ取り入れているという意欲的な日本語入力IMEです。

この「Android版 Google日本語入力 Beta」 で、日本語入力IMEの勢力地図が大きく変わることは間違いないのですが、これでようやく日本での Android 環境が一段したように感じられる、大きな大きなステップになったのではないかと思います。

Simeji は役目を終えたように思う方も中にはいるかと思いますが、個人的にはこれで Simeji 自身が主張している「変なIME」の変さ加減を加速することができることになったのではないかと思います。現状で Simeji にしか実装されていないフィーチャーとしては

  • ハードウェアキーボードのサポート
  • Android 1.x ( 1.5 の場合は Simeji Classic ) での動作
  • いわいる「野良アプリ」としても配布されているので、Android Market を搭載していないデバイスにもインストールが容易だ
といったところがあげられると思います。これからも Simeji 、Google日本語入力 共に目が離せない状況となっていくのではないでしょうか。

2011年12月15日木曜日

Ubuntu Magazine Japan Vol.6 発売

2010年8月31日の Vol.5 を最後に、しばらく刊行されていなかった Ubuntu Magazine Japan ですが、 1年3か月ぶりに待望の最新刊 Vol.6 が発売されました。

「vol.06は12月10日土曜日発売です!」 ~ Ubuntu Magazine Japan

もちろん私も早々にゲットしたわけですが、1年以上も開いてしまうともう「何もかもが懐かしい」としかいいようがない状態でして、ホント復活してよかったというのが第一感です ( Ubuntu 道場 でちょっとした舞台裏が明かされています ) 。

内容としても、技術的なバランス的には Ubuntu Japanese Team 監修ということで、非常に安定して安心して読める上に瀬尾先生( Twitter @seotch ) の「うぶんちゅ」や表紙グラビアをはじめとしたエンターティメント要素も満載。週間アスキー風のテイストもあり、「ぺぐぅ(殴打音とともに省略されました)。 」の定番名セリフや、ユーザ名・グループ名共に「hartman」な鬼軍曹も登場するなど、ネタというかサービス精神にあふれている仕上がりなのが特筆すべきところだと思います。

個人的に Japanese Team の方々とは twitter やオープンソースカンファレンスでお話することがあるのですが、本当にみなさん気さくな方で(多少の誇張はあるものの) Ubuntu 道場 や Ubuntu Magazine そのままのキャラクターでメディア向けにわざわざキャラクターを作っているわけではないというのも他には見られない特色なのではないかと思います。

ということで、気になった方はぜひ「過去の本誌掲載記事」に掲載されているPDFファイルをチェックして( Vol.6 が発行されたのをうけて、Vol.5 の記事が公開されました)グッとくるものを感じたならば書店で手に取ってみては良いのではと思います。

あ、こんなことを書いている私ですが Ubuntu はひいきにして使っていますが、現在までのところ Ubuntu 道場や Ubuntu Magazine に登場しているわけではないので、そのあたりよろしくお願いします( ことあるごとに「くろまくー」氏から道場登場や執筆ねたで「時間の問題」などと脅されてはおりますが(笑) )。