パルカワ2

最近はFlutterをやっています

Maltsを作る理由

soh335: @hisaichi5518 くんはなんでわざわざwafの開発をしているのかについてはてなブログを書きましょうという話をしました。

http://twitter.com/#!/soh335/status/157826889157853184

 

soh335: @hisaichi5518 社内wafがあるのにわざわざ何故という話を書きましょうという話をしました。

http://twitter.com/#!/soh335/status/157827695844134912

 

 

* 前提

今の社内wafは学習コストが高い。

京都支社の学生エンジニア( Perlを始めて触った )がインストールだけで数時間使ったと言っていたりする。 

社内wafはこの三つに当てはまると思う。

- フレームワークを覚えるのに必死になりがち

- 挙動が意味不明

- マジカルな事やりがち

ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011

http://www.slideshare.net/cho45/yapc-asia-2011 

 

* 変化する会社に合わせるため。

どんなフレームワークが良いかっていうのは会社によって違うと僕は思っていて、僕が今バイトしている会社は、ものを作って作って作りまくる会社なので、社員さんが慣れているもの(ArkやDBIx::Classなど)を使って作れば大体問題はなかった。

けれども、今は採用に力を入れていて、人が増えて増えて増えまくっているので、このまま「慣れてるから」という理由だけで学習コストが高いものを使い続けるのは、無理があるんじゃないかなーと思っている。

 

* 人が増える=?

人が増えるということは、Perlをやった事がない人が増えるということだと思っている。僕の同期でPerlをがっつり触ってた人って何人いるだろう?soh335くんと僕くらいしか知らない。

Perlをやった事がない人は、Perlを勉強しながらコードを書く事になる(OJTOJT!)ということは、なるべく学習コストを下げ、取っ掛かりやすいようにするべき。

学習コストが高いままだとひどいコードが量産されやすくなり、将来的に自分や他のエンジニアに被害が及ぶ。自分の未来の後輩に苦しい思いはしてほしくないし自分もしたくない。

 

* 学習コストを下げるとは

学習コストを下げるとは「読むコードは少なめに」「流れを簡単に分かるようにする」「マジカルな事がしない」「道しるべを示してあげること」「必要な事を説明してあげること」

これをやっているのが、自分が作ってるMaltsであったり、Maltsの拡張であるMalts::Style::Premium。

 

* 文句だけ言っても始まらない

「社内wafは学習コスト高いわー」「未来の後輩可哀想だわー」「つらいわー」とか言ってるだけでは何も始まらないので、ウルトラハイパー説明ベタな自分が上の5つを満たすように考えながら、MaltsやMalts::Style::Premiumやその他ドキュメントを書いている。最近はApp::Maltsっていうスケルトンジェネレータ作ってたりもしますね。 

だからMaltsとMalts::Style::Premiumの組み合わせは個人開発向けじゃなくてチーム開発向け。別に個人でも問題なく使えるけど。

あと先輩は僕よりも早くそして良いものが作れると思っているので、Maltsが採用されなくても現時点の社内wafの問題点が解決されれば、それでいいと思っている。

 

 

ボツネタ(本音): Arkは個人的には使いにくいし、ルーティングすぐ忘れるし、フレームワークはもっと薄くていいと思ってるし、useしたら継承とかやだし、起動すると全部のControllerとか読み込むからControllerが多い+マシンのスペック低いと起動クソ遅いしって思ってるのと、あとは自分が作りたいから作ってる。

 
 
 
 追記(1): "ArkはCGI向けにController遅延ロードするモードもあるで。全部ロードするのは永続環境向けだし、永続環境用に下手に遅延ロードする仕組みとか要らない。"と教えてもらいました。やり方わからないけど。

追記(2): "だからMaltsは個人開発向けじゃなくてチーム開発向け。別に個人でも問題なく使えるけど。"って書いてたけど、"だからMaltsとMalts::Style::Premiumの組み合わせは個人開発向けじゃなくてチーム開発向け。別に個人でも問題なく使えるけど。"に変更。

本当は、MaltsとMalts::Style::Premiumでチーム開発用になるので。