Javaのイテレータは遅い? #wdpress

Web+DB Press の Vol.70 に、「Javaの底力 ── 火消しエンジニアが明かすテクニック【第2回】Javaでナノチューニング! …… パフォーマンスを最大限に引き出す書き方」として、このような記事が載っていました。批評のために引用します。






これは、このテスト条件下ではもちろん正しいですが、一般化するには危険な記事だと思います。
まず、Iterator が高価(遅い)と書いてありますが、Iterator はインタフェースなので、それが遅いか早いかは、当然その実装クラスに依ります。この記事は、Java6 で、実装クラスは ArrayList を使用しているので、(たまたま)遅いという結果が出ただけです。


Java7 では拡張for文を使っても、遅くなることはないという報告があります。
今更ながら拡張for文について - 草木のにをいに誘われた


Java5/6でも、LinkedList だと(データ構造上当然ですが)大幅にイテレータ(拡張for文)のほうが早いです。
http://yoshiori.org/blog/2006/12/javaiterator.php


拡張for文のほうが、Set や配列にしてもロジックを変えなくて良いし、なにより可読性が高いので、よっぽどのことがない限り拡張for文を使うべきだと思います。
この記事を鵜呑みにして、安易に『拡張for文は使用禁止』などというコーディング規約が作成されないことを祈ります。

Bonanzaのライセンスについて

コンピュータ将棋ソフト界に革命を起こした Bonanza というソフトウェアがあります。*1

このソフトウェアのライセンスは、


本プログラムを無断で営利目的に利用することは禁止します.また,本プログラムを使用した上で生じたいかなる損害についても作者は責任を負いません.自己の責任において使用してください.

というものです。*2

これは、OSI の認めるオープンソースソフトウェアのライセンスには該当しません*3。しかし、このソフトウェアはオープンソースソフトウェアと同様に、ソースコードが公開されているのでいろんな人による研究がされ、派生ソフトウェアが数多く作られて、肥沃な成果をコンピュータ将棋界に生み出しています。*4

また、あくまで「無断で」営利目的に利用することを禁止しているだけなので、許諾を得て商用版が販売されています*5Bonanza の作者の保木邦仁さんが許諾を出す際に、何らかの金銭のやりとりがあったかどうかは不明ですし詮索するつもりもありませんが、やろうと思えば作者が利益を得ることは可能なライセンスだと言うことはできるでしょう。

つまり、Bonanza のライセンスは、知識の共有(コモンズの形成)と、作者への還元を両立できるものと言えます。こういうライセンスが、もっとあってもいいのに。と思います。CC BY-NC はこれに近いですが、Creative Commons をソフトウェアに適用することは CC0 を除き推奨されていません*6

勝手ライセンスでなく、ある程度きちんとした形での、ソフトウェアに適用できる非営利条件付きのライセンスはないものでしょうか?

*1:http://www.geocities.jp/bonanza_shogi]

*2:bonanza_v6.0.zip に同梱されている readme.txt より引用

*3:オープンソースソフトウェアには、非営利という条件を付してはいけないんです。

*4:Bonanza - Wikipedia に一部の例が載っています。

*5:Amazon CAPTCHA

*6:Frequently Asked Questions - Creative Commons

Maker はオープンソースの枠を超えてもいいのでは

http://jp.makezine.com/blog/2012/03/soapbox-the-unspoken-rules-of-open-source-hardware.html
http://jp.makezine.com/blog/2012/04/soapbox-counterfeit-open-source-hardware-knock-offs-101.html
Maker Conference Tokyo 2012 #mct2012 - Togetter
裏 mct2012 オープンソースハードウェアの現状 - Togetter


あたりを見て思ったこと。

クローンで商売をするとかフリーライドの問題については、「オープンソース」である以上は当然のことと私は思っています。知的財産権による独占権が得られない以上、完全競争に近づいて、価格も生産の限界費用(ソフトウェアならゼロ、ハードウェアなら製造原価)に近づくというのは、自然の原理としてごく当然のことだと思っています。現代において、オープンソースソフトウェアそのものをお金を払って買う人はほとんどいないですよね。*1

Maker が製品そのものから適正な利潤を得ることが大切だ、と考えるのであれば、何もオープンソースハードウェア(OSHW)の定義*2にこだわる必要はないと思います。非OSHWライセンスでも、ソース(設計)をオープンにできて派生作品を許容するライセンスはあります。例えば、Creative Commons の BY-NC(表示―非営利)*3はどうでしょう?

