かまたま日記3

プログラミングメイン、たまに日常

俺的90年代アニソンTOP20

@ojiry さんとTwitterで懐かしアニソンの話になり、面白そうだったのでやってみました。俺的ランキングなので異論などはあると思いますが、ご覧くださいw

ルール

  • 1990~1999年に放送されたアニメ (TV, OVA, 劇場版) の主題歌、挿入歌
  • 作品と歌手は重複なし
続きを読む

Little Glee Monster の新体制初ライブに行ってきた@渋谷duo

麻珠の活動休止発表以降初のミニライブに行ってきました。 この記事によると、競争率約10倍だったようです。それはともかく、リトグリの再スタートとなる貴重なライブに参加できてよかったです。今後も応援していきます。

f:id:kamatama_41:20170428195150j:plain

開催場所の渋谷duoはリトグリがはじめてワンマンライブを開催した場所です。また、Girls be Free!のMVの最後のライブ映像の場所でもあります*1

www.youtube.com

セットリスト

  • Seasons of love (アカペラ)
  • 好きだ
  • Go my way (新曲)
  • HARMONY
  • SAY
  • だから、ひとりじゃない
  • はじまりのうた (アンコール)

詳細・感想など

  • 麻珠パートの多くはアサヒが担当していた。今後はアサヒがある程度メインパートをやっていくものと思われます
  • しかし既存曲はどうしてもまだ麻珠と比べてしまい違和感が拭えない感じが。聞いていく内に慣れてくるのかなとも思いますが
  • 新曲のGo my wayは道のりは険しいけど進んでいく的な歌詞で*2、今のリトグリの決意表明のように感じた
  • MCは最初かれんが麻珠のことについて「中学生の時から一緒だったし、最初は受け入れがたかった。色々話しあいをしたけど、麻珠の決意は固かったので今は応援している」
  • 次に芹奈が今後の決意表明「武道館の夢は叶った。次の夢の2020年のオリンピックに向かって、とても大きい夢だけど絶対諦めないのでついて来てほしい」
  • 新曲「だから、ひとりじゃない」が5/31発売。リリイベも7都市で開催
  • 秋ツアーの詳細発表 (20都道府県23公演)

*1:たぶんこれが前のワンマンの時だと思われます 参考: http://natalie.mu/music/news/132056

*2:自分が聞き間違えて無ければ

リトグリ麻珠 無期限活動休止

寝耳に水のこのニュース、、と言うわけでもなく、春ツアーのときから麻珠が脱退するのでは的なツイートがTwitterで散見されており漠然とした不安はありましたが、ついに来てしまったか、という感じです。

今思うと、春ツアー最終日麻珠の調子が悪そう と私が感じたのも、自分のリトグリ最後のライブということで色々思うことがあったのかなと推測されますね。

活動休止という選択は麻珠の歌手としてさらにレベルアップしたいというポジティブな決断だし、他のメンバーも彼女の決断を尊重し、応援しているので自分も応援したいです。麻珠が抜けたことで彼女のパートをどうするんだろうとか、コーラスの厚みが減ってしまうのではないだろうかという不安は正直ありますが、それらを乗り越えた新しいリトグリを期待したいと思います。

ガオラー歴8ヶ月ですが、麻珠がいたリトグリを生で経験できたのはとても幸運なことでした。Good Luck.

追記

2017年6月30日に、麻珠リトグリ卒業と契約解除が発表されました。

Little Glee Monsterに関する重要なお知らせ

Little Glee Monster のライブに行ってきた@東京国際フォーラム

春ツアー最終日、行ってきました。最終日ということでメンバーガオラーともども気合入ってたと思います。秋ツアー決定したということで、楽しみですね。

  • 基本的なセットは武道館と同じ流れ
    • オレンジ, 永遠に, Girls be Free, 君のようになりたい が無かった。
  • たまに主旋律が聞こえないことがあった。 音響の問題か歌唱ミス?
  • 麻珠がちょっと調子悪そうに感じた、珍しい
  • 途中のMCでご当地CMソング集
  • アサヒのセッションは、"雨で湿気が多い、てるてる坊主忘れた"
  • 芹奈が武道館でJOYの歌詞間違え謝る、manakaも...?
  • 最後のMCで芹奈が "何百年後もみんなの心に残る歌手になりたい"、ぐう感動
  • 5/22 Earth, Wind & Fire の武道館公演のオープニングアクト決定
  • 秋ツアー決定

