2007-05-23

PHP を取り巻く人々の思惑の変化とかギャップとか

祭りも収まってきたことだし、その間に読んだり書いたりしたことをもう一度思い返してみる。

自分が書いたものは主に Dan の中の人の発想に同調して「ハッカーが使いたくなる言語か否か」、「『使える』かどうか」だったんだけど、その方向で気になったポイントとしては、

PHP を PHP で拡張できないことに異論を唱える人はほとんどいない

という点。「そこは割り切って使うのが PHP 使い」というのが大勢だったかなと思う。

あとは

  1. 関数ばっかいっぱいあって邪魔くさい
  2. そんなのリファレンス見ればいいじゃん
  3. 名前空間がなくて扱いにくい、一個一個の名前が長くてダサイ

というフラットで巨大な関数群の話。

個人的にはリファレンスとか IDE の補完があればオッケーという話ではないと思うな、これは。予約語もけっこう多いし、そういう意味でも扱いにくいと思う。

たぶん PHP モジュールを作る人が増えてこないのはこの辺も関係してるんじゃないかなぁ。例えば面白いツールがあっても PHP のバインディングだけない、っていうケースは少なくない。PHP 以外を知らない人はこの事実、気づいてないのかな。

それと

  1. Web に特化しちゃってて他のバックエンドツールとか書きにくいじゃん
  2. Web に特化しているからこそ目的を素早く達成できるんじゃないか
  3. Web に特化していることを肯定したうえで、であればもっと素人でもセキュリティを確保しやすい仕組み、あるいはサンプルを提供してくれたらもっといいのに

という特化話。特化していることの善し悪しは要するに目的によって変わってくるのでそこら辺は置いとくとして、自分が気になったのは

本当に特化して楽ちん簡単なのか?

という辺りかしら。

以降はとてもなんとなくな思いつきをダラダラ書くだけなのであまり気にしないでほしいんだけど、ここ数年の PHP 開発の流れって、基本的に大型開発に耐えられるツールを指向していると思うのね。

PHP が Perl で書かれたツールだった頃の話は知らないんだけど、その後の PHP は Perl っぽさというよりは素朴でポインタのない C のような雰囲気を身にまとって C 系のプログラマが移行しやすくなり、その後オブジェクト指向風の機能を追加し、5 ではますます Java 風の機構を取り入れてくる、というのが大まかな流れなわけです。そして今いちばんアツイのは PHP そのものではなく PHP 上に乗っかるライブラリと PHP を利用した Web 開発を支援する環境である、と。つーことは他の言語の流れと基本的にはおんなじところに向かっているように見えるんだな。乱暴に言うとオブジェクト指向を取り入れてライブラリを整理しましょう、という流れ。

もちろん主戦場が Web であるというところは疑う余地はないと思うんだけど、PHP そのものの開発をするうえで Web に特化するということを第一としているのかというと、そうでもないような。というかその辺の機能はすでに実装済みというか1。で、最近特に問題になることが多いセキュリティ周りは、言語そのもので対応するよりライブラリ、フレームワークで対応する方が効率がいいと判断しているような感じがする。(もちろんクラッシュする類いのものは PHP では対処不能なのでそこは直すけど。)

一方でバージョン 3 の頃のような牧歌的なノリで PHP は導入も簡単で学習コストも低く、初心者にオススメです、という人たちも居て、そういう人たちは残念ながら Web プログラミング特有の難しさにはあまり頓着がなかったりしているように見える。

PHP にいっちょかみする人って、PHP 好き派ときらい派に分かれるのは当然として、PHP は初心者にも簡単でいいよ派と、PHP を大型案件もこなせるツールにしたい派にも分断しちゃってるような、そんな風に見えるんだなぁ。

自分としては「(生の)PHP は Web に特化しているし、簡単でいいんです」、というのは安全なネットワークの中で閉じたツールを作る分には当てはまるけれど、インターネットという危険な大海原では当てはまらないと思うんだな。それでも PHP を薦めるのは

初心者に対してではなくプロの共通語として

なら理解できるかなーと思う。これは PHP くらい使えなきゃダメよと言っているんではなくて、恐らくプロは PHP で書かれたサンプルを読める程度になら半日もあれば到達できるだろう、という感じの意味ね。巨大なライブラリを読みこなせるとか自由に書けるとかいうことではないです。例えば XSS や CSRF 対策の基本はこんな感じです、みたいなサンプルを提示する際に PHP はそれなりに使いやすいんじゃないかな、くらいの意味。もう一つは求人の多さかな。求人の話はニワトリタマゴだけど。

  1. 例えば cli でも cgi でも mod_php でも fastcgi でも、他のフレームワークなどの助けを借りずに基本的に同じコードが動くのは結構すごいと思う。 

About

例によって個人のなんちゃらです

Recent Posts

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Document SVG AsciiDoc Pandoc DocBook Develop Jekyll macOS Node.js Vite Heroku Transformer AI Data Cloud Wasm