uzullaがブログ

uzullaがブログです。

一行でも書け、倒れるときは前のめり(または書かないで済ませる話)

先週金曜日にPerlCasual #5(http://atnd.org/events/37158)が開催されました。
どう考えても発表者の中で俺だけレベルが浮いて(沈んで)いますが、まあ発表してきました(LT軍は、半数が「なんで俺がPerlの会で発表してるの?」と言っていたことを付け加えておきます)。


感想として、とてもたのしかったので、詳細は他の人のブログとか見ましょう。

スライドはこちら

※1,2ページ目は当日のネタなのですが、素材を活かす為に削除しないでおきます(めんどくさい)

すみませんでした


ものすごい酔いどれ発表だったと思います。テンパっていたというわけではないのですが、ものすごい周りみていない感ですね。


懇親会において「Hachioji.pmのノリってこれですか?(持って来ないでください)」感がすごかったです。
とりあえず風評には声を大にして言っておきたい。



「大丈夫、Hachioji.pmの私だけです!他のみんなはまともです!!!」



まあスライドはシラフで書いてるので、耳を閉じて目だけで見てた人には、多少は伝わったかなとおもいます。

蛇足

LTですので、スライドには盛り込まなかった所が少しあります。
それを交えて少し蛇足を書きます。蛇足なので、読まなくても良い。まとめは上のスライドなので、まとめも読まなくて良い。

前説

なんかコミュニティの問題っぽい話なので、「お前はメジャーなコミュニティ活動してないし、ゴミ虫が何を大層なことを言っているのだ?」「こんな問題はもう10年前に通過済みだ!」等と斧がめっちゃ飛んでくるとおもいますし、気分を害する方もたくさんにいるかもしれません。
(というエチケットペーパーを敷いてから発表するつもりでしたけど、酔っ払っていて盛大にゲロりました!)


まあ、片田舎に住んでいる私の感想論なので、ご容赦を。

問題だと思っている事

一言でいって

1;

これを初心者が知る事が難しいというのがPerlの辛さです。悪名高いシジルも含まれます。


単純にググラビリティの問題なのだといってしまえば話は早いのですが、Perlは独習が結構面倒くさい言語だと私は思っています。

基本的な文法、実行環境の用意、モダンな書き方、典型的な解決策、
初学者がなにも考えずに「おまじないだよ」といってクリアがしづらい言語です。というか一人では「正しいおまじない」が見つからない。


昔の、私が育ったCGI時代においては、正直書き方で悩む事などなくて、適当に引数をとって適当にprintしておけばオッケーだったので、言語毎の特色など理解せずにしょぼいcが書ける程度の能力があれば書けました。一行一行おいかければどうにかなった*1
とりあえずは悩む所などなかったのです。それがよいかはさておき。


しかし今は違います、全体が高度になっています。ごく一部として、Web。
多くの人がWebサービスを書くためにPerlを使っています、多分今からプログラミングを勉強したいと入ってくる人の半分くらいはWebをやりたいから始めているのではないかな、とか思います。
そんな昨今、様々なWAF*2が世の中にあります。これはWeb開発者には広く知られていて、それらの便利なものを使わないで書くのはまったくアホだとみんなわかっています。
今、「require 'cgi-lib.pl';」 とかやるのはアホだとみんなわかっていて、そんな遠回りはしたくないのです。*3


しかし、WAFは当然のように言語のパワーを最大限に発揮するように高度に書かれています。代入とif文とprintが書ければ使えるような簡単さはありません。
OOPも当然になっています。悪名高いPerlOOPはそこらのWAFを使うのには必須です。
周辺ツールであるPerlbrewやcpanmなども、わりと必要そうにみえます*4

PerlでHelloworldが書けるだけでは、WAFをつかってWebサービスが書けない。

それPerlだけじゃないよね

全くそうです。

話変わるようですが、言語に早めにジョインするのと、後でジョインするのには色々なメリットデメリットがあるとおもいます。
3〜4年位前に、ためしにRailsを書いてみたことがあるのですがまだなんとなく理解できた感じがありました。しかし、今Railsは自分にはものすごくややこしく見えます。

これは単純に学習時間の問題になるのですが、単純で理解できるうちに参入して、きづいたらエッジだった、というのはよくある話で。
私みたいなCGIおじさんはCGIでカウンターがかけたら金になった、という時代からのんびりやってて、今普通に飯が食える程度になにかしらのスキルがあります。
積み重ねすごい。

逆に、後からはいるメリットだってあります。知の高速道路とか言われるもので、今先端だけをマスターしても、基本的に同じ事ができるようになる。
積み重ねた部分に無駄がないわけはないのです。

