TDS のススメ

一人アドベントカレンダー 2016 2 日目 by @takkyuuplayer

1行まとめ

新しい言語やライブラリを勉強するときは、テストも書くといい

概要

仕事で書くコードにテストを書くのは当然であるが、新しいライブラリや言語を勉強する時もテストを書いておくと後々大変捗る。 その理由を述べる。

テストコードとは、動く仕様書/ドキュメント

(セクション名が昨日のデジャブ・・・)

続きを読む

テストファーストに意味はあるのか?

一人アドベントカレンダー 2016 1 日目 by @takkyuuplayer

1行まとめ

ビギナーエンジニアはテストを先に書いたほうがいい

概要

プログラミングの世界において、今実装しているものが仕様を満たし且つ今後も動き続けると自信を持って言うためにはどうすれば良いだろうか? 当然「テストを書く」という事になる。テストを書くという文脈でよく語られるものに「テストが先か、実装が先か?」がある。

どっちでもいいと思っていたが、最近ビギナーエンジニアに限って言えば「テストを先に書いたほうがいい」と思うようになった。 その理由を述べたい。

テストコードとは、動く仕様書/ドキュメント

続きを読む

一人アドベントカレンダー 2016

2014年に挫折した一人アドベントカレンダーに再チャレンジしようと思う。

ホームページも放置しちゃってるし、テコ入れが必要かと。

日付 担当 タイトル
2016/12/01 @takkyuuplayer テストファーストに意味はあるのか?
2016/12/02 @takkyuuplayer TDS のススメ
2016/12/03 @takkyuuplayer 定時に帰って勉強する
2016/12/04 @takkyuuplayer 素振りをしてから本番コードを書く
2016/12/05 @takkyuuplayer DSL乱立時代が来るという予測
2016/12/06 @takkyuuplayer
2016/12/07 @takkyuuplayer
2016/12/08 @takkyuuplayer
2016/12/09 @takkyuuplayer
2016/12/10 @takkyuuplayer
2016/12/11 @takkyuuplayer オープンソースは使うだけではなく、中身を読んでどう動いているのかを知るべし
2016/12/12 @takkyuuplayer ホームページのSSL化
2016/12/13 @takkyuuplayer どこでも同じ環境で開発する
2016/12/14 @takkyuuplayer 足し算ではなく掛け算で実装する
2016/12/15 @takkyuuplayer
2016/12/16 @takkyuuplayer
2016/12/17 @takkyuuplayer
2016/12/18 @takkyuuplayer
2016/12/19 @takkyuuplayer
2016/12/20 @takkyuuplayer
2016/12/21 @takkyuuplayer
2016/12/22 @takkyuuplayer
2016/12/23 @takkyuuplayer
2016/12/24 @takkyuuplayer

コード自動整形ツールまとめ

その通りだと思う。そしてそれは PHP に限ったことではない。

コーディングスタイルを周知してそれに従うというのは チームが大きくなればなるほど大切になるが、 同時に難しくなる。

Perl::Tidy を使うようになってから、自分のコード/チームのコードが読みやすくなった。 コードの整形に使う労力は減り、なんとなく開発のスピードも上がった。 コードの自動整形ツールは素晴らしい。 ぜひとも、他の言語でも使いたい。

ということで、各言語で使える整形ツールをまとめてみた。 GitHub にそれぞれ1行で書いたテストコードを自動整形させた結果のファイルがある。

HTML

惜しい! div の閉じタグの位置を揃えて欲しいなという感じだ。

JavaScript

なかなかいい感じにインデントしてくれる。

今回整形させたのは1行のスクリプトなので分からないが、 普通に複数行のjsを整形させた時の ; の有無は統一してくれなかった。 ; 有りに統一して欲しい。

PHP

PHPには PHP Standard Recommendations (PSR) というグローバル標準と言って良いコーディング規約がある。 それに従って修正してくれた。

だがrequire_onceの後に改行が欲しい。

Perl

特に申し分ない。

Ruby

まさかの整形してくれない。そもそも改行で文を区切る文化なので ;区切りで1行で書かれるなんて想定外(むしろ書いた人の意図を尊重している)ということだろう。ちゃんと改行で文を区切ればいい感じにインデントしてくれた。

その他

ここに挙げられている言語、挙げられていない言語問わず もっといいコード整形ツールや、もはやスタンダードとなりつつある整形ツールの設定があれば教えて下さい。

Heroku で SQLite を使う