原著作者である Maker の人がこの BY-NC(表示―非営利)ライセンスを適用して設計を公開したならば、

  • ライセンス権者(Maker)自身は、営利目的で設計を使って製品を作成できます。*4
  • ライセンス許諾者は、非営利であれば、無許可で、設計を使って製品を作成できます。
  • ライセンス許諾者は、非営利であれば、無許可で、派生製品を作成できます。
  • ライセンス許諾者は、ライセンス権者の許可があれば、営利目的で派生製品を作成できます。ライセンス権者は許可を与える交渉において、ライセンス費を要求することも、レベニューシェアを要求することも、また無償で許可をすることももちろん自由です。*5
  • ライセンス権者のクレジットの表示権が保たれます。

となります。このような価値観を持つ人にとっては、これは結構、理想に近い形のひとつではないかと思います。
ご意見ご感想お待ちしております。


*1:サポートとかの補完品・サービスや、デュアルライセンスビジネスモデルでプロプライエタリの方のライセンスにお金を払う人はもちろんたくさんいて、それで生計が成り立っている人も、もちろんたくさんいます。

*2:http://freedomdefined.org/OSHW/translations/ja

*3:http://creativecommons.org/licenses/by-nc/2.1/jp/

*4:できなくなると勘違いをする方も多いようです。詳しくは http://creativecommons.jp/faq?a=18#18 を参照ください。

*5:デュアルライセンス的な考え方ですね。詳しくは http://creativecommons.jp/faq?a=33#33 を参照ください。

本当にスマートフォン戦争の勝敗はついたのか?

スマートフォン戦争の勝敗はついたのか - My Life After MIT Sloan

について。
まず、ここには Google の利益は載っていません。PC業界の利益を分析するのに、MS や Intel の利益を無視して、PC製品メーカーだけを分析するのは正しくないでしょう。その意味で、垂直統合戦略をとる Apple を過大評価している可能性があります。

ただ、仮に Google の利益を考慮したとしても、やはり Apple の利益のほうが Google の利益よりも大きいです。また、Android がそのままでは使い物にならない品質であるとか、Android 陣営は利益率を犠牲にして、市場シェアを取っているというのも概ね正しいと思います。

しかしながら、それでも Android は急速にシェアを伸ばしています。

http://upload.wikimedia.org/wikipedia/commons/a/ae/World-Wide-Smartphone-Market-Share.png

Google は制限なく Android OS を公開し、端末メーカーに完全競争に近いレッドオーシャンでの競争をさせるのが戦略であると考えられます*1Android 陣営の利益の総額が少なくなるのは、Google の狙い通りで戦略が上手くいっている証拠であるとも言えます。

では、Google はなぜ無料で Android OS を公開するのか? 欲しいのは、Androidインストールドベースでしょう。Google Play Store*2 での収益や、他サービスとの相乗効果(範囲の経済)はインストールドベースからもたらされます。端末メーカーは基本的には端末販売時にだけ利益を計上できますが、インストールドベースはその積み重ね(積分値)です。

GoogleApple を(利益で)逆転できるかどうかは、Google が獲得しつつある巨大なインストールドベース*3を今後いかに活用できるか? にかかっていると思われます。まだ勝負はこれからで、これからが面白いところではないでしょうか?


*1:MS や Intel の戦略と類似していると思います。

*2:Android Market

*3:ただし、先進国では相対的に iPhone が強く、途上国では相対的に Android が強い(一例)ので、インストールドベースの数では Google だが、質では Apple が勝る、という見方もあると思います。もしくは、Android はローエンド破壊型イノベーションの条件を満たしている、という見方もできると思います。

収入の少ない人ほど、松井候補に投票?


2011年の大阪府知事選挙で、「大阪維新の会」の松井一郎候補が当選しましたが、松井候補の市町村別の得票率と平均所得は逆相関、つまり所得の低い市町村ほど松井候補の得票率が高かったことが、わかりました。

という分析がありました。これを、もう少し別の角度から分析をしてみたいと思います。



知事選各候補の市町村毎の得票率を計算して見ていたら、ある事に気づきました。松井候補は主に南部で得票率が高く、北部で得票率が高くないように見える、ということです。どうやら、得票率と地域性に関係があるように見えます。

大阪では、「豊中箕面・吹田といった北部は所得が多く、逆に泉佐野貝塚のような南部では所得が低い」というイメージがあります。となると、松井候補の得票率と、市町村毎の平均所得との間に、関係があるかもしれません。そこで、検証してみる事にしました。

