blogですかい

仕事、プライベートで学んだことなどを発信し、その内容がたとえ少数でも誰かの役に立ったらなら、それはとっても嬉しいなって

安済知佳

声優 Advent Calendar 2016 22日目の記事です。

12月22日は安済知佳さんの誕生日です

25歳の誕生日、おめでとうございます。

安済知佳さんとは

エイベックス・ピクチャーズ所属の声優

代表作には、棺姫のチャイカ(チャイカ・トラバント役)、悪魔のリドル(首藤涼役)、響け!ユーフォニアム(高坂麗奈役)などがあります。

また、福井県出身で、アニメ・映画「ちはやふる」では方言指導を務めています。

オフィシャルサイト

http://avex.jp/chika-anzai/

ブログ

http://ameblo.jp/chika-anzai/

Twitter

https://twitter.com/Anchika_manager
Twitterは本人とマネージャが投稿しています

エイベックス・ピクチャーズについて

エイベックス・ピクチャーズはエイベックスグループ傘下で、主にアニメの映像制作を行っている会社です。

所属声優は安済知佳さん、安野希世乃さんの2人。

安野希世乃さんといえば

今年の9月3日のアイドルマスターシンデレラガールズ4thライブ神戸公演初日にサプライズで出演したのが記憶に新しいです。

炎陣のメンバーが全員揃っての純情Midnight伝説、その後のRockin' EmotionはまさにRockなEmotionに溢れていて、デレマス4thライブ全日程の中でも特に印象深いひと時でした。

安済知佳さん、安野希世乃さんともにお酒好きですが、安野さんは日本酒好き、安済さんは日本酒は苦手(過去に失敗したことがあるらしい)と、好みは対照的のようです。

最近の安済知佳さんについて

2016年10月ごろから放送されているアニメ「響け!ユーフォニアム2」はいよいよ最終回を迎えようとしています。

麗奈の想いはどのように響くのか、最後まで目が離せません。

また、響け!ユーフォラジオ2 というWebラジオが配信されています。

黒沢ともよさんと安済知佳さんのペア、朝井彩加さんと豊田萌絵さんのペアで交互に配信しており、次回は黒沢安済ペアです。お聴き逃しなく。

http://www.onsen.ag/euphonium/

7月から、シーサイドコミュニケーションズ制作の「安済知佳と朝井彩加のふたりはシンパシー」という番組が、ニコ生・ニコ動で配信されています。

シーサイドコミュニケーションズの番組では珍しく映像付きの番組で、とても見ごたえがあります。

通常の30分の番組は無料で視聴可能です。

また、10分間のシーサイドチャンネル会員限定の配信があります。

会費は毎月540円。

払う価値は十分にあります。

ぜひ入会しましょう。

http://ch.nicovideo.jp/seaside-channel

今後の安済知佳さん

2017年1月より放送の「クズの本懐」、2017年4月より放送の「サクラクエスト」での主演が発表されています。

http://www.kuzunohonkai.com/

http://sakura-quest.com/

今後のさらなる活躍に期待です。

【アイマス】ソフトウェア開発におけるCIの活用

アイドルマスター Advent Calendar 2016 14日目の記事です。

CIとは

CIとは、昨今のソフトウェア開発において品質・生産性を改善するための方法論で、Continuous Integration(継続的インテグレーション)の略として知られている。

ケイゾクテキインテグレーション?

そんなこと言われてもいまいちティンと来ません。

CI・・・

CI・・・

そうか!CANDY ISLANDだ!

CIの環境を整える

というわけで、CANDY ISLANDのメンバーと楽しく開発できる環境を作ります。

用意するもの

CIの環境構築には下記のようなものが必要です。

  • VCS(とそのホスティング環境)
  • CIサーバ
  • チャットツール
  • ビルド結果をチャットツールにPOSTする仕組み

それぞれ、下記を使用しました。

  • Git + Bitbucket
  • CircleCI
  • Slack
  • Sqale + PHP

動作の概要

f:id:oh-sky:20161214235940p:plain

  1. PCにてコーディング
  2. Bitbucketへ git push
  3. CircleCIにてビルド
  4. ビルド結果がSqale上のPHP製アプリケーションにPOSTされる
  5. Slackへ通知

動作例

この図のように、CANDY ISLANDのメンバーがビルド結果をSlackへ通知してくれます。

f:id:oh-sky:20161214235955p:plain

f:id:oh-sky:20161215000020p:plain

まとめ

CIをうまく活用して、楽しく開発しましょう。

五十嵐裕美さんの呼び方についての注意事項

声優 Advent Calendar 2016 13日目の記事です。

五十嵐裕美さん、誕生日おめでとうございます。

五十嵐裕美さんの誕生日は昭和61年12月13日、私の誕生日は昭和61年12月31日。

日の1の位と10の位が入れ替わっただけの五十嵐裕美さんに、親近感を勝手に持っています。

いよいよ三十路に突入ですね。

私は最近、三十路手前にして、腰痛に悩まされることが多くなりました。

日によっては、立ったまま靴下を履くことが困難なこともあります。

もう無理はできないなと、ひしひしと感じる今日この頃。

五十嵐裕美さんにおかれましても、無理せず、身体をいたわって活動を続けていって欲しいと思います。

本題

五十嵐裕美さんの愛称としては「ゆきんこ」が広く知られており、一般声豚の皆様方におかれましても、そのように呼んでいる方が多いのではないかと思います。

しかし、今期放送中の奇異太郎少年の妖怪絵日記にて、ややこしい事態が発生しました。

奇異太郎少年の妖怪絵日記界隈での注意事項

奇異太郎少年の妖怪絵日記とは、2016年秋季に放送されている5分アニメです。

キャストをご覧ください。

主人公である「奇異太郎」を演じるのは五十嵐裕美さん。

そしてヒロインの一人に「雪娘(雪ん娘)」というキャラクターが存在します。

つまり、奇異太郎少年の妖怪絵日記の界隈だと「ゆきんこ」ではそれが五十嵐裕美さんを指すのかはたまた登場キャラクターを指すのか判別できません。

なので、「奇異太郎役の声優のゆきんこ」と修飾をしたり、「五十嵐さん」「五十嵐裕美さん」と呼ぶのが無難です。

デレマス界隈においても注意したい点

結論から言うと、デレマス界隈では「ゆきんこ」と呼ぶのが無難です。

例えば「Cuteの五十嵐さん」と言った場合、五十嵐裕美さんを指すのか、アイドルの「五十嵐響子」を指すのか判別ができません。

ではファーストネームで呼べば大丈夫かというとそうでもなく、例えば「裕美さんの声が好き」と言った場合、五十嵐裕美さんのことなのか、アイドルの「関裕美」のことなのか判別できません。

(「関裕美」に声はない?そんなことはありません。関Pには関裕美の声が聞こえているそうです。)

といった理由で、一般Pの皆様におかれましては、「ゆきんこ」と呼ぶことで誤解の起こりづらいコミュニケーションを行えるかと思います。

一方、中の人たちは「五十嵐さん」だったり「ひろみちゃん」だったりと、呼び方がまちまちなので要注意です。

五十嵐裕美さんと同じマウスプロモーション所属であり諸星きらり役である松崎麗さんは「五十嵐さん」と呼ぶことが多いです。

また、安部菜々役の三宅麻理恵さんは「ひろみちゃん」と呼びますが、それは関裕美ではなく五十嵐裕美さんを指すのだと覚えておいてください。

まとめ

いろいろゴチャゴチャと書きましたが、これからも五十嵐裕美さんを応援し続けます。

来年の11月22日も、桜Trickのイベントで制服を着てほしい。

桜Trick!

AWS LambdaでもPHPがしたい!

AWS Lambdaでは基本的に、Node.jsやJava, Pythonを用いて開発をしますが、それらから別の言語の処理系を呼び出して動かすことも可能です。

例えば、PerlスクリプトであればLambdaのコンテナにインストールされているので、このように動かすことができます。

AWS LambdaにはPHPがインストールされていない

ので、PHPを使いたい場合には、PHPのバイナリをスクリプトと一緒にアップロードする必要があります。
AWS LambdaのAmazonLinuxのバージョンは2015.03のようなので、Amazon Linux(2015.03)のEC2インスタンスからphp-5.5.29のCLI SAPIをコピーして使用しました。
このphpの実行には libedit.so.0 が必要なので、併せてアップロードします。

作成したスクリプト

  • Node.jsからscript.shを起動 
  • アップロードしたphpのバイナリを実行可能にする
  • アップロードしたlibedit.so.0のあるディレクトリにライブラリPATHを通す
  • phpスクリプトを実行

アップロードするzipファイルの作成

├── hello.php
├── index.js
├── lib
│   └── libedit.so.0
├── php
└── script.sh

ファイル構成はこのようになっています。

zip -r hello-php.zip hello.php index.js script.sh php lib/libedit.so.0

zipコマンドでまとめます

アップロードして実行

f:id:oh-sky:20151027094204p:plain

アップロード(Lambdaファンクションの作成)

f:id:oh-sky:20151027094215p:plain

実行
Hello world.

AWS LambdaでPerlのスクリプトを動かす

LambdaファンクションはNode.jsやJavaPythonで書くことができます。
では、Lambdaで動かしたい処理を、その3つの言語のどれで書かなければならないのかというと、そんなことはありません。

LambdaのインスタンスのOSはAmazon Linuxで、幾つかの言語の処理系がインストールされています。
例えばperl/bash/awk/luaなどを使用することが可能です。(他にも使用できる言語はもっとあると思います)

プログラムを作成する

Perlで書いたHello worldAWS Lambdaで動かしてみましょう。
perlスクリプト(hello.pl)と、perlを起動するためのNode.jsのスクリプト(index.js)を用意します。

Lambdaにアップロードするため、zipでまとめる。

$ zip -r hello-pl.zip hello.pl index.js

Lambdaにアップロード

f:id:oh-sky:20151019005550p:plain

実行結果

f:id:oh-sky:20151019005633p:plain

まとめ

このように、AWS LambdaではNode.js/Java/Python以外のプログラムを動かすことも可能です。
また、プログラムの処理系以外にも色々なアプリケーションがインストールされているので、それらを活用することで活用の幅が広がりそうです。

git rmやgit mvした状態をgit stash saveするのは避けたほうが良いかもしれない

git mvしたものをgit stashで保存・復原という操作をして気になったこと

$ git ls-files
hoge

$ git status
On branch master
nothing to commit, working directory clean

$ git mv hoge fuga
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        renamed:    hoge -> fuga


$ git stash save
Saved working directory and index state WIP on master: f93d032 first commit
HEAD is now at f93d032 first commit

$ git stash pop
Removing hoge
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   fuga

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    hoge

Dropped refs/stash@{0} (96680b45ca302e312299cab38c47802c07642913)

git stash save前とgit stash pop後で状態が変わっている!

$ git rm --cached hoge
rm 'hoge'

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        renamed:    hoge -> fuga

↑ファイルhogeをインデックスから削除すると、git stash save前と同じ状態に戻る。

$ git commit -m 'rename hoge to fuga'
[master 8c198ce] rename hoge to fuga
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename hoge => fuga (100%)

$ git rm fuga
rm 'fuga'

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    fuga

$ git stash save
Saved working directory and index state WIP on master: 8c198ce rename hoge to fuga
HEAD is now at 8c198ce rename hoge to fuga

$ git stash pop
Removing fuga
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    fuga

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (d0cca5c61ae3f9af7b1c9c09eb012081f87ffcf2)

git rmでファイルとインデックスを削除してgit stash save、その後git stash popすると、ファイルは消えているがインデックスは残っている。

$ git reset --hard HEAD
HEAD is now at 8c198ce rename hoge to fuga

$ git rm --cached fuga
rm 'fuga'

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    fuga

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        fuga

