PHPWeeklyの内容を簡単に翻訳し、興味のある内容に対してコメントを残します。
知っている知識の中で、ブログを書こうと思っていますが、間違ってる内容が含まれている可能性もあります。
間違っているところに対する指摘はいつも歓迎ですが、非難・悪口
は求めていません。
記事
GitHubから選ばれたランキング10位までのプログラミング言語
上の記事でPHPに対してプログラマーに最悪なプログラミング言語といわれている
と説明しています。
PHPを使用している1人として心が痛くなる評価だし、ほかの言語も使ったことがある僕からしたらPHPがそんなに最悪なのか疑問は持ています。
PHPに対しての討論は山ほどありますが、僕はまだそこまでのレベルではありませんので、リンクをいくつか共有します。
韓国語のブログです。クロームの翻訳機能を使えば、韓国人のプログラマーたちの意見を知ることができると思います。意外とおもしろいです。
박종희様: 今になって話せるPHPで開発しなきゃいけない理由
perillamint様: [ko] 今になって話すPHPで開発しちゃダメな理由
jujumilk4様: 多くの人々はなぜPHP環境に囲まれているのにPHPを嫌悪しますか?
안형우様: [翻訳版] 誰も話してないPHPのいいところ
順位 | 言語 |
---|---|
10位 | Ruby |
9位 | C |
8位 | Shell |
7位 | TypeScript |
6位 | C++ |
5位 | C# |
4位 | PHP |
3位 | Java |
2位 | Python |
1位 | JavaScript |
Node.jsからPHPに戻るのはどう?
Adnan Babakan
はPHPとNode.jsを使っているプログラマーに見えます。
PHPとNode.jsの好き嫌いな理由を簡単に作成し、PhpStorm IDEを使ったらLaravelフレームワークが簡単に使えたのが印象的だったと話しています。
PHPの設定・作成が簡単なのは僕も同意しますが、PHPが嫌いな理由に対してはなんでまたこんな話を出しているか?
と疑問を持っています。
またNode.jsの短所に対してコールバック地獄と言いましたが、そこに対しては僕も割と感じました。
Promise
、async/await
の登場である程度コールバック地獄が解決されましたが、そうとしても非同期Requestは使いにくいです。(これは完全に個人の実力の問題ですが...)
このブログを読んで一言すると、だから何が言いたいの?
でした。
(そう思えば、このブログもどうでもいい話をずーっと書いているんですね)
単純にPHPを使って面白かった!
との内容なのに大きなPHPに対する討論問題を投げちゃいました。
専門家から一言: WP-VCD マールウェアーでワードプレスが攻撃されている
タイトルで内容は想像できますね。パスします。
Laravelリリースプロセスはどうやって動作しているか?
以前のLaravelは5.4、5.5みたいにVersioningされましたが、6からはSementic Versioning(Semver)方式を使います。
Semver
によりMAJOR.MINOR.PATCH
の形式を持っているVersioningをします。
Semver
を使うことによりMINORバージョンの変わりで新しい機能が追加されたことがはっきりわかるようになりました。
チュートリアルおよびスキール
内容を全部説明するには時間が足りません。
簡単な内容とコメントを残します。
もし原作者の許可が得られたら、翻訳する可能性もあります。
Ubuntu 19.10にLAMP環境を作る方法
読む価値のあるブログと思っていますが、急いで必要な内容ではないのでアーカイブだけしておきます。
PHP REPL: PHPを学ぶためのInteractive編集エディター(ホットリロード)
簡単にPHPをテストしたいときに使用可能
一日でPHPUnit4からPHPUnit8にアップグレードする方法
開発だけを考えると1人で環境設定からやっている、慣れてない、ランニングカーブが高い...などの理由でUnitTestをしてない自分に対して反省が必要と思っています。
プロジェクトは少しずつユニットテストを導入したうえ、また読んでみようと思っています。
あなたのコードのバグを予防し、探し、直す7個のTip
内容は次のようです。
理解しやすい名前を付ける
PSR-2のようなスタンダードを使う
テンポラリー変数はできれば使用しない
マジックナンバー
はできれば使用しないDivide and conquer
Default to simple solutions.(SOLIDを守ろう)
テスト自動化
6番項目を読みながら、俺はSOLIDを守ってたか?ちゃんと知ってたのかな?と思いました。
また、逆にコードを理解するのにもっと時間がかかるんじゃないかとも思いました。
やっぱり勉強不足ですよね。
7番項目のテスト自動化に対しては口があっても話せない
状態です。
もっと頑張ります。
Prefixingを超えて: PHP名前空間に対するワードプレス開発者案内書
ワードプレスはコードを識別するため、すべてのところにPrefixをつけてきましたが、それはPHPのスタンダートに合わない方法です。
名前空間を使うことでコードを直感的に変えられます。
PHPerなら読んでみたほうがいいブログです。
関係問題
ORMを使用したら複雑な関係構造の問題・遅延ローディングによるn+1
問題が発生します。
LaravelでPivotテーブル
、Resources
、Relations
、Eager Loading
を利用し、パフォーマンスを改善する例が書いてあります。
データベースに対する知識が浅い僕には理解するのにかなり時間がかかりましたし、理解するのに相当のメモが必要でした。
(絵をかきながら理解するタイプなので、複雑なのを理解する時にはノートのメモが必要です。)
実はこのブログを作成している今にも半分くらいしか理解していません。
Laravelを使用する新しい方法がわかりましたので、すごくうれしいです。
まだ適用するところはないですが、次回もっと大きいシステムを作ろ時にこのブログを参考しようと思っています。
セキュリティーコーナー: Twist and Shout
ブログを開いた瞬間、これは理解できないじゃん!
という印象で、やっぱりそうでした。
セキュリティーに対するいろんな内容が書いてありますが、理解できたのはたった1つです。
mt_rand()
はレガシーアプリの保守目的以外には私用しちゃだめで、random_bytes()
とrandom_int()
は現在安全で、利用していいということでした。
おもしろいプロジェクト、ツール、ライブラリー
PHPWeeklyへ紹介されたプロジェクトリストです。
おもしろいと思ったら参加してもよいかと思います。
phpspreadsheet
、php-defer
、k-box
、lighthouse
は結構おもしろそうですね。
phpspreadsheet: PHPでスプレッドシート管理
php-defer: Go言語で遅延実行のために使われる
defer
をPHP化twigview: Twigテンプレート
k-box: ウェブ基盤ドキュメント/写真/映像/地理情報を管理するアプリ
symfony-blog: Symfonyで作られたブログツール、サンドボックス形式
lifterlms: ワードプレス学習管理システム(LMS)
postfixadmin: メールサーバーを基盤にしたドメイン/メールボックス/別称管理
portable-ascii: ASCII変換ライブラリー
contao: オープンソースCMS
lighthouse: LaravelでGraphQLエンドポイントを作成するためのライブラリー
bagisto: E-Commerceフレームワーク
leaf: マイクロフレームワーク
sulu: Symfonyフレームワークを使用して作られたCMS