Thanks Driven Life

日々是感謝

適当な日本人の名前や住所をランダムに作れる gimei を emacs lisp に port した

経緯

mattn.kaoriya.net

ビッグウェーブに乗った

過去

人名をランダムに生成する emacs lisp fake-full-name.el - Thanks Driven Life

こんな記事を書いたこともありました。この elisp はちょくちょく仕事でも使っていて、ちゃんとリポジトリ作成しようかなーでもなーって悩んでたところ、gimei の話題が見えましたので、あらためてこちらの方を作成しました。

現在

github.com

Usage

https://github.com/gongo/emacs-gimei#usage

まずは人名:

(require 'gimei)

(setq name (gimei/new-name))   ;; [cl-struct-gimei:name]

(gimei/kanji-of name)          ;; "浅野 深桜"
(gimei/hiragana-of name)       ;; "あさの みお"
(gimei/katakana-of name)       ;; "アサノ ミオ"

(gimei/last:kanji-of name)     ;; "浅野"
(gimei/last:hiragana-of name)  ;; "あさの"
(gimei/last:katakana-of name)  ;; "アサノ"
(gimei/first:kanji-of name)    ;; "深桜"
(gimei/first:hiragana-of name) ;; "みお"
(gimei/first:katakana-of name) ;; "ミオ"

;; 男性名/女性名 を明示

(gimei/kanji-of (gimei:new-male))   ;; "篠田 繁夫"
(gimei/kanji-of (gimei:new-female)) ;; "稲葉 澪"

住所はこんな感じ:

(setq address (gimei/new-address))  ;; [cl-struct-gimei:address]

(gimei/address:kanji-of address)    ;; "山梨県杵築市宮浦"
(gimei/address:hiragana-of address) ;; "やまなしけんきつきしみやのうら"
(gimei/address:katakana-of address) ;; "ヤマナシケンキツキシミヤノウラ"

(gimei/address:prefecture:kanji-of address) ;; "山梨県"
(gimei/address:city:hiragana-of address)    ;;"きつきし"
(gimei/address:town:katakana-of address)    ;; "ミヤノウラ"

変数に受けずに直接呼び出すことも可能:

(gimei/kanji)    ;; "宮原敏也"
(gimei/hiragana) ;; "あだちてつ"
(gimei/katakana) ;; "キシモトコタロウ"

(gimei/address:kanji)    ;; "神奈川県河内長野市藤助新田"
(gimei/address:hiragana) ;; "みえけんわたりぐんやまもとちょうきたじゅう"
(gimei/address:katakana) ;; "オオサカフコユグンシントミチョウナカノバタチョウ"

使用例

(require 'cl-lib)

(cl-loop for i from 1 to 10
         do (let ((name (gimei/new-name))
                  (address (gimei/new-address)))
              (insert "\"" (gimei/kanji-of name) "\""
                  "," "\"" (gimei/katakana-of name) "\""
                  "," "\"" (gimei/address:kanji-of address) "\""
                  "\n")))

;; => "村井 建喜","ムライ タテヨシ","宮崎県稚内市平成"
;;    "樋口 一","ヒグチ ハジメ","岩手県遠賀郡遠賀町下川上"
;;    "森 寿英","モリ トシヒデ","静岡県八丈島八丈町上磯分内"
;;    "柏木 桃世","カシワギ モモヨ","山梨県比企郡嵐山町新町"
;;    "金田 充扇","カネダ ミオ","青森県吾妻郡草津町木島"
;;    "井口 静江","イグチ シズエ","長野県相楽郡精華町清尾"
;;    "多田 征蘭","タダ セイラ","岡山県雨竜郡沼田町金山沢"
;;    "松本 範人","マツモト ノリヒト","熊本県羽咋市西恋ケ窪"
;;    "渡辺 生夏","ワタナベ ミナツ","山口県霧島市引佐町栃窪"
;;    "川島 健郎","カワシマ タケオ","岐阜県東白川郡矢祭町猫田"

即席テストユーザ CSV ファイル

おまけ

Emacs Lisp って YAML parser 無いんですね。無かったので オリジナルデータ を alist に変換して gz で配置するなどして対処しました。

まとめ

これでテストデータもばっちりですね!テストしていこう!!(この elispちゃんとテスト書きました)

TravisCI で composer install のキャッシュを取る

目的

早く速くビルドしてくれ頼む 🙏

手順

  1. container-based でビルドが走るように設定する
  2. composer install がキャッシュ置く場所を .travis.yaml に書いとく

Use container-based stack and caching of TravisCI · gongo/merciful-polluter@91bffba

sudo: false
cache:
  directories:
    - $HOME/.composer/cache

簡単

結果

Job #28.1 - gongo/merciful-polluter - Travis CI

f:id:gongoZ:20150604131832p:plain

しっかりキャッシュ効いてるっぽい 💪

まとめ

そんなわけで PHP7 でも register_globals が再現できるようになった ので、安心して PHP7 にアップデートしましょう!!!

参考

Bye bye "twada-savannah"

f:id:gongoZ:20150519192734p:plain

半年ぐらい前に立ち上げた、カバレッジが低下するとライオンがコメントを書き残してくれる GitHub Webhook Service である twada-savannah ですが、本日 5/19 を持ちましてクローズさせていただきます。長年のご愛好ありがとうございました。

理由

_人人人人人人人_
> 使ってない <
 ̄YYYYYYY ̄

そんなわけで

使ってないし、Heroku の最近の価格のあれもあって残しててもしょうがないので削除しました。 なんかこう、いい感じのサービスの閉じ方みたいなのを調べてたんですが、気にせずまるっと消しました。お疲れ様でした。

まとめ

みんな!ライオンが見てなくてもサバンナのこと考えてカバレッジ大事にしてこうな!!

YAPC::Asia Tokyo 2015 トーク応募してみました

YAPC::Asia Tokyo 2015

今年でファイナルという YAPC::Asia Tokyo に初参加しようと思っており、せっかくなのでトークも応募してみました。

昔の「普通」から今の「普通」へ繋ぐ "安心の架け橋" - YAPC::Asia Tokyo 2015

トーク内容は ↑ にも書かれていますが、とりあえず Agile Japan 2015 サテライト<沖縄> の発表内容 に、インフラ整備やチーム態勢についても加えた内容にしようと考えています。

仕事内容も一区切りついたころなので、自分たちがやってきたことをどこかでまとめておきたいというのがありました。 それならばイベント駆動でやってみよう、といったところです。

なので内容としてはただの「やってみました」系のふりかえりみたいなものなので、 聞く人によっては少し物足りないかもしれませんが、もし御興味があれば!


現在集まってるトーク、どれも面白そうなので採択されるかかなり怪しいですが、もし採択されてもされなくても、当日はビッグサイトでお会いしましょう!

Turnip 1.3.0 リリースしました

Release Version 1.3.0 · jnicklas/turnip

リリースノートのとおり、1.2.4 との大きな差は、Ruby 1.9 以下のサポートを排除したことです。

現時点ですぐ Ruby 1.9.3 で動かないというわけではありませんが、 今後あらたにコードを追加していく時は Ruby 2.0.0 以上の機能を使うことに躊躇いがなくなる、ということです。

ちなみに、Ruby 1.9.2 は既に動かないと思います。

Agile Japan 2015 サテライト<沖縄> に参加 / 発表してきました

Agile Japan 2015 サテライト<沖縄> - Java Küche | Doorkeeper

発表した話は後ろで書きます。

セッション

基調講演 1, 2

2日前に行なわれた 本会場 での基調講演の録画動画を見ました。

Janet さんの「アジャイル・テスティング」というタイトルからしてテスト技法みたいなイメージがあったけど、 どちらかというと「テストを通してチーム/メンバー間でのコミュニケーションをどうすべきか」みたいな話題でした。 特にテストのタイミングになると「質問」というフェーズから様々な情報の共有が行われるので そこでしっかりしていこう、みたいな話だったと思います。多分。なるほどなー。

横塚さんは、正直なところ発表を見る前は

「東京海上日動システムズ株式会社 顧問」
って肩書だし、すごい堅い上に「なんちゃってアジャイル」について語るのでは

みたいなイメージだったのですが、そんなことはなくて、ものすごい(いい意味で)Agile おじさんでした。 中期経営計画の話題になったときは、諸事情により面白かったです。

事例紹介セッション (1):『ここんところと、これからと』

ここからは沖縄会場のセッション。まずは高江洲さん。

  • そもそも Agile とは
  • 「事例紹介」の中によく出てくる XP, Scrum とかはわかったけど、それ Agile って言えるの?

みたいな話題を、お馴染アジャイルマニフェストを交えて話してくれました。

途中には「残念なアジャイル(いわゆるあるある話)」の紹介もしてくれました。 ここで印象に残っているのは、懇親会でも同じ話題が聞こえてきたのですが

「残念なアジャイル」みたいなことが起きて

 ・やっぱりアジャイルは駄目だった
 ・おれたちにはできないものなんだ

っていってそこで諦めてしまうのを良くみるが、そこでなんで諦めるのか。
「うまくいかなかった」「できなかった」ってタイミングで「気づき」を得られているだろ。
なんで駄目だったかということを『ふりかえり』して、それを次に生かしていけばいいのでは?

みたいな話をしていて、なるほど「気づき」という捉え方か、といろいろ考えさせられました。

事例紹介セッション (2): 『リモートでアジャイル(っぽい)開発をした事例のご紹介』

永和の水谷さんによる、最近あった開発でのお話。

当初ウォーターフォールのつもりだったが、お客様からの

  「要件を変更することを良しとする」という要件

を提示されて、いろいろあってアジャイル「っぽく」するようにした

みたいな話「うぉお」ってなりましたね。ある意味闇っぽい。 ほかにもいろいろ「あー」「あるあるだわー」みたいな生々しい話聞けておもしろかったです。

事例紹介セッション (3):『enPiT成果報告 ~学生5人でアジャイルやってみました~』

琉大の学生さんによるアジャイル開発してみました報告。

私が在学中にはこういう制度(イベント)が無かったので、結構羨しい。 プロダクトオーナーとのやりとりが、交通費の都合もあって週一で SKype(だっけ?) によるビデオチャットだけで そこが結構大変だった、というのはまあなるほどなーという。

その間はメールとかでやりとりしていたんだろうか。質問するの忘れてたな。

発表

最後のセッション、「テクニカルセッション」という枠で発表してもらえないかーという話があったので、 ここ最近、ようやく安定してきた Docker を使った E2E テスト環境の話をしました。

今回みたいに真面目な話題で社外で発表するのっておそらく大学の時以来(学会とか修論発表)だったのでかなり緊張していました。 ちなみに真面目じゃない発表はこちらです → http://d.hatena.ne.jp/gongoZ/20110829/1314576794

30分という枠だったので、単に「Docker で動かしてました」だと時間が足りないだろうなということと、 あとなんでこういう構成にしたのかっていう背景が無いとどうしても突然感が拭えなかったので プロローグという形で、CI に取り組み始めた辺りから話すことにしました。 おかげで予想以上にスライド増えてしまい、高速に話してしまうし(そして噛み噛みだった)、質疑応答時間を取れないぐらいギリギリだったので そこが残念だったなーというところです。もし質問等ありましたらいつでも Twitter にメンションでもいいしメールでもいいので、よろしくお願い致します。

まとめ

今回の沖縄サテライトのテーマが「現状確認会」ということで、現場の声みたいなものが聞けてとてもよかったです。

おわりに

今回の私の発表、現チームメンバーが見たら「かなり端折ってるな」という印象があると思います。

内容としては、ここ数年で取り組んできたうちの 30% ぐらいなので、 できれば別の機会にちゃんとまとめて発表したいです。余談ですが YAPC Asia 2015 いきたいです。

Emacs で vueify ファイル (.vue) を開いた時の highlighting / support を mmm-mode でどうにかする

経緯

  • Vue.js で構築している pizza-figlet を、試しに Browserify + Vueify してる
  • View Logic と Markup の密結合、下の記事を読んで試してみたかった(React の記事だけど)

    ところで、React.jsではComponentとして、マークアップとViewのロジックをcreateClassの中に書いていくのですが、他のフレームワークのようにマークアップはHTMLやmustacheで書いてViewのロジックをJSで書くみたいに分かれてなくて気持ち悪い!という人もいるのではないでしょうか? それに対して、React.jsの開発者であるPete Huntはそれは「関心の分離(Separation of concerns)」ではなくて「技術の分離(Separation of technologies)」だとしていて、マークアップとViewのロジックは密であるべきとしています。 reactjs - React.jsのComponentについて - Qiita

そんなこんなで .vue ファイルを書くのは良いのですが、問題は私が Emacs ユーザだということ。

vueify の特性上、いろんな言語が入り乱れることになるため、ここは昔懐しい mmm-mode を使ってみました。

その前に

.vue 内に書く <template><script><style> で、lang=xxx を使わない場合は、 mmm-mode を使うまでもなく web-mode で何の問題もありません。

  • <script><style> の中は勝手に js, css と判断してくれる
  • <template> に関しては通常のHTMLタグ同様に扱うので問題無し

書いてみた

gist.github.com

  • dolist のネスト、cl-loop あたり使ったらもっと綺麗に書けるのかもしれないが、ひとまずこれで
  • template の部分は書いてません。jade とか使うことになったら追加すれば良さそう

こいつを eval しておくと、こんな感じになります。

f:id:gongoZ:20150401215145g:plain

とりあえずこれで大分楽になった。

まとめ

GitHub を見ると mmm-mode がまだ時々開発が行われているのと、最古のファイルが 15 years ago とか書いててすごい歴史っぽい。