なんか話がずれちゃうのでもどしますけど、本来後から入ってくる人がことさら不利にならないはずです。
ライブラリのおかげで、私はおぼつかないのにAnyEventで非同期処理がかけたりするわけです。後から入ってきたのでforkとかしらないで書ける。


ただ、その知の高速道路が「TMTOWTDI(There's more than one way to do it:やり方はいくらでもある)」なのはつらいのかな〜みたいな〜。
まあ、今ならAmon2かMojoやればいいじゃん!って話なんですけど、あれもDBを使うのになんかしらえらぶ必要がある(んですよね?)

Perlは楽しいのです

パワフルさで他の言語にまったく負けていないと思います。

ただ、ちょっと道に小石や石や岩や壁が多いかな、というのは私の思う所です。
そして初期にぶつかる小石の超え方は、ググれば出てくるのかもしれませんが、やっぱり小石だけにみつけづらい。

他の言語でもそうでしょ

じゃあほかの言語ではどうなんだ、という所については、


Rubyにおいては、基本的にもはやRailsしかありえず*5Railsを勉強すれば良いのです。Railsが糞ほど難しくて糞ほどややこしくてあれこそどうやって勉強すればわからねえ、とPHPerは思いますが、一個しか道がなければ、前のめりで死ぬ事はあれ、道を探して死ぬ事はないのです。


PHPにおいてはもっと単純で、WAFが不要な世界です。むしろPHPがWAFです*6。echo "hello world"; やったー!!!
いや存在はしています、CakePHPSymfonyなどさまざまなWAFがあります。しかしこれも「よくわかんねーからテンプレートにmysql_connectかいたらうごいたし!!!」というどうしようもないプログラムが可能な世界においては、逃げ道があるという意味で、とにかく事を済ませる事ができます。
とにかくコケる前に終わらせろ、めげる前におらわらせろ、テストなんか知らん、お客さんのIEで表示できればええんや!!!*7


(他のPythonやJSについては、そもそも道に迷う人が飛び込む事など無いでしょう)

じゃあどうすればよいのか?

「じゃあ手引きが必要なのか?」
「じゃあPHP.netが必要なのか?」
「じゃあ簡単なWAFが」
「本が」
「サイトが」


色々な解決策は浮かびますし、実際に提供されています。
ただ、基本的にどれも提供したところで個人のやる気がなければクリアできませんね、つまりはやる気、やる気があればなんでもできる。
本当にありがとうございました、お出口はあちらです。


さて、マッチョな人(私は普段マッチョな人とお話しています)にいわせれば、「そんなのMooseのコード全部一から書きなおしてみたら全部おぼえたわ〜」という話であり、そういう人なら問題無いです。

私も「マッチョですね」って言われる事があります。やればいいじゃん!というのは、私はすごく、本当にすごく思います。
やる気のない人を無理やり手をとってやる、なんてのは本当にアホらしい話です、多くの場合人生の無駄です。
ぶっちゃけPHPでHelloworldを書く方法を2時間ググって諦めるのが普通の人です。
私は現在、Perlをホビーとして対峙している事もあり、やりたくない人がやる必要など感じていない。


ただ、パールカジュアル最右翼を勝手に自認しているHachioji.pm主催として思う所もあります。
自分がカジュアルなのです、自分がジュブナイル、われこそは教養小説。自分が悩んでいる事が無いなどとはおもえない、俺の前には壁がある。


ぶっちゃけ、やりたい奴はかってにできる。
上述の通り、ここはもう動かさない所です。

やる気がある人は、いつかはPerlで書けるようになるでしょう。
私もそうでした、のらりくらりとPHPを書きつつも、じわじわと外堀がうめられ、色々なシーパン王サーにかこまれてじわじわと知識がたかまり、なんだかんだで最近かけるようになってきました。

でも、やる気がある人が最初の小石で躓いてしばらくうずくまってしまったり(俺だ)、最悪舌打ちして帰ってしまうのは非常にもったいないなーというのが私の最近の認識です。


ぶっちゃけ、私は仲間がいなければ、小石につまづいて帰ってる気もします。
愛すべきPHPと、主にIEの所為で面倒なJSをさわりながら、たまーにCGIおじさんでも理解出来る範囲でPerlを使う。
これはこれでPerlとの付き合い方だとおもいますが、まあ多分もったいない、もったいないんじゃないかな、もったいないってことにしておこう、しておかないと話がすすまないからね。

突然ですが

実は今日、はじめて練習ではなくMojoliciousをつかって趣味のウェブサービスを書いてみているのですが、ものすごい勢いで小石に躓いております。普通そこでつっかかるか?って所でも突っかかっております。
YanchaとかかいててAnyEventがなんとなくかけるようになったのに、いまだOOPでクラスとかロクに書かない。


しかしあと一行、後一行と進めて、夕方にはNet::Twitter::LiteでTwitter認証してTengでSQliteに行が入りました。
後、Songmuさんには黒魔術をおしえてもらい、HayajyoさんがMojoliciousのAuthプラグインInstagram対応してくれました、すごい。これで俺の野望まであとちょっとだ!!!(嘘です。登りはじめたばっかりだぜ…このPerl坂をよ…)


ここまでくると、なんとなく後は歩ける気がしますね、現実としてはこの後も全速力でコケるでしょうが。

繰り返しですが

できるために必要なのはやる気です。

マジでこの一言に集約されてしまいます。
やる気がなければ帰る。

コケる前に小石がみえた瞬間に帰る。
これもったいない。

小石が小さくみえないかな〜みたいな。

本題:コケても帰らないで欲しい(または、コケてかえらない為には)

ここらへんが、発表したい所でした。

コケて帰らない為にはどうすればいいか、これが仲間がいるかで解決できないかなー、ということです。
手を貸してくれる人がいれば、人間仲間がいれば小石で転ぶ事も楽しいと思うんですよ。

そしてPerlという看板をみて何気なく入ってきた人は、その手が見つかってないのですよ。


他人ですよ、仲間っていったって。でも赤の他人だけどちょっとだけこうね、なんかできないかなみたいな。
そしてみんななんかしてるとおもいます。私もなんかしています。

なので、小石でコケてる人はなんかしてる人がいるから、とりあえず仲間になってみないか?
なので小石でコケない人は、1;を笑えない人を(今後とも)応援しましょう。

そういうことが書きたかった事ですね。

えっちょっと待ってよ、なんか言ってるのが全体的に甘いんだけど…甘すぎですけど。

それってフリーライダーじゃないですかーヤダーってのがもちろんあるんですよね。
NGO団体が世界を救うじゃないし、こっちからおしかけるようなことじゃないんですよ。

同僚いいですよね、お仕事ですし。
ぶっちゃけ、Perlをやってる会社にはいるのが一番効率的かつ最速でPerlを書けるようになる方法だと思います。


私は仕事ではなく、今はメインはホビーとしてPerlを使っているので、甘い感はあります。
そもそもPHPerですからね、激甘ですよ。


なんかね、前言われたんですけど「そうやってポジション作るつもりですか〜〜wスピリッチュアルで大人気〜〜〜www」みたいな。
いやそれはそれでゼロって言ったら嘘になりますけど!

でも、リアルにこういうのはアドホックに人がアテンドしないとバッドだと思いますんで、
私の事はさておき(私を含めて)、どうにかしていけないですかね〜?

私はCGIおじさんですし全然初学なので、私にPerlを質問する人はわりとレアですが、まあそれでもシジルとか、多少人をサポートしたりすることもありますし、plenvのインストールくらいならできるわけで、実際そういうのを人に伝えたりしています。

えっ、終わり?なんか普通な事言ってるね?それって解決できてるよ!

いや、俺にはなかった!なかったんだ!
無い人もきっといるはず!その人にとどけこの想い!

まとめ

やりたい人(私とか)がメゲて帰らない為に「私も」なにかしていきたいですね。Hachioji.pmとかで。
という単なる決意表明なスピリッチュアルな話を長文でダラダラかきました。


【!お役立ち情報!】

Perlやってみたいけど前後さっぱりわかんないとか、Helloworldまではできたけどその先が一ミリもわからねえ、って人はぜひ Perl入学式とか行ったらいいと思います!!!
http://www.perl-entrance.org/


または、Hachioji.pmとかChiba.pmとかPerl Beginnersとかそこらへんにきて「わかんねっす!」っていえば、やる気さえあればわりとどうにかなるらしいよ!俺はなった!(効果は当人の感想であり、さらにいえば、その時に来てるメンツ次第でもクオリティが変わります)



おわり

*1:まあ、今もそうかもしれませんが

*2:Web Application Framework、RailsCakePHPDjango、Mojoliciousなど

*3:または、そんな獣道の存在すら知らないかもしれません

*4:なくてもどうにかなるが、必要なように見える

*5:さまざまなものがありますが、とりあえずRailsっていっておけばいいでしょ的な意味で

*6:テンプレートエンジンだ!という声もきこえますが、私はWAF論者(?)です

*7:これは一部の人間です、多くのPHPerはもっと崇高な理念にもとづき、しっかりしたウェブサービスを作成しております。真に受けないでください。