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 アプリの配布に使える! 今回は勉強がてら HRForecast を Heroku 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つ。
- 友人を紹介すると儲かる仕組みがあり、それは権利所得になる。
- 商品の質が良い!
権利所得を築く
権利収入って何?っていう人は
が分かりやすい。
Amway からの権利所得が 25万[JPY/Month]になるには、グループ総和で 150万[pv] * 1.37[JPY/pv] = 205万[JPY]の買い物が必要なようだ。
個人としては日用品は5千[JPY/Month]も買えばいいほうであるからして、 約400人を誘う必要がある。 10人に1人 Amway に入るとしても4000人に声をかけなければならない。 アドレス帳に入っている人数では全く追いつかない。
孫ユーザーも含めるとどうなるか?をシミュレートするウェブサイトを作ってみた。
それでも 100人誘う必要がある。 勧誘成功率10%として、1000人に話をする必要がある。 相当頑張らねばならない。
自分としては勧誘を頑張りたいとは思えない。 権利所得を得るなら、正直株のほうが面白そうだ。
商品の質が良い
権利所得としての魅力が薄いなら、商品の質である。
ボディーソープを貰ったので使ってみたがいまいち違いがよくわからない。 塩を使ったデモンストレーションを家にあった弱酸性ビオレでやってみたらちゃんと塩が溶けた。 調べてみると塩が固まるかどうかはボディーソープに石鹸成分が含まれているかどうかによる 「塩析」という化学現象であった。
化学でその言葉を習ったことあるような気もするがよく覚えていない。
ボディーソープに石鹸成分が含まれていれば固まるし、 含まれていなければ溶ける(かどうかは知らない)。 いずれにしても、石鹸は水に溶けるので水で洗い流す段階で溶ける。
まとめ
個人的にはやらなくていいかな。
次回予告
明日の担当も @takkyuuplayer です。