AIKATSU! STREAMというChrome extensionを作った
生産性をあげるため、アイカツ!のライブシーンを延々と再生し続けるAIKATSU! STREAMというChrome extensionを作りました。
(dアニメストアへのログインが必要です)
とはいえ、jsで動画を解析してライブシーンを抜き出すようなことをしてるのではなく、各話のライブシーンの開始/終了をあらかじめ(人力で)抜き出してあって、それを元にシークしているだけです。
いまのところプレイリストに含まれるのは第一部のみです。dアニメストアには第二部〜スターズもあるので、やる気が出たら追加します。
そして後から気づきましたが、YouTubeのaikatsuTV channelでも十分だったかもしれない...
2017年の振り返り
1-3月
- 広告効果測定ツールADPLANのリリース
- 自分は集計周りをメインで担当してましたが、無事にリリースすることができました。
- ScalaMatsuri 2017登壇
- Introduction to ScalikeJDBCというタイトルで喋りました。
4-6月
- #bq_sushi tokyo #5 @ Google Cloud Community fes登壇
- scalikejdbc-bigqueryというライブラリを作った経緯を技術ブログに書いたのですが、それがきっかけでGoogleの方よりお声がけいただき、登壇しました。 www.slideshare.net
- オプト社内ISUCON開催 tech-magazine.opt.ne.jp
- このために、private-isuのScala版も書きました。
- NieR:Automataにハマった
- キャラもアクションもストーリーも音楽も最高過ぎました。
7-9月
- オプトを退職
- 2016年1月から在籍していたオプトを退職しました。
- とても暖かく送り出していただき、感謝の念に堪えません。
- 実はオプトのOSSのメンテナーは続けてたりします。
10-12月
- LINE株式会社に入社
- 1ヶ月有休消化したのち、10月からLINEで働き始めました。
- 強い人たちばかりで、がんばるぞいという気持ちです。
- アドカレ記事を書いたりしました。 engineering.linecorp.com
- ISUCON7予選に参加
- 初ISUCON参加でした。
- 結構色々なチームがハマってたのと同じく、帯域律速を突破できずにあえなく敗退...
- でもまた参加したい。
反省点
- 音楽を全然やっていない。
来年
JavaとしてもScalaとしてもコンパイルできるHelloWorld
タイトルの通り、以下のコードはJavaとしてもScalaとしてもコンパイルできます。
/*/**/ class JavaMain { public static void main(String args[]) { System.out.println("Hello, World"); } } // */ /*/**/ class App {} // */ /*/**/ class A { int object = 1; int ScalaMain = 1; void foo() { int i = // */ object /*/**/ ; i = // */ ScalaMain /*/**/ ; } class B // */ extends App { /*/**/ void bar() { // */ System.out.println("Hello, World"); /*/**/ } // */ } /*/**/ } // */
↑をPolyglot.java
, Polyglot.scala
として保存して試してみましょう。
$ javac Polyglot.java $ java JavaMain Hello, World $ rm -f *.class $ scalac Polyglot.scala $ scala ScalaMain Hello, World
わぁい動いた!
$ javac -version javac 1.8.0_77 $ scalac -version Scala compiler version 2.12.3 -- Copyright 2002-2017, LAMP/EPFL and Lightbend, Inc.
解説
ScalaとJavaにおける、ブロックコメントの挙動の違いがポイントです。
Scalaでは、ブロックコメントをネストさせた場合に/*
と*/
の対応をきちんと取りますが、Javaでは、何個/*
を開こうが、*/
が来た時点でブロックコメントが終了します。
Java:
/* -- (1) /* */ -- (1)が閉じる */ -- 余ってるのでsyntax error
/* -- (1) /* -- (2) */ -- (2) */ -- (1)
これを利用すると、javacにだけ認識されてscalacには無視されるコードを書くことができます。
いっぽう、scalacにだけ認識されるコードを書くのは難しいので、javacでコンパイルできるようにうまいこと色々足しています。
- L2..L6: javacだけに認識されるMainクラス
- L10: scala.Appを使ってScalaのMainクラスを作るので、javacで通るように空のAppを用意しておく
- L14..L39: javacで通るように色々挟みながら、
object ScalaMain extends App { System.out.println("Hello, World"); }
と書いている
まとめ
今回のコードはもちろんGroovyでもコンパイルできるので、Java, Scala, Groovy
のPolyglotができたことになります。
同じ感じでKotlinもいけるかな?
Ammonite REPLで任意のclasspathを追加する
MavenやGradleプロジェクトでも、sbtみたいに手軽にREPLで動作確認したいときがあります。
お手元の開発環境にAmmonite REPLを入れておけば、以下のようにScalaを使って動作確認できるので便利。
$ amm Loading... Welcome to the Ammonite Repl 1.0.2 (Scala 2.12.3 Java 1.8.0_144) If you like Ammonite, please support our development at www.patreon.com/lihaoyi @ interp.load.cp(ammonite.ops.Path("/path/to/classes")) @ import com.example.MyClass
/path/to/classes
は、Mavenプロジェクトだったらtarget/classes
だし、Gradleプロジェクトだったらbuild/classes/main
あたりになるでしょう。
ソース書き換えたらまた読み込み直さないといけないのが面倒ではありますが。
アイカツ!の曲のかっこよさについて
この記事はアイカツ! Advent Calendar 2017の25日目の記事です。
はじめに
女児向けアーケードゲームやアニメには、そのターゲット層とは裏腹に、コアな音楽ファンをも虜にするような楽曲を繰り出してくる作品が少なくありません。
とりわけアイカツ!は、曲調の多彩さやクオリティにおいて群を抜いている印象があります。
この記事では、アイカツ!の中でも筆者が特に好きな二曲「KIRA☆Power」「フレンド」を題材として、 そのかっこよさの分析を試みます。
1. KIRA☆Power
KIRA☆Powerはアイカツ!第2シーズンのOPで、このジャンルのアニメには珍しいアップテンポなEDMナンバーです。
ダブステップ
爽快感溢れるイントロ〜Aメロを抜けてBメロに入ると、Skrillexばりのキレのあるダブステップに度肝を抜かれます。
ダブステップを打ち出したアイドルソングとしてはきゃりーぱみゅぱみゅの「インベーダーインベーダー」やモーニング娘。の「恋愛ハンター」などが思いつきますが、女児アニメではなかなか珍しいのではないでしょうか。
また、Bメロでビートを1/2にするアニソンの常套パターンが、KIRA☆PowerではFour on the floorとダブステップによって実現されており、新鮮さを感じます。
ちなみに、同じく石濱さん作曲によるアイカツスターズ!ED「episode Solo」もWobble Bassが唸りまくるナンバーで、こちらはさらにダブステップ色が強くなっています。
音色
KIRA☆Powerは、BメロのWobble Bassはもちろん、曲全体を通して、シンセサイザーの音色がとても心地よいところも特徴的です。
石濱さんご自身のtweetによると、Massiveというシンセサイザーを主に使用しているようです。
KIRA☆PowerはMASSIVEのデモ音源と言ってもいいぐらい、MASSIVEしか使ってないおじさん。
— 石濱 翔(MONACA) (@MONACA_ishihama) 2015年3月9日
自分でも使ってみたくなりますね。
サビのコード進行
サビは「叶えましょう」の音形がモチーフとなって繰り返されるようなメロディですが、ここで注目したいのがコード進行です。
以下は、「叶えましょう」のトップノート(B)が、各繰り返しにおいてコードのどの部分に当たるかを表にしたものです。(歌詞の引用は何かとめんどいことになりそうなのでしませんが)
コード | Bのコード中の位置 |
---|---|
AM7 | 9th |
C#m7 | m7th |
G#m7-5 | m3rd |
AM7 | 9th |
C#m7 | m7th |
CM7 | M7th |
メロディを特徴付ける伸ばし音であるBが、このように役割を変えていくことで、色彩豊かに感じます。
こういった、EDMらしからぬコード進行の妙技も大きな魅力です。
2. フレンド
2曲目は、98話のトゥインクル・スターカップにおいて2wingSが歌った「フレンド」を取り上げます。
作曲は山崎佳祐さんです。
ソウルっぽさ
ふうりさんのソウルフルな「Hey!」とともに、ミディアムテンポの16beatが始まります。
力強い歌声とTp + Tb + T.Saxによるホーンセクションが、Four on the floorに組み合わさることで、ソウルを想起させながらも、アイカツらしくダンサブルな曲となっている印象です。
くわえて、ブレイクをともなうAメロのリズムは、Michael JacksonのRock With Youを彷彿とさせます。
ギターソロ
残念ながら上記のYouTubeの動画ではカットされていますが、Fullバージョンには、ガットギターによる秀逸なソロが収録されています。
CMajorキーのサビから短三度上に転調し、ダイアトニックスケールをベースとしたソロを展開したのち、再度CMajorのサビに収束して完結する小気味よいソロとなっています。
同じく若干Jazzyな風味のガットギターソロがあるアイドルソングといえば、モーニング娘。の「Memory 青春の光」が思い起こされます。
まとめ
もちろんこれらの要素を持っているからといって名曲になるわけではなく、結局は曲を制作された方たちのセンスによるものと言ってしまえばそれまでなのですが、特徴的な点も多々あることが分かりました。