$shibayu36->blog;

プログラミングの話や自分の考えを色々と書いています。特にperl、emacsや読んだ本の話が多いです。

「アニメを仕事に!」読んだ

SHIROBAKOを見ていて意識が高まっていったので読んだ。

この本はアニメの仕事の中で、制作進行という仕事にフォーカスを当てて、アニメの制作はどのような仕事があるかを教えてくれる本。SHIROBAKOでやっていた内容が文章化されて頭に入ってくるので良い。

本書で説明に使われている以下の動画が非常に良い。リトルウィッチアカデミアの制作がどのように進むのかがわかるので興味がある人は見てみると良さそう。
www.youtube.com


さて、アニメの仕事はわかったのはいいのだけど、この本の中で非常に気になる言葉があった。

新人の制作進行の給料は会社によって違いますが、13万円〜18万円です。しかしこれは額面上の金額。

3年後の業界滞在率は10%~20%といわれています

日本はせっかく良いアニメが大量に生産されているというのに、それに対しての報酬が少なすぎる。報酬が少ないということはおそらくビジネス的には良いモデルを作れていないことなんだろうなと思った。何とかなってほしい。

アニメの収益源ってなんだろうって調べてみたら以下の記事を発見した。
ascii.jp

これ見てみると、ビデオの5年前だとビデオの収益が最も多いことが分かる。結局はDVD販売みたいなのが一番の比率になっているの見るとけっこう厳しそう。新しいモデルがあると良いのだけどと思った。以前タイバニを見てたときに、アニメ自体がCMになっているというのを見たけど、ああいうのはどのくらいの収益を上げているのだろうとか気になった。


とにかくアニメが作られ続けるためにも何とかなってくれと思った本だった。

Scala入門してる - クラスとオブジェクト編

コップ本第04章を読んだ感想を少しだけ。

class

クラス定義はclassというキーワードを使う。これで定義するのはインスタンスを生成するもの。ScalaではJavaのようなstaticなメソッドはclassでは定義できない。

varでpublicなメンバー、defでメソッドを定義。privateで隠蔽。

class Hoge {
  var a = 0
  private var b = 0
  def getB(): Unit = { return b }
}

object

ではstaticなメソッドを作るにはどうするかというとobjectを使う。定義されたclassと同じ名前のobjectは同じファイルに記述する必要がある。なんの意味もないobject指定だけど、こういう感じ。

object Hoge {
  def piyo(): Unit = { println("piyo") }
}

まとめ

とりあえず、インスタンスを作りたいときはclass、いわゆるクラスメソッドを作りたかったらobjectと覚える。

これまでの

blog.shibayu36.org
blog.shibayu36.org

Scala入門してる - 演算子編

コップ本読みながら、Scala入門してる。今は第05章の基本型と演算子を読んでる。

Scala演算子はすべてメソッド呼び出しらしい。分かりやすくて良い。

例えば

val x = 1 + 1

val x = (1).+(2)

と同じらしい。分かりやすい。


単項演算子みたいなのもあると思うのですが、これはunary_hogeみたいなのにマッピングされるみたい。つまり

val x = -1

val x = (1).unary_-()

と同一って感じっぽい。分かりやすい。


ちなみにすべてのメソッドは中置演算子のようにできるみたい。例えばStringのindexOfは単なるメソッドだけど、中置演算子として書ける。

val s = "Hello, world!"
s indexOf 'o'

これを利用することで、for文で使ってたtoがなぜああいうふうに使えるか分かる。

for (i <- 1 to 10) {
  println(i)
}

これは

for (i <- (1).to(10)) {
  println(i)
}

となって、単にtoメソッドが呼ばれているだけみたい。なるほど。


toの実装を見るために、実際にscalaのコードを見に行ってみる。https://github.com/scala/scala

まずIntはどのへんにあるかなと思ったら、https://github.com/scala/scala/blob/2.11.x/src/library/scala/Int.scala にあった。これはabstract classっぽいので、実際の実装はあんまりなかった。たぶんJavaのソースに実装がありそう?

ここにはunary_~とかunary_-とかが書いてあったので、これが前置演算子になるんだなーと分かった。https://github.com/scala/scala/blob/2.11.x/src/library/scala/Int.scala#L39..L43

さらにgit grep 'def to('とかして探してみると、src/library/scala/runtime/RichInt.scalaというファイルが見つかった。ここにtoの定義を発見。https://github.com/scala/scala/blob/2.11.x/src/library/scala/runtime/RichInt.scala#L71..L71 。Range.Inclusiveというのが返るみたい。どうやってRichIntとかが呼ばれるのかよくわからないのだけど、聞いてみるとimplicit conversionみたいな仕組みが使われるみたい。よくわからんけど、もっと読んでったら分かりそう。

会話もした。







まとめ

今回はScala演算子の使われ方についてちょっとだけ調べた。全部メソッドなのは分かりやすくていい。ちょっとずつScala勉強してるけど、PerlRubyの中間っぽい感じに見えてかわいい。

前回のエントリー

blog.shibayu36.org