f:id:kamatama_41:20170409202053j:plain

gradle-embulk-pluginを作った #Embulk

TL;DR

EmbulkのJavaプラグイン開発のときにいろいろ便利につかえるGradleのプラグインを作りました。

github.com

plugins.gradle.org

使い方

最低限以下の記述を build.gradle にすれば動きます。最新バージョンは 0.5.0 です (2019/03/24現在)

plugins {
  id "com.github.kamatama41.embulk" version "0.5.0"
}

embulk {
    version = "0.8.18"  // 使うEmbulkのバージョン
    category = "file-input"  // 作るプラグインのカテゴリ (embulk newの時に指定するカテゴリ)
    name = "xlsx"  // 作るプラグインの名前

    // 作者名、メールアドレス、ホームページ (gemspecタスク用)
    authors = ["A User"]  
    email = "a.user@example.com"
    homepage = "https://github.com/a.user/embulk-input-xlsx"
}

何ができるか?

プラグインテンプレート生成

newPlugin タスクを実行することで embulk new コマンドを実行したときと同じテンプレートを生成することができます。*1

% gradle newPlugin
Starting a Gradle Daemon (subsequent builds will be faster)
:embulkSetup
Setting Embulk version to 0.8.18
:embulk_new_java-file-input_xlsx
2017-03-21 04:12:05.020 +0900: Embulk v0.8.18
Creating embulk-input-xlsx/
  Creating embulk-input-xlsx/README.md
  Creating embulk-input-xlsx/LICENSE.txt
  Creating embulk-input-xlsx/.gitignore
  Creating embulk-input-xlsx/gradle/wrapper/gradle-wrapper.jar
  Creating embulk-input-xlsx/gradle/wrapper/gradle-wrapper.properties
  Creating embulk-input-xlsx/gradlew.bat
  Creating embulk-input-xlsx/gradlew
  Creating embulk-input-xlsx/config/checkstyle/checkstyle.xml
  Creating embulk-input-xlsx/config/checkstyle/default.xml
  Creating embulk-input-xlsx/build.gradle
  Creating embulk-input-xlsx/lib/embulk/input/xlsx.rb
  Creating embulk-input-xlsx/src/main/java/org/embulk/input/xlsx/XlsxFileInputPlugin.java
  Creating embulk-input-xlsx/src/test/java/org/embulk/input/xlsx/TestXlsxFileInputPlugin.java

Plugin template is successfully generated.
Next steps:

  $ cd embulk-input-xlsx
  $ ./gradlew package

:newPlugin

BUILD SUCCESSFUL

Total time: 13.166 secs

既存Gradleタスクを網羅

Embulkのプラグイン開発時、最初に embulk new java-input foo のようなコマンドで雛形を生成すると思うのですが、そのときに出来る build.gradle で定義されてるタスクや処理はすべて利用可能です。具体的にはこのテンプレートに記述されてる以下のタスクになります。

これらのタスクはプラグイン側で定義してるので、書く必要が無くなります。*2

"org.embulk:embulk-core" の依存関係を省略可能

プラグイン側で、指定した version に対応したライブラリを追加するので以下の compile provide の記述を書く必要がありません。

dependencies {
    compile  "org.embulk:embulk-core:<embulk-version>"
    provided "org.embulk:embulk-core:<embulk-version>"
}

任意のEmbulkコマンドをGradleタスクとして実行可能

embulk_* のタスクを実行することで任意のembulkコマンドを実行できます。コマンド引数は _ で区切ります。

たとえば、 embulk_--version タスクは embulk --version が実行されます。

% ./gradlew embulk_--version
:embulkSetup
:embulk_--version
embulk 0.8.18

BUILD SUCCESSFUL

Total time: 4.129 secs

embulk_gen_install_embulk-input-hoge タスクは embulk gem install embulk-input-hoge が実行されます。

