メインコンテンツへスキップ

Prettier for PHP 0.1: 最初のアルファリリース 🎉

· 1分で読める
非公式ベータ版翻訳

このページは PageTurner AI で翻訳されました(ベータ版)。プロジェクト公式の承認はありません。 エラーを見つけましたか? 問題を報告 →

2017年12月中旬から200以上のプルリクエストがマージされたことを受け、Prettier for PHPの最初のアルファリリースを発表できることを嬉しく思います。このブログ記事では、プラグインの動作原理、設計思想、今後の展望について概説します。

動作原理

Prettierに新しい言語のサポートを追加するには、次の2つの要素が必要です:

  • ソースコードを抽象構文木(AST)に変換するパーサ。PrettierがJavaScriptで書かれているため、JS製のPHPパーサであるphp-parserを採用しています。

  • ASTをdocと呼ばれる特殊フォーマットに変換するプリンタ。これは基本的にソースコードに加え、改行を追加できる位置やインデント方法などの情報を含んだ形式で、Prettierが整形処理を行うために必要です。

パーサについては既存の成果を流用できましたが、PHPの多様なASTノードタイプをすべてサポートするプリンタは一から開発する必要がありました。今回のアルファリリースは、このプリンタがコードを破壊することなく再出力できるという確信を持てたことを意味します。

プラグインAPIの詳細については、公式ドキュメントをご覧ください。

設計思想

コードフォーマッタを開発する際、様々なコードスタイルに対応するため多くのオプションを追加したくなる誘惑があります。しかしPHPプラグインはPrettierの「意見を貫く」という哲学に従い、新たなオプションを追加しません。代わりに、PHPコミュニティで最も普及しているコーディングスタイルであるPSR-1、PSR-2、PSR-12を採用し、PHPコードの整形基準として活用しています。

JavaScript版Prettierの経験から、設定オプションを可能な限り少なくすることがPrettierの最大の強みだと確信しています。安定版リリース後は、最も議論の多いスタイル設定(例: 括弧のスタイル)について限定的なオプション追加を検討しますが、控えめな対応を維持します。

今後の展開

最初の安定版リリースに向けて、以下のマイルストーンを達成する必要があります:

  1. 書式設定によるコード破壊の100%防止

    この目標については現時点でほぼ達成しています。

  2. 美しい出力結果

    出力が美しくなければこのプラグインは名前に値しません。現状でも良好ですが、すべてのエッジケースを処理するにはさらなる作業が必要です。

  3. 統合環境の対応

    現在はREADMEの手順に従いコマンドラインからプラグインを試せますが、お気に入りのエディタでのプラグインサポートはまだ機能しない可能性があります(VS CodeAtomVimの関連イシュー参照)。また、PHPプラグインはPrettierのプレイグラウンドにも未統合です。

Prettier for PHPに興味をお持ちですか?私たちと共に最初の安定版リリースを実現するために、ぜひ以下の活動にご協力ください: