web系な備忘録

私が忘れてもブログがあるもの

4/25のDroidKaigi発表者募集中です

4/25の土曜日、渋谷にてDroidKaigiというAndroidエンジニアのための祭典が開催される運びになりました!

私もツテでお手伝いをすることになりまして、 発表者を募集しています! という宣伝のため久々にブログを書いております次第です。

こわくないよ!

私は趣味や仕事でほんのちょこっと書いている程度のゆるふわAndroidエンジニアです。勉強会とかも「なんかみんな頭良さそうだしこわい」と思ってしまって、なかなか参加できていませんでした。

ですが、先日参加した某Android勉強会で他の開発者さんたちと話してみて気が付きました。

「2系対応、機種依存、つらぽよ」とか

「テスト書きづらい…どうすれば…」とか

意外とみなさん同じようなところで悩んでいるんですね……! そんなに怖がらなくてよかったのかも、と思いました。

ということで、自分にとってはちょっとしたことだと思うようなことでも、ぜひ発表してみませんか? 同じようなことを知りたがっている人は案外いるかもしれません!

CFP形式なので厳しそうに見えるかもしれませんが、発表内容が運営に伝わるように書いていただけばきっと大丈夫です!

発表はハードルが高いという人も、ぜひ参加して開発者同士の交流を楽しんでいただければと思います。

まとめ

4/25、渋谷にてAndroidエンジニアのためのイベントをやります!

応募〆切は 2/25(水) 24:00 です。あと6日! まだ間に合います!

たくさんのご応募お待ちしておりますヽ(゚∀゚)ノ

「入門chef solo」で詰まったところメモ

Amazon.co.jp: 入門Chef Solo - Infrastructure as Code eBook: 伊藤直也: Kindleストア

 買いました。  読みながらコマンドを試していたのですが、chef soloのバージョンが書籍よりかなり進んでいて、そのまま使えないコマンドが結構ありました。

 ということでメモです。書籍の補完資料として。

サーバの状態をセーブできるようにする

 vagrantをセットアップした後の部分。  書籍には vagrant gem install sahara とあったけど、現在はpluginを使うらしい。

vagrant plugin install sahara

参照: http://ri.hateblo.jp/entry/2013/10/29/013359

knife-soloの導入

$ git clone git://github.com/matschaffer/knife-solo.git
$ cd knife-solo/            
$ rake install
rake aborted!
WARNING:  See http://guides.rubygems.org/specification-reference/ for help
ERROR:  While executing gem ... (Gem::InvalidSpecificationException)
(略)

 ダメだった。submoduleの取り込みが必要だったようなのでやる。

$ git submodule init
$ git submodule update

$ rake install
knife-solo 0.5.0 built to pkg/knife-solo-0.5.0.gem.
rake aborted!
Couldn't install gem, run `gem install /Users/.../knife-solo/pkg/knife-solo-0.5.0.gem' for more detailed output

$ gem install /Users/.../knife-solo/pkg/knife-solo-0.5.0.gem
ERROR:  While executing gem ... (Gem::RemoteFetcher::UnknownHostError)
    no such name (https://api.rubygems.org/quick/Marshal.4.8/pry-0.9.7.1-java.gemspec.rz)

 pryがないらしいので入れる。入れて試すとアレがないコレがないと言われるので都度入れていく。  結果的に以下の処理が必要だった。

$ gem install pry
$ gem install mime-types
$ gem install json

 これでknife-soloが入るようになる。

$ gem install /Users/violet1101/Development/SakuraClone/knife-solo/pkg/knife-solo-0.5.0.gem

$ rake install
knife-solo 0.5.0 built to pkg/knife-solo-0.5.0.gem.
knife-solo (0.5.0) installed.

 。。。入ったはずなんだけどコマンドが見つからなかったので、こちらの記事に従ってパスを追加した。

installしたはずなのにコマンドが見つからない時の対処法φ(・・*) - Qiita

knife solo cook host-name ができなかった

$ knife solo cook melody
Running Chef on melody...
Checking Chef version...
Uploading the kitchen...
Generating solo config...
Running Chef...
[2014-09-09T15:01:11+00:00] WARN: 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SSL validation of HTTPS requests is disabled. HTTPS connections are still
encrypted, but chef is not able to detect forged replies or man in the middle
attacks.

To fix this issue add an entry like this to your configuration file:

-```
  # Verify all HTTPS connections (recommended)
  ssl_verify_mode :verify_peer

  # OR, Verify only connections to chef-server
  verify_api_cert true
-```

To check your SSL configuration, or troubleshoot errors, you can use the
`knife ssl check` command like so:

-```
  knife ssl check -c /home/vagrant/chef-solo/solo.rb
-```

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Starting Chef Client, version 11.16.0
Compiling Cookbooks...
Converging 0 resources

Running handlers:
Running handlers complete
Chef Client finished, 0/0 resources updated in 8.362882324 seconds
$ vim .chef/knife.rb

  9 cookbook_path            ['./cookbooks', './site-cookbooks'] 
 10 ssl_verify_mode          :verify_peer 
  • 普通にinitしただけではsite-cookbooksが指定されていなかったので追記。
  • 上記エラーメッセージで促された様にssh設定を追記。

サードパーティレシピの追加方法

 まだサーバに入っていないackコマンドを追加して動作を確認する。

$ knife cookbook create ack -o site-cookbooks

 手動で2箇所修正。

$ vim nodes/melody.json
  2   "run_list": [ 
  3     "recipe[ack]"  ←追記
  4   ], 
$ vim site-cookbooks/ack/recipes/default.rb 
 10 package "ack" do 
 11     action :install 
 12 end 

 vagrantに適用させる。

$ knife solo cook melody
Running Chef on melody...
Checking Chef version...
Uploading the kitchen...
Generating solo config...
Running Chef...
Starting Chef Client, version 11.16.0
Compiling Cookbooks...
Converging 1 resources
Recipe: ack::default
  * package[ack] action install
    - install version 2.12-2.el6 of package ack

Running handlers:
Running handlers complete
Chef Client finished, 1/1 resources updated in 24.873520682 seconds

 実際にackコマンドが入っているか確認する。

$ ssh melody
$ ack
(ヘルプ的な文章)

 できたヽ(゚∀゚)ノ

Android Studio - Attach Source

ActivityとかAndroidSDKのコードを読めるようにしたいので、attach sourceします。

まずソースを取ってきます。好きな場所で

$ git clone https://android.googlesource.com/platform/frameworks/support/

とするとsupportというフォルダにソースが入ります。

次にソースをclassファイルにくっつけます。HogeActivity extends FragmentActivity {ってところのFragmentActivityの上でF3を押すと、Activityのclassファイルが開きます。右上にattach sourceと表示されるはずなので、そこで

/Applications/Android\ Studio.app/sdk/extras/android/support/

を指定すれば、v4とかv7とかのソースが全部読めるようになります。

上記手順でサポートライブラリ系はOKなんですが、Activityとか、いちばん大元のAPIはandroid.jarなのでまた別途追加しないといけないです。これがまたIntelliJ系初心者には分かりづらくて苦労しました。

ググると、ProjectStructureを開いてLibrariesってところに追加すればいいよ。とか出てくるんですが、

f:id:sn_f:20131229234759p:plain

f:id:sn_f:20131229234801p:plain

↑Librariesなんてない!

で、どうやらプロジェクトファイルを右クリックしてOpen Module Settingsを選択すると、上記では表示されない画面に行きまして↓

f:id:sn_f:20131229234803p:plain

左のModulesのタブを選んで以下のように選択すると

f:id:sn_f:20131229234804p:plain

それっぽい画面!!

f:id:sn_f:20131229234806p:plain

あとはSourcepathタブにsourceを追加すればOKです。

Android Studio - サンプルプロジェクトを読んでみる

MainActivity

ActionBarActivityを継承している。

ActionBarはAndroidアプリの上部についてるナビゲーションバーのこと。標準のサポートライブラリに含まれている。

android.support.v7.app | Android Developers

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
    }

Bundle savedInstanceStateとは、アプリ終了時の状態を保存しているもの。なのでこのif節では、初回起動時にどうするかという処理をしている。 (初回起動時だけじゃなくて、何か他の時にも入りそう/未確認)

getSupportFragmentManager()は、現在のActivityに関連するFragmentManagerを取得するもの。

FragmentActivity | Android Developers

そこで取得したMangaerを使って、トランザクションを開始し、PlaceHolderFragmentというフラグメントをR.id.containerというidで定義されたlayoutに紐付ける。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    tools:ignore="MergeRootFrame" />

layoutファイルのtools:contextとはなんぞや??

xml - What's "tools:context" in Android layout files? - Stack Overflow

StackOverflowによると、UIエディタがレイアウトをレンダリングするときに使うActivityということで…ここと連動しているみたい↓

f:id:sn_f:20131229000943p:plain

ActivityだけでなくFragmentを指定することも出来る。

fragment_main.xml

tools:context=".MainActivity$PlaceholderFragment

tools:ignoreではAndroid Lintを部分的に無視する設定をしている。

AndroidLintについての説明はこちらが詳しい。

Android Lint の利用方法を記載 | Bescottee

lintとはそもそも湿布に使われているようなふわふわ起毛した布とか綿くずのことを言うらしい。で、C言語には

lintとは、主にC言語のソースコードに対し、コンパイラより詳細かつ厳密なチェックを行うプログラムである。

というものがある。free lint(糸くずが出ない)って言葉から転じて、僅かな綻びもないコード…という意味になったかは知らないけど(すみません思いつきで言っています)、とにかくlintはちょっとしたミスを指摘してくれるやつです。例えばhtml lintなら閉じタグが足りないよ!とか言ってくれます。

で、Android Lintも同様に細かなチェックをしてくれるようで、これはADT16(2011年12月版)から追加された機能のようです。

lintが何をチェックしているかは以下で見れます。

http://tools.android.com/tips/lint-checks

目についたものを抜粋してみると…

  • NewApi: Finds API accesses to APIs that are not supported in all targeted API versions
    • ターゲットとしているAPIバージョン全てで使えるわけではないAPI(古いのでしか使えないとか新しいのでしか使えないとか)を使っている
  • ShowToast: Looks for code creating a Toast but forgetting to call show() on it
    • Toast作ってるけどshowしていない(確かにこれ書き忘れやすいよね…)
  • Deprecated: Looks for usages of deprecated layouts, attributes, and so on.
    • 非推奨なレイアウトとか属性とかを使っている

などなど。色々ありますね。

さて、知りたかったMergeRootFrameはどんなやつなのかというと

MergeRootFrame

Summary: Checks whether a root <FrameLayout> can be replaced with a <merge> tag

Priority: 4 / 10 Severity: Warning Category: Performance

If a <FrameLayout> is the root of a layout and does not provide background or padding etc, it can often be replaced with a tag which is slightly more efficient. Note that this depends on context, so make sure you understand how the <merge> tag works before proceeding.

More information: Android Layout Tricks #3: Optimize by merging | Android Developers Blog <<

合ってるか分からないけど訳してみると…

ルートのFrameLayoutが<merge>タグで置換されていいかどうかチェックする。 もしFrameLayoutがレイアウトのルートで、背景やpaddingを提供しないなら、mergeタグに置換することで少し効率的にできます。これは状況次第なので、mergeタグがどのような働きをするのかちゃんと理解してくださいね。

…という感じ?

Android Layout Tricks #3: Optimize by merging | Android Developers Blog

mergeタグを使うとレイアウトの階層が深くなるのを抑えることができます。

hierarchy viewerで実際に確認してみようと思ったのですが、Android Studioのどこにあるのか見つけられない…orz

探しまわっていたら、棚ぼた的に、Preferences->Inspections->Android LintでどのLintを検知してどれは無視するのか、自由に設定できることが分かりました。

話を大きく戻して、PlaceholderFragmentですが、MainActivityの下の方に定義されていました。

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            return rootView;
        }
    }

Fragmentはサポートライブラリ(v4)で定義されている機能で、Activityとレイアウトの間を取り持つものというイメージで…いいのかな…。

Activityで直接レイアウトとロジックを管理すると、1つの画面に複数の機能が含まれるときに大変。例えばfbの左からスライドして出てくるメニュー画面と、ヘッダーと、コンテンツ部分なんかはそれぞれのレイアウトにそれぞれをロジックをくっつける感じで扱えた方が便利です。特にAndroidの場合画面が大きい端末が多かったりするので、横レイアウトの時には左のメニューを出しっぱなしにしたい、とかいう場合に、ロジックは同じものを使い回せるのでFragmentは便利です。

……ってことがこの本に載ってました。もっと正しく分かりやすく書いてあるので詳しくはこちらを参照で。

Android UI Cookbook for 4.0 ICS(Ice Cream Sandwich)アプリ開発術

Android UI Cookbook for 4.0 ICS(Ice Cream Sandwich)アプリ開発術

Fragmentの中にもライフサイクルがあります。

Fragmentを動的に変化させる « Tech Booster

onCreateViewはFragmentに関連付けるViewを返します。

View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            return rootView;

ここでcontainerにはactivity_main.xmlで定義されているFrameLayout(つまりActivity全体の大枠のレイアウト)が入ります。 http://y-anz-m.blogspot.jp/2012/04/android-viewgroup.html

なので、rootViewをデバッグして見てみると、android.widget.RelativeLayout(fragment_main.xmlで定義されている大枠)になっています。

要は、第三引数がtrueなら、第二引数を返し、第三引数がfalseなら第一引数のルートレイアウトを返す。ただし、第二引数がnullの場合には第一引数のルートレイアウトを返す。…のかな…。

ちょっとこの辺りは要勉強という感じがします。

一旦ここまで。

Android Studio導入編

 ブログを書くハードルを下げるために、ただ使い始めただけでも書いてみる試み。

Getting Started with Android Studio | Android Developers

からdownloadしてApplicationフォルダにコピー。

設定ファイルimportする?持ってない?みたいなこと聞かれたので持ってない方を選ぶ。

ライフサイクルを学ぶ用のアプリということで、LifeCycleAppという名前で新規作成。

f:id:sn_f:20131228195657p:plain

eclipse(ADT)で作ったときと明らかに違う…!

見たこと無いフォルダやファイルが多々↓(マーカー引いたやつ)

f:id:sn_f:20131228195655p:plain

gradle系はあれですよね、依存関係の解消とかすごいいい感じに管理できるやつって聞いてます!!!! ……。つまり全然知らないので、これの使い方やら役立つ場面を知りたいというのがこの年末年始のサブ目標でもあります。

.gitignoreは知ってますけど、プロジェクト作ったらデフォルトで含まれてるとは。Eclipseでgit管理すると、ちょっとブランチ切り替えただけで色々ビルドがうまく行かなくなって、結局Eclipse再起動……なんてことがよくあるのですよね。.gitignoreがふくまれているということは、git管理前提で作られてて色々楽ちんになるのでしょうか? だとしたら楽しみです。

あと、imlファイル。xml形式でプロジェクトのファイルのディレクトリ構成みたいなのが書いてある。プロジェクトファイル的なやつかな。

とりあえず起動してみる!! ▶を押してみた。 Gradleが色々buildしている。しばし待つ。

エミュレータの設定とかしてないからどうなるのかなと思ったら、Android2.3か4.0どっちで起動する?って聞かれた。4系を選んでスタート。

Waiting for device. "/Applications/Android Studio.app/sdk/tools/emulator" -avd Android_4.0.5 -netspeed full -netdelay none

emulator: ERROR: unknown skin name 'WVGA800'

あれー。

AndroidStudio - Android Studioを適当に触ってみた。 - Qiita [キータ]

skinを変えれば良いみたい?

f:id:sn_f:20131228195658p:plain

確かに、AVD Managerを開いてみると全部×になってる。

EditからSkinを変えようとするが…候補がなくて何も選べない! そもそもTargetのAndroid4.0.5をinstallしてなかったです。。。ならなぜ初めの候補に出るのか。。。

Targetを4.4に変えて再挑戦。起動した…けどめっちゃ遅い。そういえばIntelの早いやつとか入れてなかったので入れる。

[dup] Androidの超速エミュレータを導入する - Qiita [キータ]

入れたらまあマシになった。Androidのこれは毎度ながらつらいですね…。

ともかく、ようやくアプリが起動出来ました。プロジェクトはここに保存されていました。