% gradle embulk_gem_install_embulk-input-command
Starting a Gradle Daemon (subsequent builds will be faster)
:embulkSetup
:embulk_gem_install_embulk-input-command
2017-03-22 07:21:11.578 +0900: Embulk v0.8.18
Successfully installed embulk-input-command-0.1.4
1 gem installed

BUILD SUCCESSFUL

Total time: 13.134 secs

テスト実行が簡単にできる

また、開発中のJavaプラグインをテスト実行(run, preview, guessなど)する場合、以下のような手順を踏むことになると思います。

  1. gradle package でJarライブラリを作る
  2. embulk run-L オプションでクラスパスを追加する

embulk_run タスク*3はそれを全部1コマンドにまとめたタスクです。さらに

  • embulk_run の時のconfigファイルはデフォルトで config.yml
  • embulk_guess の時の出力ファイルは output.yml

指定されます。つまり

  • gradle embulk_run = gradle package && embulk run config.yml -L .
  • gradle embulk_guess = gradle package && embulk guess config.yml -o output.yml -L .

とほぼ同義です。設定ファイルのパスを変えたい場合は プロパティ configYaml, outputYaml を渡してて下さい。

$ ./gradlew embulk_guess -PconfigYaml=myconfig.yml -PoutputYaml=myoutput.yml

さいごに

Embulkプラグイン開発者の方は、是非、使ってみて下さい!

*1:実際の処理でもembulk newを実行したあと必要なファイルをコピーしてきてます

*2:もちろん必要があれば上書きできます

*3:preview, guess, cleanupも同様

CicleCIでDockerイメージを再利用する

CircleCI v1の話です、v2.0になったらもうちょっと楽になってそう(未確認)

基本的には以下のページを参考にしてます。

Caching docker image on CircleCI

1. キャッシュ用のディレクトリを用意する

例えば ~/docker-images、これを circle.ymlcache_directories に追加しておく

dependencies:
  cache_directories:
    - "~/docker-images"

2. イメージのタグを生成する

Dockerfile と依存ファイル達の sha1sum を取る。

たとえばRailsアプリの場合、gemだけイメージに含めるなら GemfileGemfile.lock これらに変更が無ければ同じ値になるはず。(なのでキャッシュが使えるはず)

tag=$(sha1sum Dockerfile Gemfile Gemfile.lock | sha1sum | cut -d' ' -f1)

アプリ全体をイメージに入れるなら全ソースファイルを対象とする

3. ビルドしたイメージをdocker saveする

こんな感じ

docker save ${image_name}:${tag} > ~/docker-images/${image_name}-${tag}.tar

4. 再ビルドするときにキャッシュを使う

イメージのタグを算出してキャッシュディレクトリにあったら docker load する

  if [[ -e ~/docker-images/${image_name}-${tag}.tar ]]; then
    docker load -i ~/docker-images/${image_name}-${tag}.tar
  else
    # 略. buildしてsaveする
  fi

ローカルにGitサーバを立ち上げる with Docker

Gitサーバ(というかGitHub)のレポジトリに対してcommitとかpushするOSSのテスト用に作りましたが、必要無くなったのでw 別リポジトリにしておきました。

github.com

READMEにも書いてますが、cloneして create_git_server.sh を叩くと2222ポートが開いてるGitサーバが出来上がります。

  • レポジトリの実体は work/git-server/repos 配下に作られていて、それがマウントされている
  • SSHの公開鍵は ~/.ssh/*.pub を登録してるので、無いと動きません
$ git clone ssh://git@localhost:2222/git/repos/awesome-repo.git
Cloning into 'awesome-repo'...
Warning: Permanently added '[localhost]:2222' (ECDSA) to the list of known hosts.
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 1), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.
Resolving deltas: 100% (1/1), done.
Checking connectivity... done.

$ cd awesome-repo

$ git log
commit f35d53a97488fac01267d094551df59a53e7ae07
Author: xxxx xxxx <xxxx@example.com>
Date:   Mon Mar 6 02:10:30 2017 +0900

    Add hello.txt

commit b15e864ddade594953ef671d1a2d3b4a0e3e9b0d
Author: xxxx xxxx <xxxx@example.com>
Date:   Mon Mar 6 02:10:30 2017 +0900

    my first commit