Heroku, SQLite で検索すると PostgreSQL への移行方法ばかり出てくる。 公式ドキュメントにしても、最長でも24時間毎にデータ消えるから、PostgreSQL を使え という具合だ。

そんなことは分かっている。ただ Heroku Postgres は Heroku Addon であり、 Heroku Addon の登録にはクレジットカードが必要だ。 'Deploy to Heroku' Button でデモアプリを配布したい際には不便だ。デモアプリのデプロイは簡単にできる方が良い。 クレジットカードの登録は手間だ。

というモチベーションだったのだが、 Heroku Postgres はクレジットカード無しでも使えるらしい。∑(゚Д゚)ガーン

でもせっかくSQLite使えるようにしたのでやり方を公開する。

PHP での SQLlite の使い方

結論から言えば composer.json

{
  "require": {
    "ext-pdo_sqlite": "*"
  }
}

があればよい。これだけで PDO 用の sqlite ドライバーがインストールされ、 PHP から SQLite が使ええるようになる。

のドキュメントが参考になった。

hackme

↑ でデプロイ可能なアプリとして

こんなの作りました。

HRForecast in Heroku

Heroku Button の面白さに気づいた。Web アプリの配布に使える! 今回は勉強がてら HRForecastHeroku Button で デプロイ可能にしたのでその話。

やったこと

diffは こんな感じ。

Comparing kazeburo:master...takkyuuplayer:deploy-to-heroku · takkyuuplayer/HRForecast

主な内容としては

  • ClearDB MySQL Database にDBテーブル作成用の migration scriptの追加
  • 起動方法を指定する Procfile の追加
  • Heroku Button 用に app.jsonの 追加

の3つ。

作業中は ↓のような Makefile を作成して, 簡単に BUILDPACK_URL 変えたり まっさらな環境にデプロイできるようにしていた。

BUILDPACK=http://github.com/pnu/heroku-buildpack-perl.git

update:
    heroku config:set BUILDPACK_URL=${BUILDPACK}
    git push heroku deploy-to-heroku:master

clean:
    git remote rm heroku
    heroku create --buildpack ${BUILDPACK}
    heroku addons:add cleardb
    git push heroku deploy-to-heroku:master

終わりに

Heroku Button 面白い! 他にどんなアプリがデプロイできるの? と思った方は GitHub を検索 してみてください。

Amway シミュレーター

一人アドベントカレンダー 2014 17 日目 by @takkyuuplayer

最近ネットで話題の Amway, ついに自分のところにも勧誘がやってきた。 セールスポイントは2つ。

  • 友人を紹介すると儲かる仕組みがあり、それは権利所得になる。
  • 商品の質が良い!

権利所得を築く

権利収入って何?っていう人は


パブロとブルーノの物語 - YouTube

が分かりやすい。

Amway からの権利所得が 25万[JPY/Month]になるには、グループ総和で 150万[pv] * 1.37[JPY/pv] = 205万[JPY]の買い物が必要なようだ。

個人としては日用品は5千[JPY/Month]も買えばいいほうであるからして、 約400人を誘う必要がある。 10人に1人 Amway に入るとしても4000人に声をかけなければならない。 アドレス帳に入っている人数では全く追いつかない。

孫ユーザーも含めるとどうなるか?をシミュレートするウェブサイトを作ってみた。

f:id:takkyuuplayer:20141217235415p:plain

それでも 100人誘う必要がある。 勧誘成功率10%として、1000人に話をする必要がある。 相当頑張らねばならない。

自分としては勧誘を頑張りたいとは思えない。 権利所得を得るなら、正直株のほうが面白そうだ。

商品の質が良い

権利所得としての魅力が薄いなら、商品の質である。

ボディーソープを貰ったので使ってみたがいまいち違いがよくわからない。 塩を使ったデモンストレーションを家にあった弱酸性ビオレでやってみたらちゃんと塩が溶けた。 調べてみると塩が固まるかどうかはボディーソープに石鹸成分が含まれているかどうかによる 「塩析」という化学現象であった。

化学でその言葉を習ったことあるような気もするがよく覚えていない。

ボディーソープに石鹸成分が含まれていれば固まるし、 含まれていなければ溶ける(かどうかは知らない)。 いずれにしても、石鹸は水に溶けるので水で洗い流す段階で溶ける。

まとめ

個人的にはやらなくていいかな。

次回予告

明日の担当も @takkyuuplayer です。