所得と得票率の相関は、R^2 = 0.1578 で、t検定は1%有意ですから、関係はあるといえるでしょう。ただし、そもそも地域性それ自体が最も重要である可能性が高い気もします。なぜなら、松井候補の地元の八尾市は松井候補の得票率が2位、逆に倉田候補の地元の池田市では松井候補の得票率がワースト2位だからです。要するに、候補者の地元が有利であったということです。

そこで、各自治体の市町村役場の場所から、(池田市役所からの距離)−(八尾市役所からの距離)を求めて*1、それと松井候補の得票率の相関を見てみました。その結果、R^2 = 0.3538 で、t検定は0.1%有意となりました。つまり、所得より自治体の位置のほうが得票率との相関が強いことがわかります。

よって、「収入の少ない人ほど、松井候補に投票」しているように見えるのは、

  • 候補者の地元近辺において得票率が高くなること
  • 池田市近辺(大阪府北部)は八尾市近辺(南部)より平均所得が高い*2こと

から導き出された「擬似相関」であり、「収入の少ない人ほど、松井候補に投票」ということ自体には因果関係は薄いと見るのが妥当ではないかと思われます。


Rで計算した結果を以下に載せます。

R version 2.13.0 (2011-04-13)
Copyright (C) 2011 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-pc-mingw32/x64 (64-bit)

Rは、自由なソフトウェアであり、「完全に無保証」です。 
一定の条件に従えば、自由にこれを再配布することができます。 
配布条件の詳細に関しては、'license()'あるいは'licence()'と入力してください。 

Rは多くの貢献者による共同プロジェクトです。 
詳しくは'contributors()'と入力してください。 
また、RやRのパッケージを出版物で引用する際の形式については 
'citation()'と入力してください。 

'demo()'と入力すればデモをみることができます。 
'help()'とすればオンラインヘルプが出ます。 
'help.start()'でHTMLブラウザによるヘルプがみられます。 
'q()'と入力すればRを終了します。 

> matsuivoting<-c(64.1,61.2,61,60.9,60.5,60.4,60.1,60,59.7,59.3,59.2,59.1,58.7,58.7,58.7,58.7,58.6,58.5,58.5,57,56.8,56.6,56.4,56,56,55.6,55.6,55.3,55.1,55,54.8,54.6,53.6,53,52.8,52.5,51.9,51.9,51.3,51.2,49.8,35.6,33.5)
> income<-c(320,350,332,349,340,335,325,364,347,349,359,318,332,321,333,387,323,311,364,332,398,323,373,384,335,380,359,369,351,332,372,358,389,373,380,339,421,420,356,464,418,403,332)
> summary(lm(matsuivoting~income))

Call:
lm(formula = matsuivoting ~ income)

Residuals:
     Min       1Q   Median       3Q      Max 
-24.0829  -1.1936   0.4059   3.0643   5.6962 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 80.29594    8.88834   9.034 2.65e-11 ***
income      -0.06841    0.02468  -2.772  0.00834 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 5.343 on 41 degrees of freedom
Multiple R-squared: 0.1578,     Adjusted R-squared: 0.1373 
F-statistic: 7.683 on 1 and 41 DF,  p-value: 0.008345 

> northlat<-c(34.406847,34.626863,34.437662,34.359582,34.504279,34.366004,34.737695,34.520717,34.579305,34.73994,34.483526,34.487092,34.67933,34.316977,34.460634,34.458084,34.712015,34.73915,34.401282,34.577879,34.503795,34.777356,34.81434,34.518681,34.766092,34.816338,34.566226,34.491636,34.558034,34.393774,34.574277,34.846158,34.787943,34.883924,34.499527,34.657518,34.759452,34.781265,34.464587,34.82693,34.937174,34.821705,34.97255)
> eastlon<-c(135.327337,135.600978,135.358452,135.23967,135.410464,135.273339,135.563904,135.442452,135.628642,135.639533,135.423557,135.401323,135.601012,135.142139,135.370829,135.564226,135.623659,135.586893,135.355785,135.55185,135.555693,135.561817,135.650658,135.647661,135.6281,135.568505,135.482556,135.629699,135.606212,135.291174,135.597474,135.617272,135.679953,135.66297,135.597128,135.497547,135.51686,135.469739,135.622537,135.470463,135.450524,135.428444,135.414274)
> distance<-sqrt((northlat-34.821705)^2+(eastlon-135.428444)^2)-sqrt((northlat-34.626863)^2+(eastlon-135.600978)^2)
> summary(lm(matsuivoting~distance))

