phax/ph-cssを使う

phax/ph-css の使い方

b080e264-d67f-11e4-845e-c1f3fdff6678

便利

Protocol Buffers を PHP から使う

Protocol Buffers とは

JSON, XML などは人間の目に比較的優しい形 [要出典] でデータを表現することができます。その反面、データが大きくなったり、データ解析が複雑だったりします。

Protocol Buffers は、通信や永続化などを目的に、データサイズの小ささやパース時のパフォーマンスなどを追及したシリアライズフォーマットです。データ構造はあらかじめプロトコル定義ファイル(.proto)に定義をしておき、Google が配布している protoc プログラムによって、各プラットフォーム上でのシリアライザ・デシリアライザを含めた関連コードが自動的に生成できるようになっています。

したがって利用する際の基本的な手順は大雑把に次のようになります

  1. データ構造を IDL で定義した proto ファイルを作成する
  2. proto ファイルからProtocol Buffersの利用に必要なコード(シリアライザ・デシリアライザなどが含まれる)を生成する
  3. 生成されたコードを利用したコードを書く

データ構造をはじめに定義し、そのデータ構造に応じたコードをあらかじめ用意しておくあたりが、JSON, XMLなどと異なります。

環境構築

さて、PHPから Protocol Buffers を使うために環境構築を行いましょう。まずは protoc プログラムをインストールします。

また今回利用するPHPライブラリは pear の Console_CommandLine を必要とするため、これも入れます。

最後に PHP ライブラリを composer で導入します。

インターフェース定義ファイルの作成

Google の proto3 Language Guide を見ようみまねで、簡単なものを定義してみましょう。次のように search_request.proto ファイルを作成してください。

インターフェース定義ファイルは直感的でわかりやすいので、きっと解説はいらないでしょう…。

Protocol Buffers 利用のためのコード生成

composer でひっぱってきたファイルのなかに必要なコードの生成を補助してくれるファイルがあるので、それを使いましょう。

今、ディレクトリ構造が以下のような形だったと仮定します。

vendor/bin 下 に protoc-gen-php.php というファイルが存在しますが、これを使うと簡単に必要なコードを生成することができます。さっそく SearchRequest データ構造を PHP で扱うためのコードを生成してみましょう。

すると src/Dist/Protobuf 下に SearchRequest.php というファイルが生成されるはずです。

これで準備が完了しました。

Protocol Buffers を利用する

まずは SearchRequest のインスタンスを取得し、各フィールドをセットして、シリアライズしてみます。

以上のようなコードを実行すると以下のようなバイナリが出力されます。

バイナリサイズは 30 byte でした。対応する標準的なJSONだと 77 byte あるのでおよそ半分になっていることがわかります。

またデシリアライズは次のようなコードで可能です

