blogですかい

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

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

声優 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度目以降で呼び出しが変わるって・・・誰が使うんだこの関数?

CakePHP3のShell

CakePHP Advent Calendar 2014 16日目

Shellの作成

src/Shell/ に作成。
例えば、 AiuraShell.php を下記のような内容で作成する。

デフォルトではAppShellクラスが無い点が、CakePHP2と異なる。
必要なら自分で作る。

上記のAiuraを実行すると下記のようになる。

Taskの作成

src/Shell/Task に作成。
例えば、KanakaTask.phpを下記のような内容で作成する。

Kanakaを実行するために、下記のようにAiuraShell.phpを変更する。

Aiuraを実行すると下記のようになる

コマンドからTaskを実行する

Kanakaタスクのmainメソッドを実行できるようにするため、AiuraShell.phpを下記のように変更する。

CakePHP2と違い、OptionParser::addSubCommand() でサブコマンドとして登録する必要がある。
また、デフォルトで呼ばれるTaskのメソッド名は execute() ではなく main()

実行すると下記のようになる。

ShellについてCakePHP2との違いまとめ

  • AppShellではなくShellを継承(必要であれば自分でAppShellを作る)
  • コマンドからTaskを実行できるようにするには、OptionParser::addSubcommand()でTaskをサブコマンドとして登録する
  • デフォルトで実行されるTaskのメソッドexecute()ではなくmain()

他にも違いはあるとは思いますが、とりあえず気になったのは上記の3点です。 (Modelの呼び出し方も変わっていますが、それについてはControllerと共通なので特に触れていません。)

日本酒は「生」が一番うまいと思います

日本酒 Advent Calendar 2014
6日目です

やっぱり、新鮮なものは「生」が一番うまい。

野菜も魚も肉も、そして日本酒も、旬な時期に生で食すのがBestなのです。

僕と生酒の出会い

僕が初めて生酒を体験したのは2014年2月23日。
しぼりたて祭り錦糸町2014』というイベントでした。

ちょうど、隣の駅である亀戸に引っ越したばかりで、なんとなく面白そうだと思い、行ってみたところ、飲む酒の全てがうまいのです。
それまで正直、日本酒は言うほど好きではなかった。
しかし、そのイベントで何種類もの生酒を飲んで衝撃を受けました。
それらはとても芳醇で、こんな素晴らしいお酒を飲める私はきっと特別な存在だと感じました。
今では私がKURAND会員。皆に勧めるのはもちろん生酒。
なぜなら皆さんもまた、特別な存在だからです。

KURANDとは

唐突に出てきた『KURAND』という固有名詞。
さぞかし気になっていることと存じます。

『KURAND』は、日本酒の定期購買サービス。
一月に一回(月末に)日本酒が届きます。
そして、届くお酒のほとんどは生酒です。
全国各地の酒蔵から毎月生酒が届く。
なんて素晴らしいサービスなんでしょう。

KURANDはお酒だけでなく、おつまみや酒粕、酒器などが同時に届きます。
おつまみは、その月に送られてくるお酒の酒蔵の、地元のものであることが多いです。
合わないわけがない。

また、KURANDの会員になると、KURANDが主催する日本酒のイベントに割引で参加できます。
僕が初めて参加した『しぼりたて祭り錦糸町2014』も、KURANDのイベントでした。

ステマでは無いアピール

ここまでKURAND推しだと、関係者だと思われるかもしれません。
関係者では無いことをアピールするために、ひとつ要望を申し上げます。
おつまみもいいけど、酒器をもっとください。

4月に登録してからこれまで、おまけが酒器であったことが一度しかありません。
たまにはカタチに残るものが欲しいのです。 芳醇な生酒を飲むのに適した、ワイングラスであったりすると嬉しいです。

何卒