fuelphpでunittestを書いてTravisCIで動かしてCoverallsでカバレッジが見れるようになるまで

思い立った

個人で開発をしていて、ちょっとしたツールを作っていました。

 

「個人開発なのに、毎回毎回deployとかしてられねー」という思いから、GithubのwebhookをAPIが受け取ってshellでdeploy、みたいなCDちっくなことはしていました。

CIについては「明日から本気だす」という状態から先に進まなかったんですが、強制的にでも気分転換しないと、アカン...という状況に追い込まれたので思い切ってやってみることにしました。

せっかくなのでいろいろ試したい!と思っていて、最近はやり?の開発を支援するツールたちを使ってみた、というお話です。

続きを読む

【FuelPHP】Twigテンプレートで最初から使えるextension/FuelPHPの関数

いつも忘れるのでメモ


fuel/packages/parser/twig/fuel/extension.phpの中を見ればわかるけど
バージョンは 1.8/develop


個人的にはauth系をよく使う。
configはまだ使い切れてない感がある。
form系はFieldsetで代用している事が多い・・・(それかベタ

$ cat fuel/packages/parser/classes/twig/fuel/extension.php | grep "new Twig_Function" | awk '{print $1}'

'fuel_version'

'url'
'base_url'
'current_url'
'uri_segment'
'uri_segments'

'config'

'lang'

'form_open'
'form_close'
'form_input'
'form_password'
'form_hidden'
'form_radio'
'form_checkbox'
'form_textarea'
'form_file'
'form_button'
'form_reset'
'form_submit'
'form_select'
'form_label'
'form_val'
'input_get'
'input_post'

'asset_add_path'
'asset_css'
'asset_js'
'asset_img'
'asset_render'
'asset_find_file'

'html_anchor'

'session_get'
'session_get_flash'

'markdown_parse'

'auth_has_access'
'auth_check'

FuelPHP ORMで取得(select)した後の処理

findやqueryなど、クエリを発行するところまではあっても、
その後どう処理するかの記述が少ないと思ったのでメモ。

<?php

/*
mysql > show create table test;
CREATE TABLE `test` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(16) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

mysql > show create table hoge;
CREATE TABLE `hoge` (
  `fuga` int(11) DEFAULT NULL,
  `bar` varchar(16) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

*/

// phpの中
$result = Model_Test::find(1);
echo $result->id;
echo $result->name;

// Twigの中
$view = View::forge('test_view.twig');
$view->result = $result;
return Response::forge($view);

{% for row in result %}
{{ row.id }}
{{ row.name }}
{% endfor %}

// リレーションを使ってselectしたとき
$result = Model_Test->find('all', array(
  'related' => array('hoge'),
));

foreach ( $result as $row )
{
  echo $row->id;
  echo $row->name;

  // リレーションキーでオブジェクト取得
  $hoge = $row->hoge;
  echo $hoge->fuga;
  echo $hoge->bar;
}

// リレーションをTwigの中で展開するときはドットでつないであげればいい
{% for row in result %}
{{ row.hoge.fuga }}
{{ row.hoge.bar }}
{% endfor %}

成果主義に明日はない

  • 成果主義が労働者を苦しめるという本
  • 過去の事例をメインに紹介する部分が多かったが、自分が創造していなかったことに気づかされた
  • これを呼んだから労働組合を作ろうとかは思わないけど、最悪の成果主義を鵜呑みにするつもりもない
  • 直面しそうなこと:
    1. 「短い時間で成果を出さなければ」から産まれるサービス残業
    2. 成果を優先するあまりに技術共有/技術向上の停滞(特に共有は集団のことなので発生しやすい)
  • 今読み進めてる、「小さなチーム、大きな仕事」はこれとは真逆のことをたまにいうので比較していて面白い。

無題

社内PFを開発していて、運用している。
そのPFを使いたい、と言っているサービスがいるときに、企画的な立場として相談を受けたときの話。


そもそも難しいと思う原因としては、両者間での認識が合っていない場合が多いと思った。
1つ1つ(それは固有名詞の共有から)明確にしていき、処理フローなどに掘り下げていく。

たまに使いたいと言っているのに、何をしたいのかが不透明な場合もある。


使いたいってひとのスケジュール感をPFが管理、把握するのもおかしい。
そういう人が組織に(もしくはもう少し小さい単位で)何人かはいてもいいとは思う。
ただ、それは自分の仕事ではないと思ったし、それをするには広く・決して浅くない知識が必要になる。


そもそもPF側に相談がくるフローがまずいけてないな。
誰がFacebookアプリ開発したいのに、Facebookに連絡することはない。。