Call:
lm(formula = matsuivoting ~ distance)

Residuals:
    Min      1Q  Median      3Q     Max 
-14.486  -2.043   1.339   2.937   8.312 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  53.9217     0.8126  66.356  < 2e-16 ***
distance     24.5910     5.1905   4.738  2.6e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 4.68 on 41 degrees of freedom
Multiple R-squared: 0.3538,     Adjusted R-squared: 0.338 
F-statistic: 22.45 on 1 and 41 DF,  p-value: 2.597e-05 

> summary(lm(income~distance))

Call:
lm(formula = income ~ distance)

Residuals:
    Min      1Q  Median      3Q     Max 
-51.795 -24.821   3.204  20.957  83.777 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  364.568      5.537  65.838   <2e-16 ***
distance     -79.657     35.370  -2.252   0.0297 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 31.89 on 41 degrees of freedom
Multiple R-squared: 0.1101,     Adjusted R-squared: 0.08838 
F-statistic: 5.072 on 1 and 41 DF,  p-value: 0.02973 

*1:http://www.geocoding.jp/で各市役所の緯度・経度を調べ、距離を得ています。緯度または経度が1離れている距離を1としています。池田市役所と八尾市役所の中点は0、そこから池田市役所に近づくにつれマイナスに、八尾市役所に近づくにつれプラスになります。

*2:距離と所得の相関を見てみると、R^2 = 0.1101 で、t検定は5%有意。

都道府県の幸福度を測定するには

日本で一番幸せな都道府県は?-法政大学が研究発表 - 市ケ谷経済新聞

こんな記事がありました。正直、結果を見て直感的に「そうかなあ?」と疑問を持った人も多いのではないかと思います。

昔になりますが、1996年にNHKが「全国県民意識調査」という調査を行っています。一次資料はすぐ手に入らなかったので、「県民性の統計学」という新書から孫引きしています。「いまの生活に満足していますか?」という問いに「非常に満足している」と答えた人の割合*1と、今回の調査結果を比較してみます。結果は下記の通り。



これは、どう見ても無相関、ですね。

15年でそれほど幸福度が大幅に変わるとも思えないので、これは測定の問題が大きいと思います。法政大学の調査は客観的な指標を用いており、「全国県民意識調査」はその名の通り住民の主観的な意識をアンケート調査しています。
GNH(Gross National Happiness)の議論とも重なりますが、この手の「幸福度」というものは測定が非常に難しいということでしょう。


P.S. 元ファイルを Google Docs で公開しています。ご自由にお使いください。 https://docs.google.com/spreadsheet/ccc?key=0AvX_VWJn25JmdGhtNEQtTHAtUTk0d3dCOHV1d2lxOEE


*1:この本にはそれしか載っていないのです。ほんとうは「やや満足」とかも加味したいのですが。

R.Stallman の Steve Jobs に対するコメントの日本語訳

2011: July - October Political Notes - Richard Stallman より引用して翻訳


Steve Jobs, the pioneer of the computer as a jail made cool, designed to sever fools from their freedom, has died.

愚か者共を自由から切り離すように設計された、牢獄としてのコンピュータをクールにした開拓者である Steve Jobs が死んだ。


As Chicago Mayor Harold Washington said of the corrupt former Mayor Daley, "I'm not glad he's dead, but I'm glad he's gone." Nobody deserves to have to die - not Jobs, not Mr. Bill, not even people guilty of bigger evils than theirs. But we all deserve the end of Jobs' malign influence on people's computing.

シカゴ市長の Harold Washington が、汚職にまみれた前の市長の Daley について「彼が死んだことで私は嬉しくはない。ただ、彼がいなくなったことで私は嬉しい」と言ったように、死ぬ程の罪を負う者は存在しない。Jobs であっても、Bill (Gates) であっても、彼らよりもっと巨大な罪を犯した人であってもそれは同じだ。だがしかし、私たちはみんな Jobs の人々のコンピューティングに及ぼした邪悪な影響を終える資格を持つ。


Unfortunately, that influence continues despite his absence. We can only hope his successors, as they attempt to carry on his legacy, will be less effective.

不幸にも、その影響は彼がいなくなっても続いている。私たちにできることは、彼の遺志を引き継ごうとする後継者が、より小さな影響力しか持たないように望むことだけだ。




Verbatim copying and redistribution of this entire page are permitted provided this notice is preserved.

この告知が保存されている限り、このページの無改変でのコピーと全体の再配布が許可される。