`

実行すると次のようになります

ちゃんともとのPOJOを復元できていますね

PHPのアレコレ

たまにしかPHPを触らないので色々問題が発生する

Java, Scala のお仕事依頼お待ちしております → @gomi_ningen

複数環境に対応する terraform のディレクトリ構成と tfstate の管理

terraform はディレクトリ内のすべての tf ファイルを実行対象とするので、環境ごとに変数を変えるなどの際には module という機能を使うと良い。このときのディレクトリ構成は terraform が公式でこれというものは定めていないので各々やっていく必要があるが、よさそうな構成は以下の2つの記事の内容だった。

後者のほうがよりシンプルで個人的には好き。さて、これらのディレクトリ構成をとった場合、 tfstate はそれぞれの環境ごとに作成される。この管理をどうするかという問題が発生する。

基本的には単純に terraform remote config コマンドをそれぞれのディレクトリに入った瞬間叩くという運用になるかと思いますが、ちとダルいので以下のようなシェルスクリプトを書くと良さげ。

それぞれ dev から実行すれば dev/terraform.tfstate を、 prod から実行すれば prod/terraform.tfstate を remote state として取り扱えるようになる。

その他

multiple provider 機能も使わねばならんかったのでリンクだけ貼っておく

terraformingを試す

AWSの管理にterraformを導入したいけれど、既存のリソースはもうすでに存在しちゃっているということは、まあよくあると思います。手で tf ファイルと tfstate ファイルをいじればなんとかやってやれないことはないですが、幸いなことにこれを支援してくれるツールが存在します。それが terraforming です。

terrraforming の導入

terraforming を取ってくる Gemfile 書いて bundle install すれば、おk。

terraforming の使い方

とても簡単。bundle exec terraforming [service_name] --profile=[$PROFILE]で既存のawsの構成通りのtfファイルのコードを生成してくれます。以下のような具合。

これを tf ファイルに追記すればよいのですが、 tfstate にこれらのリソースがあることが記されていないため、このまま plan, apply をすると既存のものを無視して構築を始めてしまいます。これを防ぐためには tfstate を適切に更新して、 plan で差分が出ない状況に持っていく必要があります。そこで terraforming iam --profile default --tfstate --merge=./terraform.tfstate とすると既存の tfstate に既存のAWSインフラの state を追記してもらえます。こわければ tfstate の backup を取っておいたほうが良いかと思います。

とても良いですねー。

パシフィコ横浜イベント帰りにオススメなお店

パシフィコ横浜イベント後、みなとみらい線の横浜方面混みますよね? 横浜の飯屋もごった返します。中華街に中華を食いに行くのも良いですが、個人的には洋食が好みなのでそういうお店に行きたい。

で、見つけたお店が元町・中華街駅からすぐのイタリアン+海鮮串な創作料理を出すお店「海串ポルト」。出てくる料理、ひとつも外れがないので超オススメです。tea party2016、戸松遥さんライブ後に2回行ったのですが、ほんとうにおいしかった。

お通しはこんな感じです。美味しい。とても美味しい。

串料理などはメニューが変わったりするっぽいので、食べログとかを見るとよさそう。ぜひぜひ〜。

https://tabelog.com/kanagawa/A1401/A140105/14060895/

戸松遥さんのライブ、初めて行ってきました。普段とクラスタが違いすぎて、アウェイでしたが、楽しめた。ファン層はわりと年齢がいっている印象を受けて20代後半から30代前半がメインに見えました。とまっちゃんの歌手デビューごろからおっかけてそうな人が多そうで、コールなんかもわりと洗練されている印象をうけました。普段行っているイベントと比べてマナーも良い感じで快適だった。

生バンドライブやっぱり良いですねー。電子音系の曲が多いアーティストだとやっぱり難しいのだけれど、なんとか頑張って生バンドのイベントやってほしい。ライブ向けにコーラス数とかを変えられるのが魅力ですよね。Q & A のラストサビへのブリッジ部分のコール、長さが2倍になっててすごい盛り上がった。

一回の一番前のブロックでしたが、戸松遥さん顔が小さいので表情がよく見えなかったのが残念。ふつうこういうイベントは前のスクリーンに本人の映像が大きく流れたりするものだけれど、そういうのがちょっと欲しいかなと思いました。

terraformを試す

terraformのチュートリアルを見ながら、いろいろ試してみた記録その1。結構使い勝手はよさそうなので、こういうツールでちゃんとAWSのリソースを管理していきたい。

terraform の導入

導入は brew install terraform で OK

EC2インスタンスを立てる, 更新する, 破棄する

とりあえず簡単なところから。以下のファイルを example.tf という名前で作成する。

で、 terraform plan を実行するとこれからAWSに対して何を行うのかを表示してくれる。なにもないまっさらな状態であれば以下のような出力になるだろう。

terraform apply を実行すると、実際にリソースが作成される。さっきの example.tf を編集してたとえば t1.micro にして、 terraform plan をするとちゃんと instance_type に差分がでる旨の表示が出る。スタックの削除は terraform destroy で行ける。

リソースの依存性を扱う

以下のように、Elastic IPを設定する。Elastic IPに対するパラメタは instance しかない。そこには ${aws_instance.example.id} とあるがこれは、 EC2 インスタンスのidが埋め込まれる変数の役割を持つ。

もうすでに EC2 インスタンスは立ち上がっており、 aws_eip の部分だけ追記をして terraform plan を実行すると以下のようになり、この挙動がわかりやすい。

プロビジョニング

以下のように provisioner 内の command を設定することによりプロビジョニングを行える

まっさらな状態でこれを実行すると、file.txtがちゃんと生成される

変数

variables.tf なるファイルを作る

そして、example.tf の provider を以下のように変えてみよう

variables.tf で定義してある region についての挙動はもうおわかりだろう。問題は access_keysecret_key であるが、これは default が設定されていないので apply 時に渡す。たとえば terraform apply -var 'access_key=...' -var 'secret_key=...' のような具合だ。

また conf ファイルから読み込みたければ、たとえば dev.tfvars という名前で以下のようなファイルを作成し terraform apply -var-file ./dev.tfvars を実行すれば良い。

環境変数からの呼び出しは TF_VAR_access_key などという名前をつければいける。

出力

terraform apply を実行した結果のうち、重要な値の出力を得たい場合は以下のような形のコードを書けばよい

すると apply 時に以下のような出力が得られる

またapply後に出力だけ得たい場合は terraform output ip などとすれば良い。

Clover fes. に行ってきた

東京都北区、王子駅前にある 北とぴあ さくらホールが会場でした。この会場にくるのは初めてでしたが、音も聞き取りやすくステージも近くて良いホールでした。昼・夜通しでの参加です。

さて、イベントなのですが、とにかく森永千才さんが素晴らしかった。イベントでの歌のステージは初で、地声に近い演技でのレギュラー獲得も初だそうで、特に夜の部の森永千才さんの終わりの挨拶がとにかく印象的でした。以下、様子です。

人が報われる瞬間に立ち会うとき、それを見た人間も幸せという言葉が適切かどうかはわからないですが、あんハピらしい言葉を使っておけばhappyになれるだなということを実感しました。2週連続でこういう瞬間に立ち会えるイベントに参加できるとは思っていなかった。こんなものを見せられたら応援したい気持ちになっちゃいますね。歌の方も「私の息継ぎのためにご協力お願いします」というの、嬉しかったですね。チモシーを優しく抱えながら歌っていたのが印象的でした。

イベント冒頭では二階席後ろや一階席の後ろに山村響さんと吉岡茉祐さんがやってきてくれました。こういう演出ほかのイベントでも是非やって欲しいですよね。前の席がキャストとの距離が近いのはまあ当たり前なのですが、こういう工夫をすこし入れてくれるだけで、後ろの席の人の心の満たされ具合は全然違うはずなのですよね…。

さて、コーナーの部では、やっぱり夜の部の森永さん、土下座が印象に残りました。昼は1階G列、夜は1階T列でした。昼はステージとの距離も近くて、何回か山村響さんと目があった気が(典型的勘違い)。夜の部の朗読劇では、安野希世乃さんが床に転がるという捨て身の芸を見せてくれて声優さんって大変だなぁ…という気持ちになりました。昼の朗読劇は比較的大人しめだった(花守さんは焼き鳥ネタをぶっこみまくってきてたけどw)。その反面、夜は大暴れでしたねー。これぞあんハピキャスト陣という感じですね。ニコ生でずっとみてて、とにかく雰囲気の良さが伝わってきていて、イベントに迷わず申し込みました。

ライブパートは、パンチマインドハピネスと明日でいいからは良いのはもういうまでもないのですが、わいわいお天気ロードが聞けてよかった。ちなみになんですが、パンチマインドハピネスでサイリウムを激しく降りすぎてサイリウムが折れました。

そして、ゆみりさんもお誕生日おめでとうございます! 陰からこっそりと応援しています!

原作もつづいてますし、森永さんは実はこっそり2役持っているので、やっぱり続きがみたいなぁ…。

三者三謡に行ってきた

良かった。

会場は、有楽町駅前のとある電気屋の上の階にあるよみうりホールでした。会場が若干せまいのもあり、入場まわりは若干混雑と混乱が見られましたが、ひとまず定刻どおりに開始。三者三葉の全楽曲を歌いきるという激しいイベントです。

最初はクローバーかくめーしょんからスタート。その後、小芝居を交えつつ出演者が大集合。和久井優さん、金澤まいさん、今村彩夏さん、Machicoさん、鈴木愛奈さん、桃河りかさん、赤羽根健治さん、西明日香さん、渡辺はるかさん、夏野菜緒さん、桑山琴音さん、田中ちえ美さんという超大人数イベント。本当に豪華ですね…。

イベントに限ったことではないですが、とりぷるふぃ〜りんぐの3人、あだ名を決めながらも普通に苗字呼び捨てで呼ぶのが混ざるのがとても良かったですね…。最初のほうのニコ生とかは、かなりぎこちなさがあったのですが、回を重ねる毎にちゃんと良い雰囲気になってきて見ていて楽しかったです。あとはニコ生で頻繁に暴れていた西明日香さんが、イベントでも暴れていて良かった。今回、被害にあったのは桃河さんと和久井さんでした。作品自体のはなしになりますが、双葉役の金澤まいさんは、なんというか、とても病みつきになる声を出していて良かった。この演技のパターンあんまり聞いたことない気がする…。クセはあるけど、嫌な感じが全然なくて、これからの出演作品をチェックしたいですね…。あやむらの冷たい感じのツッコミとか怒ってる顔とか知らぬ間に芸人的立ち位置に行く感じとてもいい。和久井さんはいつまでもピュアなままでいてほしい…。とりぷるふぃ〜りんぐ劇場でやっぱり一番好きなのは「初めて3人が出会ったときの再現」。何回あのネタみても面白い。

ダンスはどの曲も振り結構激しくって、今回のイベントの前にあったミニライブイベントなどで、わりと苦戦している感じがあったのですが、今回のイベントでは、みんなキレッキレって良かった。きっとたくさん練習したんだろうなぁ…。あとファン側もこの手のイベントにしてはコール等々、良い感じにそろっていて良かったです(ちょっとマナーの悪い方が数人いたのが残念でしたが…)。

ライブパートでよかったのは、西山と近藤のなんだかんだコンビネーション、これは圧倒的にMachicoさんパワーでした。双葉と桜のとぅいんくる☆そんぐはダンスも歌もかわいかった。薗部と葉子のラズベリー畑でつかまえても良かった。薗部役の桃河さんはほんとに演技していて楽しそうでした。歌詞もダンスも完全に自分のものにしていました。そして、ステージ上を走り回っていて大変そうだったw。本人のふるまいも薗部っぽかった。あと、歌ってない出演者がステージ横に座って見ているというライブの演出もとても良かった。他のイベントでもこういう方式をとってほしい。

たくさんの曲を歌いおわったあとは、ぐーちょきパレードからの締めの挨拶という流れになりました。ぐーちょきパレード歌ってるころには出演者のみなさん涙がこみ上げてきてる雰囲気がありました。きっと出演者もファンもこの曲がいつまでも終わらないでくれ、という気持ちになっていたのではないでしょうか。赤羽根さんが最後の挨拶で言ってたのですが、やっぱり出演者のみなさんの全力感とか気持ちをすごい感じるイベントでしたね…。レギュラー出演自体が初めてな方のほうが多い作品だし、イベント慣れしてない方も多いので、変にこなれてないし、全員が次に何が起こるか、不安を抱きつつも、大きなステージを楽しんでいる感じがあって、一ファンとしてやはり全力の応援で応えたい気持ちになりました。

あとはMachicoさんが、西山ほど長いセリフを演技したのは実は初めてと言っていて、それがとても意外だった。歌もダンスもキレッキレで、堂々としていてカッコ良かったし、かわいかった。渡辺はるかさんもボロボロ泣いてましたね。桃河さんの「ドキドキそわそわして眠れなかった」「三者三葉という作品ははじめて30分アニメに出演した作品でありまして、1本がこんなにながいのか、1本でこんなにセリフがあるのか…」という挨拶が特に印象に残っています。とりぷるふぃ〜りんぐの3人に回る前に、みんなボロボロ泣き始めて、普通にもらい泣きしてしまった。監督も作画監督も初の作品なそうな。夏野さんもレギュラー初めてと言っていましたね…。夏野さんはフリフリの衣装が本当にかわいかった。

金澤まいさんの口から「小田切双葉役として第一候補に残ってるよって言われたときのことをすごい鮮明に覚えていて、そのときは嬉しさと不安でいっぱいで、今日のことなんか考えられないくらいいっぱいいっぱいだったんだけど、今この場にたってああ、もうこのときがきちゃったんだなと思いました」という言葉がこの日一番印象深かった言葉だった。

あんまりまとまりのある文章にならなかった。とりあえず本当に良いイベントだったし、原作はまだ続いているので、なんらかの次の展開があることを強く期待しています。3時間半近い熱いステージほんとに良かった。出演者、スタッフのみなさんほんとうにありがとうございました。

Cのコードがどのように処理されるのか

プリプロセッシング

空のファイルのプリプロセッシングを進めてみる

続いて、簡単なコードを書いてみた上で…

#define を使って見ると…

#include の動きは単純にソースコードをガバッと持ってくるだけ。コメントの除去とかもこのタイミングの模様。

コンパイル

プリプロセッサの出力をソースにしてアセンブリコードを生成する。
空のプログラムを流してみる

続いて int i = 1; とだけ書かれたコード

さすがにつまらん…。単純な関数とかはこんな感じ。まあここらへんは別の記事とかで…。

アセンブル

アセンブリコードからバイナリの生成を行うフェーズ。

あっ、ハイ…って感じだ。次のコードを試してみる。

リンク

実行可能なバイナリにする。ライブラリや他の必要なコードとの結合を行う。

参考にしたページ

ありがとうございます 🙏