$ ls ~/AndroidStudioProjects/LifeCycleAppProject

[Android Studio] GitHub と連携してみる | Developers.IO

こちらを参考に一旦githubにpushして

suino/LifeCycleApp · GitHub

できたヽ(゚∀゚)ノ

上で示したディレクトリでコンソール上でpushやら何やらすることも出来そうです。

声優さん共演関係など解析 その2

 前回の記事(http://snsn.hatenablog.com/entry/2013/12/08/193036)にお寄せいただいたコメントに回答する形で追加調査していきます!  今回のテーマは 共演率ランキングの再調査 と 声優界エルデシュ数 です

共演回数ランキング再調査

 「前回の共演回数ランキングって……単に出演数多い人ばかりでは?」というご意見を頂きましたが、そのとおりです。出演作が多ければ多いほど多くの人と共演しているので、必然的に共演回数ランキングも上位になりやすいのです。でも、あまりに能登無双で確かにちょっと物足りないですよね。

 ということで、 共演率ランキング を出してみます。

共演率ランキング1

 計算式は、(AさんとBさんの共演回数)/(Aさんののべ共演者数)としてみました。結果は以下のとおり。

声優1 声優2 共演率
森山未來 星野源 1
河野由佳 櫻井智 1
笑福亭鶴瓶 草彅剛 1
山田夢麻 矢内龍之介 1

 ……。

 ですよねー。そうなりますよね。出演者が2人しかいない作品に、芸能人のように声優としての参加作品が少ない人が当然ながら上位にきます。分母が小さいですからね。

 こうして考えると、分母は「共演者数」じゃなくて「出演作品数」の方が自然な気がします。10作品に出たうち7作品で共演している、という感じ。

共演率ランキング2(出演数50以上)

 ということで、(AさんとBさんの共演回数)/(Aさんの出演作品数)という式にしてみます。さらに、そもそも出演した作品が数少ない(=分母が小さい)無名な方よりは、ある程度知名度のある声優さんについて知りたいよね、ということで、分母が50以上の人に絞って出してみました。結果は以下のとおり。

順位 声優1 声優2 声優1の出演作品数(分母) 声優2の出演作品数 共演回数(分子) 共演率 備考
1 小原乃梨子 たてかべ和也 62 64 41 0.66 のび太とジャイアン
2 増山江威子 井上真樹夫 53 55 34 0.64 峰不二子と石川五ェ門
3 たてかべ和也 小原乃梨子 64 62 41 0.64 ジャイアンとのび太
4 井上真樹夫 小林清志 55 71 35 0.64 石川五ェ門と次元大介
5 井上真樹夫 増山江威子 55 53 34 0.62 石川五ェ門と峰不二子
6 井上真樹夫 納谷悟朗 55 62 33 0.6 石川五ェ門と銭形警部
7 潘恵子 古谷徹 51 118 30 0.59 ララァとアムロ・レイ、ルナと地場護
8 納谷悟朗 小林清志 62 71 36 0.58 銭形警部と次元大介
9 増山江威子 納谷悟朗 53 62 30 0.57 峰不二子と銭形警部
10 増山江威子 小林清志 53 71 30 0.57 峰不二子と次元大介

 ドラえもん勢とルパン勢が……! シリーズ物に参加している、かつ、そのシリーズ以外の作品にはそこまで参加していない、という人が上位にきているようです。

 7位の潘恵子さんと古谷徹さんについては、共演数の多さについてwiki( http://ja.wikipedia.org/wiki/%E6%BD%98%E6%81%B5%E5%AD%90)でも言及がありますね。

古谷徹とは『機動戦士ガンダム』、『ヤマトよ永遠に』、『新竹取物語 1000年女王』(雪野弥生役)、『聖闘士星矢』、『美少女戦士セーラームーン』など共演が多い。古谷の口から「たくさんの作品で相手役を含めやらせていただいた」と語られている[6]。
共演率ランキング2(出演数10以上)

 ちなみに、50作品以上に参加した人、だと絞りすぎかなとも思い、10作品以上に参加した人、で出してみた結果がこちらです。同じ人がたくさん出てきたので一部まとめた書き方にしています。

声優1 声優2 声優1の出演作品数(分母) 共演回数(分子) 共演率 備考
出口茉美 神田朱未、桑谷夏子、能登麻美子 19 19 1 ネギま!な方々
Hazuki こやまきみこ、松岡由貴、伊藤静、いのくちゆか、石毛佐和、佐藤利奈 18 18 1 ネギま!な方々
佐久間未帆 堀江由衣、こやまきみこ、神田朱未、桑谷夏子、野中藍、松岡由貴、能登麻美子、白鳥由里、渡辺明乃、伊藤静、皆川純子、いのくちゆか、石毛佐和、佐藤利奈、出口茉美、門脇舞以、小林美佐、白石涼子、小林ゆう、山川琴美、木村まどか、笹川亜矢奈、浅倉杏美、板東愛、狩野茉莉、相沢舞、井上直美 17 17 1 ネギま!な方々
井上直美 堀江由衣、こやまきみこ、神田朱未、桑谷夏子、野中藍、松岡由貴、能登麻美子、伊藤静、皆川純子、いのくちゆか、石毛佐和、佐藤利奈、出口茉美、門脇舞以、白石涼子、小林ゆう、山川琴美、木村まどか、笹川亜矢奈、板東愛、野茉莉、相沢舞 18 18 1 ネギま!な方々

 ……。

 ネギま勢強すぎる! (そしてここにも登場する能登さん強し!)

結論

 シリーズ物の共演者同士のつながりはとても強い。

エルデシュ数

 エルデシュ数を出してみてほしいというご意見もいただきましたのでやってみます。

http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%AB%E3%83%87%E3%82%B7%E3%83%A5%E6%95%B0

エルデシュ数(エルデシュすう、Erdős number)またはエルデシュ番号とは、数学者同士、あるいはもっと広く科学者同士の、共著論文による結び付きにおいて、ハンガリー出身の数学者ポール・エルデシュとどれだけ近いかを表す概念である。エルデシュに共著論文が非常に多いことから、その友人たちによって、敬意とユーモアを込めて考え出された。今日では科学者のコミュニティにおいてよく知られており、エルデシュと近いことが名誉であるかのように半ば冗談めいて語られる。

 いわゆるスモールワールド現象(友達を6人たどっていけば世界中の誰にでも届く)の縮小版みたいな感じですね。共著関係を辿っていったら何人でエルデシュに出会うのか。ちなみに、ナタリー・ポートマンのエルデシュ数は5だそうです(http://gigazine.net/news/20110303_erdos_number/)。また、映画界でも同様に、ケヴィン・ベーコンという俳優さんとの共演関係に基づいたケヴィン・ベーコン数というものがあるようです。

 さて、声優界のエルデシュといえば? 能登麻美子ですねそうですね。ということで、能登麻美子数として勝手に出してみました。

能登麻美子数

 ちなみに……。能登さんの出演作品数は498と前回書いたのですが、共演者数を出してみたところ、なんと2299人という結果でした。今回のデータ全体で5653人いるので、4割強の人と直接共演しているという恐るべし数字でした。

 さてさて集計結果はこちら。

能登麻美子数 人数 延べ割合
1 2299 40ï¼…
2 3232 98ï¼…
3 73 99ï¼…
4 1 99ï¼…
∞ 47

 oh… つまるところ、世の中の98%の声優さんは「友達の友達は能登麻美子」って感じなわけですね。

 あまり大規模な会社勤めではないので分からないんですが、5600人ぐらいいる会社で「あーあの人ね、前一緒に仕事したことあるわー」って4割の人に言われる人っていますかね? 社長? 部長? いたら過労を心配してしまいそうなんですがw それくらい圧倒的ですね。

 能登麻美子数=∞の47人はどんな人なのか、逆に気になるので見てみます。ずらっと。

大沢健, 浜口ひろみ, 坂上香織, 保坂尚輝, 矢蒔浬子, 野村詩織, 橋野恵美, ふじわら哲平, ポール牧, 岸部一徳, 田口トモロヲ, 小林聡美, カン・ジュンサン, チョン・ユジン, キム・サンヒョク, オ・チェリン, クォン・ヨングク, Samuel L. Jackson, Lucy Lu, Mark Hamill, 笑福亭鶴瓶, 草彅剛, 中谷美紀, ジョン・スパークス, ジャスティン・フレッチャー, ジョー・アレン, 堀玲子, 矢内龍之介, 山田夢麻, 中西茂樹, 那須晃行, 片山祐介, 根岸拓馬, 片岡未来, 谷口亜実, 佐伯まさみ, 阿部英貴, 岡崎宏, 金子森, ギュリ, スンヨン, 二コル, ハラ, ジヨン, 森山未來, 星野源, 温水洋一

 パッと見で芸能人、外人さんが多いですね。韓国勢は冬ソナのアニメとKARAのアニメ、Samuel L. Jacksonさんらはアフロサムライ:レザレクション(http://www.afrosamurai2.jp/)というアニメに出演している模様。他、電影少女、聖☆おにいさんの映画(これそもそもデータに入れちゃダメなんじゃないか?w ちょっと見なかったことに……)などなど、芸能人で固められた作品だと、能登さんと共演経験のある声優さんが出演していないため、能登麻美子数を持たない(=∞)ということになるようです。

技術的な話

 ちなみに、人と人の最短経路を出すためにneo4jを使いました。久々に触ったら色々変わっていたので、どこかでちゃんと使い方をまとめたいところです。

結論

 すべての声優は能登麻美子に通ず!

声優さん共演関係など解析

主に夏にやっていた実験なんですが、こんなつぶやきを残したまますっかり放置していたので、なんとかまとめました。

手っ取り早く見たい人はこちらをクリック!

suino.info - 2013年夏アニメ

データ収集

.lain - for Anime & Manga Geeks

こちらのサイトのアニメデータベースをクロールさせていただきました。クロールというと図書館のあの事件(クローラ作者の逮捕とエンジニアの不安――“librahack事件”まとめ - はてなブックマークニュース)を思い出してしまうわけで、勝手にやって何かあったらまずいので事前に許可をいただき、5秒に1回のゆっくりペースで取得させていただきました。

管理人さん、ご快諾いただきありがとうございました!m( )m

データ概要
概要 詳細
取得ページ http://lain.gr.jp/mediadb/media/0001〜4530
取得時期 2013年7月頃
作品数 4306(TVアニメだけでなく、OVA、映画、ゲーム類も含む)
声優人数 5653

解析

いちばん出演作の多い声優TOP10

まずは単純に、多くの作品から引っ張りだこの人気声優を見てみます。

順位 名前 出演作品数
1 能登麻美子 498
2 子安武人 316
3 石田彰 302
4 置鮎龍太郎 268
5 川澄綾子 250
6 三木眞一郎 249
7 森川智之 243
8 関智一 239
9 釘宮理恵 239
10 藤原啓治 232

ただの人気ランキングになってる気もしますが、納得の順位です。能登さんぶっちぎり。

いちばん出演者数の多いアニメTOP10

前項の逆で、多くの声優さんを起用している大所帯アニメを調べてみましょう。

順位 作品名 出演者数
1 それいけ!アンパンマン 435
2 忍たま乱太郎 265
3 NARUTO−ナルト− 疾風伝 253
4 SDガンダム GGENERATION WARS 178
5 BLEACH 165
6 マスターキートン 154
7 機動戦士ガンダム ギレンの野望 アクシズの脅威 127
8 地獄少女 二籠 127
9 地獄少女 125
10 名探偵コナン 124

3位までは国民的アニメが並んでいます。放映期間が長い作品はやはり出演者数も多いです。7位のガンダムについては、全キャラ登場!という感じのゲームみたいなのでこれも納得です。

8位、9位にランクインしている地獄少女(地獄少女 - アニメデータベース)に関しては、実際の記述をみていただけば分かるように、非常に熱心なファンが各話の名も無き登場人物の声優情報まで記録しているため、あまり公平なランク入りではないかもしれません……。が、CGMに公平なコンテンツ量を求めるというのは難しいことです。wikiでも偏りはあるでしょう。ということでこれについては「そういうデータなんだな」という感じで捉えていただければと思います。

共演回数の多いペアTOP10
順位 名前 名前 共演回数
1 川澄綾子 能登麻美子 193
2 石田彰 能登麻美子 143
3 渡辺明乃 能登麻美子 141
4 石田彰 保志総一朗 137
5 石田彰 子安武人 133
6 石田彰 置鮎龍太郎 133
7 釘宮理恵 能登麻美子 129
8 堀江由衣 能登麻美子 127
9 置鮎龍太郎 緑川光 127
10 置鮎龍太郎 森川智之 125

能登さんすごい…!(1位のお二人の共演作品はこちら(川澄綾子×能登麻美子の共演作品 - 声優データベース)から見られます。)

それにしても、共演数が多いことで有名な石田彰・保志総一朗よりも上の組み合わせがたくさんあるとは意外ではないですか?

キャストが似ているアニメTOP15
順位 作品名 作品名 類似度
1 タイムボカン ヤッターマン 0.73
2 秘密結社 鷹の爪 THE MOVIE 〜総統は二度死ぬ〜 週刊シマコー 0.67
3 秘密結社 鷹の爪 THE MOVIE3 〜http://鷹の爪.jp は永遠に〜 汐留ケーブルテレビ 0.67
4 この醜くも美しい世界 まほろまてぃっく 〜もっと美しいもの〜 0.63
5 超変身コス∞プレイヤー LOVE♥LOVE? 0.63
6 VANDREAD ストラトス・フォー 0.55
7 ヤッターマン タイムボカン王道復古 0.53
8 VANDREAD the second stage ストラトス・フォー 0.52
9 ななついろ★ドロップス ALICE・ぱれーど 〜二人のアリスと不思議の乙女たち〜 0.5
- イソップワールド ふたりのジョー 0.5
- フォーチュンクエストL ヨコハマ買い出し紀行 0.5
- フォーチュンクエストL 少年サンタの大冒険! 0.5
- 春夏秋冬 逆襲のアカズキンチャン ローズ×マリー 妖血の囁き 0.5
- 真拳伝説タイトロード あずみ マンマ・ミーア 0.5
- 戦国無双 この男子、人魚ひろいました。 0.5

作品ごとのキャスト情報から、異なる作品間のJaccard係数を計算して類似度としました。

Jaccard係数についてはこちらの解説など(After 19: Jaccard係数)

で、それだけでは同じ作品の映画化したものとかが類似度1として出てしまうのでつまらないです。別作品だけど似てる!というものだけを知りたいんだよ…どうしよう…?

⇒ 手動で消しました。

ちょうつかれた。数百件は確認しましたね…名前が違ってても同じ作品ってものもあるので精神使いました(涼宮ハルヒの憂鬱とにょろーんちゅるやさんとか)。

でも、その甲斐のある結果だったのではないかと! タイムボカンとヤッターマン、超変身コス∞プレイヤーとLOVE♥LOVE?は、それぞれ同じシリーズらしいですが一応別作品ということで、せっかくなので(?)残しておきました。

キャストが少ないほど類似度が高く出やすいため、必ずしも直感に合う結果ではありませんが、4位、5位、6位、8位、9位(ななついろ〜、春夏秋冬〜)あたりは、出演者数も多く類似度も高い、「全然関係ないのに似たキャスト」な作品になっています。長くなるのでキャストは載せませんが、ぜひ見てみてください!

共演グラフ

動くよ!!

suino.info - 2013年夏アニメ

↑せっかくドメイン取ったのでw、ぜひアクセスしてください!!! でもちょっとデータが重いのでサーバ落ちたらすみません!!!

マウスオーバーで名前が出ます。スクロールで拡大縮小します。Gephiで作ったグラフをsigma.jsで組み込んだだけなんですけど、グラフを見るだけよりちょっと楽しいと思います!

2013年夏アニメ、エヴァシリーズ、ガンダムシリーズ、コナンシリーズの出演者をグラフにしています。赤色ほど共演者が多い=作品中の主要人物ということになります。

2013年夏アニメでは風立ちぬが孤立(普通の声優さんを一切使っていないから)していたり、同じ長編作品のガンダムとコナンでも出演者の偏り方が違っていたり、眺めるだけでも面白いです。

以上!

質問やらご要望やら何かありましたらコメントかリプライいただければと思います。 ご覧いただきありがとうございました。