VagrantとAnsibleを使ってpaizaの実行環境を構築できるようにしてみた
本題の前に
このツイートをRT&このアカウントフォロー(締切2015/4/21)でAmazonギフト券1000円が20名、ステッカーが30名に当たる! 俺(エンジニア)の許嫁と幼なじみが修羅場過ぎる https://t.co/nHxRIKnRM8 pic.twitter.com/biKwYggivb
— paiza[パイザ] (@paiza_official) 2015, 4月 14
先日、このツイートを何気なくRTしたのですが、なんとAmazonギフト券が当たってしまいました。
ありがとうございました!!
数年前にもVPSを契約してクリスマスケーキを当てたりしているので、こういうものに縁があるのかもしれないですね。
本題
paizaというプログラムを書いて転職活動を行うサービスがあるのですが、
転職に直接関係ないイベントも定期的にやっていたりします。
GW中の暇つぶしにこれをやろうと思っていたのですが、今ある環境とpaiza側の実行環境で言語のバージョン差異があったので、 別途VMを立ててpaiza側の実行環境を可能な限り再現してみました。
Ansibleの学習も含めて自動化してみたので公開してみます。
README.mdに書いていますが、Vritual BoxとVagrant 1.5以上をインストールしておく必要があります。
やってること
vagrant up
すると、Vagrant CloudからBoxを取得してVMを立ち上げてくれます。
立ち上げたVMにAnsibleをインストールして、リポジトリにコミットしておいたplaybookを実行するようになっています。
ちなみに、今のところplaybookではnode.jsとRubyのインストールしかやっていません。
また、playbook実行前にAnsible GalaxyからRoleを取得しています。
今回は、node.jsインストールのRoleだけ簡単に自作して、RubyのRoleはAnsible Galaxyにあったものを使っています。
Ansible Galaxyに一通り言語インストール用のRoleがあるようなので、多くの言語に対応するのはそこまで時間がかかりそうにないです。
便利な時代ですね。
Vagrantを使って構築すること前提でplaybookを書いていますが、少し書き換えればそれ以外の環境にも利用できると思います。
※node.jsのRoleだけとりあえず動く程度の出来なので怪しい...
AngularJSテストソンに参加してきた
つい1週間ほど前の話ですが、AngularJSテストソンに参加しました。
AngularJSテストソン - AngularJS Japan User Group | Doorkeeper
当日は、始めにAngularJSのテストに関する簡単な説明とチーム分けが行われ、そこからテストコードを書いたり、参加者・主催者の方々と書き方について話し合ったりして、最後に各チームごとに実践した内容の発表を行いました。
当日作業を行ったリポジトリへのリンクも置いておきます。
shunjikonishi/AngularTestSonSample · GitHub
Javascript歴3ヶ月・AngularJS歴1ヶ月程度の知識で、どこまでのことができるか不安でしたが、AngularJSのテストの書き方からテストしやすいAngularJSの書き方などもなんとなく見えてきた1日だったので、非常に収穫のある1日になったと感じています。 簡単に感想みたいなものを書きます。
学んだこと
AngularJSの書き方について
- 当たり前のことかもしれませんが、Controllerに書いているロジックはなるべくServiceに切り出したほうがいいと感じました。普段、Controllerの中で$httpを叩いたりするコードをよく書いているのですが、これもService側に処理を切り出したほうがテストがしやすく、$httpのmockも書きやすくなるのかなと感じました。
また、Service自体のmockを作ってユニットテスト実行時に参照することもできるらしいので、積極的にServiceに切り出したほうがテストがしやすくなるのかなと思いました。
- 当たり前のことかもしれませんが、Controllerに書いているロジックはなるべくServiceに切り出したほうがいいと感じました。普段、Controllerの中で$httpを叩いたりするコードをよく書いているのですが、これもService側に処理を切り出したほうがテストがしやすく、$httpのmockも書きやすくなるのかなと感じました。
もっと学びたいこと
- protractorの書き方
- 正直、なんとなく使い方がわかる程度の状態で終わってしまったので、どういうAPIがあるかをもう少し知りたいと思っています。protractorで使われているpromiseという書き方についても、テストソンの3日前に知った程度の知識なので、この辺も含めてちゃんと理解していければと考えてます。
コードを書く勉強会は学びが多くていいですね。今後も積極的に参加していきたいです。
パイザオンラインハッカソン4・LiteをJavaでやってみた
タイトル通り、パイザオンラインハッカソン4・Liteをやってみました。
以下、書いたコードです。
問題1
問題2
問題3
とりあえず、全部100点取れてます。
問題内容は結構簡単だなーとは思ったのですが、問題3だけ1発目に書いたコードの実行速度が遅すぎて1回で100点取れなかったです。
パフォーマンスに関する考え方が甘いんだなぁ…と反省。
ちょっと暇つぶしにやろう~程度でやってみたのですが、学べた点もあったのでやってみてよかったです。
このオンラインハッカソンだけじゃなく、Paizaの問題は大量のデータを用いてコードの実行速度を測ってくれたりするので、新しい言語を学び始めたときに自分のコードの書き方がどうなのか試すつもりでやってみるのもいいかもしれないですね。
問題解き終わってから対応している言語をよくよく見て気づいたのですが、BashやらGoやらも対応してるみたいです。(Beta版みたいですが)
Bash対応がちょっと驚き!近いうちに試してみようかなーと思ってます。