$ git stash save
Saved working directory and index state WIP on master: 8c198ce rename hoge to fuga
HEAD is now at 8c198ce rename hoge to fuga

$ git stash pop
Already up-to-date!
On branch master
nothing to commit, working directory clean
Dropped refs/stash@{0} (b39c66764d2bf85fa2b5409e31a9d322b0e72c95)

git rm --cachedでインデックスだけ削除しgit stash save、その後git stash popすると、git rm —cachedする前の状態に戻る。

上記の例ではgit stash saveの直後にgit stash popしているので問題は起こらないが、間に捜査を挟むとpop時に衝突が起こる場合もあると思う。
git rmgit mvした状態をstashで保存しておくということは今までしたことが無かったし、今後もすることがそうそう無いとは思うけれど、滅多にしないことだからこそ、気をつけたい。

最近使い方を知ったPHPの文字列関数

ltrim(string $str [, string $charlist])

$strの左端から連続する$charlistに含まれる文字を除去する

rtrim(string $str [, string $charlist])

$strの右端から連続する$charlistに含まれる文字を除去する

trim()は知っているけど、左右限定のものがあるとは知らなかった。 そういった処理を書こうとしたら、 preg_replace("/^[ \t\n\r\0\v/]+", '', $str) って書くと思う。

substr_count(string $haystack, string $needle)

$haystack$needleが何回出現するかを返す

php > echo substr_count('ccccccccc', 'cc');
4
php > echo substr_count('ccccccccc', 'ccc');
3

使い方はわかったけど、名前が悪い。なぜsubstr_というprefixなのかわからない。

substr_replace(mixed $string, mixed $replacement, mixed $start [, mixed $length])

$string$start位置から$lengthの長さの分の文字を$replacementに置き換える。$lengthを指定しない場合は、$replacementの長さ分の文字が置き換えられる。

php > $string = array('mutsuki', 'kuma');
php > $replacement = array('fumi', 'ta');
php > $start = array(0, 0);
php > $length = array(2, 2);
php > var_dump(substr_replace($string, $replacement, $start, $length));
array(2) {
  [0] =>
  string(7) "fumitsuki"
  [1] =>
  string(4) "tama"
}

strrev(string $str)

$strの文字列を逆順にして返す

php > echo strrev('yamamotoyama');
amayotomamay

何に使うんだこれ?

str_repeat(string $input, int $multiplier)

$input$multiplier回繰り返した文字列を返す

php > echo str_repeat('!すでのな', 3);
!すでのな!すでのな!すでのな

何に使うんだこれ?

strpad(string $input, int $pad_length [, string $pad_string = " "])

長さが$pad_lengthになるまで$string$pad_stringを繰り返し追加した文字列を返す

php > $ships = array(array('type' => 'HC', 'name' => 'Chokai'), array('type' => 'BC', 'name' => 'Kirishima'), array('type' => 'DD', 'name' => 'Mochizuki'));
php > foreach($ships as $ship) echo str_pad($ship['name'], 10) . $ship['type'] . "\n";
Chokai    HC
Kirishima BC
Mochizuki DD

get_meta_tags(string $filename)

指定したHTMLファイル(URL可)のmetaタグ情報を連装配列にして返す

php > var_dump(get_meta_tags('http://www.yahoo.co.jp'));
array(1) {
  'description' =>
  string(282) "日本最大級のポータルサイト。検索、オークション、ニュース、天気、スポーツ、メール、ショッピングなど多数のサービスを展開。あなたの生活をより豊かにする「課題解決エンジン」を目指していきます。"
}

strtok(string $str, string $token)

$str$tokenで分割し、分割してできた文字列を返す。2回目以降は引数に$tokenのみ指定する。

php > $str = '気合い,入れて,いきます';
php > $token = ',';
php > echo strtok($str, $token) . "!\n"; while ($tmpToken = strtok($token)) echo "{$tmpToken}!\n";
気合い!
入れて!
いきます!

初回と2度目以降で呼び出しが変わるって・・・誰が使うんだこの関数?