Visual Studio Code の PHP 言語サポート vscode-php-intellisense

本記事の 2017 年版を記載しましたのでご参照ください。

https://another.maple4ever.net/archives/2321/


Visual Studio Code Advent Calendar 2016 の 12日目です!

ここのところずっとウォッチしていました、Visual Studio Code(vscode)で利用可能な PHP サポート拡張になります “vscode-php-intellisense” が完成度をあげ、かなり良い感じになっています。 🙂

https://github.com/felixfbecker/vscode-php-intellisense

Advanced PHP IntelliSense for Visual Studio Code. In opposite to the included PHP IntelliSense and other PHP extensions, this uses an AST to parse the source code instead of relying on naive regular expression parsing.

少し前まで PHP をかくときは、Eclipse の PHP Developer Tools を使っていましたが、vscode-php-intellisense がほぼ同様の機能を実装しましたので、検証しながら乗り換えをしております。

以下、vscode-php-intellisense で WordPress を読ませて動作させている様子です。(サイトの横幅の関係でスクリーンキャストがつぶれてしまいましたので、見づらい場合は画像をクリックしてフルサイズでご覧ください)

まずはエラーチェック。構文間違えなどをリアルタイムに指摘してくれます。

error

定義ジャンプ。PHPDoc が表示でき、関数・メソッドの定義位置に F12 でジャンプします。これがないと困ります 🙂

jump

「定義をここに表示」と「参照先検索」機能。「ここに表示」はインラインで関数定義の内容をぱらっとみるとき便利です。また、PHP は動的型付け言語なので完全ではありませんが、呼び出し元検索があるのは嬉しい部分です。

ref

最後は入力補完。 PHP の標準関数を補完しています。 PHPDoc を表示しながら、引数が入力できます。

comp

ユーザ定義関数の補完も現在 master ブランチでは可能になっています。 コメントアノテーションもみて、参照を解決しているのが分かります。

https://github.com/felixfbecker/php-language-server/pull/165

comp2

Ecipse PDT や PHPStorm 並の機能です。すごい。

このペースでいきますと、おそらく年内にはユーザ定義関数の補完も実装が完了し使える形になると思います。つまりは、WordPress や baserCMS のテンプレートタグの補完が可能になります。 😀

ユーザ定義関数補完以外は既に動作するものが Marketplase にリリースされていますので、まずは導入してアップデートを楽しみに待ちましょう。 🙂

https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-intellisense

Advanced PHP IntelliSense for Visual Studio Code.
In opposite to the included PHP IntelliSense and other PHP extensions, this uses an AST to parse the source code
instead of relying on naive regular expression parsing.

その他の機能のスクリーンキャストは以下で見ることができます。(ぼくのへたなアニメよりずっと分かりやすいのでぜひご覧ください…)

https://github.com/felixfbecker/vscode-php-intellisense

さて、この拡張は同じ作者の方がかかれている PHP 7 で実装された php-language-server を利用して動作しています。(このため、拡張を動作させるには vscode を動かすマシンに PHP 7 が導入され、パスが通っている必要があります)

この親となっている php-language-server ですが、これは Microsoft Language Server Protocol の実装です。

Language Server Protocol は、エディタ(IDE)と言語解析器をつなぐための共通プロトコルですので、今後 php-language-server は vscode 以外のテキストエディタと接続できる可能性があります。 (既に Eclipse Che が PHP サポートの実装に php-language-server を使っています)

逆に Visual Studio Code から見た場合、新しく追加された言語サーバーに接続することで、どんどん対応言語を増やすことができる仕組みです。(現在 vscode は Language Server Protocol クライアントのリファレンス実装のような形になっています)

vscode と Language Server Protocol を使って対応されている言語の一覧は以下で見ることができます。

https://github.com/Microsoft/language-server-protocol/wiki/Protocol-Implementations

Language Maintainer Repository
PowerShell MS VS Code PowerShell extension
C++ MS VS Code C++ extension
C# OmniSharp Many integrations, repository
JSON MS Bundled with VS Code
CSS/LESS/SASS MS Bundled with VS Code
Xtext language framework Eclipse Eclipse Xtext
Crane PHP HvyIndustries VS Code Extension
PHP Felix Becker php-language-server
Haxe Dan Korostelev (@nadako) VS Code Haxe extension
Java (javac) @georgewfraser Javac based Java support
RAML RAML Workgroup raml-language-server Work in Progress
API Elements Vincenzo Chianese(@XVincentX) vscode-apielements
groovy Palantir groovy-language-server
Java (Eclipse) Eclipse, RedHat java-language-server, becoming Eclipse JDTLS
OCaml/Reason freebroccolo ocaml-language-server
Go Sourcegraph sourcegraph-go
Rust Jonathan Turner rustls
Scala Iulian Dragos dragos-vscode-scala
Polymer Polymer Team polymer-editor-service

まだまだ未完成のものもありますが、PowerShell などは完成形になっていてかなり使いやすいです。 標準の PowerShell ISE より良いかも?

というわけで、このような言語サポートも手伝って Visual Studio Code は愛用のエディタになりました。開発も活発なので今後も楽しみです。 😀

OSC 北海道 2015 WordBench 札幌 & baserCMS ユーザ会セミナー・ブース出展

6/13(土) OSC 北海道 2015 2日目に、WordBench 札幌と baserCMS ユーザ会の名前で、セミナーとブース出展を行ってまいりました。 🙂

今年のセミナーは WordPress を WP Multibyte Patch プラグインでおなじみ tenpuraさん(倉石さん)にお願いし、ぼくのほうは baserCMS のセミナーを担当させていただくという布陣で参加しています。

baserCMS のほうは、朝一番ということもあり、もしかして 10名くらいしか来られないのではないかと思っていたのですが、実際には倍以上の方が来場され、最後に質問もたくさん頂き、感謝、感謝でありました。

「ウェブサイト構築基盤、コーポレートサイトにちょうどいいCMS、baserCMSの紹介」というお題で、セミナーで使いましたスライドをこちらで公開します。

tenpura さんは「WordPress 最新情報、プロジェクト参加・貢献のご案内」ということでセミナーをされました。

WordPress でお金を稼いだことがある方は?

その中で、WordPress に貢献したことがある方は?

から「やべぇ、怒られるのか!?」と思わせるに十分な導入部は、

「貢献しよう」ではなく「貢献できます」

「押しつけがましいのは好きではないです。」

「こ、貢献してあげても、いいんだからね。」

というくだりに続き、オープンソースの本質をつく、OSC ならではのとても面白いセミナーとなりました。

セミナー中、最新 WordPress リリースリーダーをされた高橋大輔さんと、現存する最古の開発者(!?!?)としてぼくが並ぶ一幕もあり OSS の面白さを再確認することができました。(なんと年齢差 22 歳・・・ よぼよぼ。。)

さて、ブースのほうの話題ですが、baserCMS は今回なんと福岡から、開発リードをされています、江頭さんが来てくれまして、盛大に出展することができました。(ありがとうございました!)

手前から、baserCMS、WordBench 札幌、SaCSS ブースと仲良く並んでおります。 🙂

いつもお世話になっている、SaCSS ハムさんシール。 🙂

というわけで、数えてみたら OSC 北海道参加を続けて今年で 5年目でした。ネクストジェネレーションの活躍を楽しみに、来年もがんばろ〜。 🙂

セミナー・ブース関係者のみなさま、OSC 関係者のみなさま、今年もありがとうございました!お疲れ様でした!

クロスバイクでサイクリング(追加で買ったもの編)

去年くらいから体調があまり良くなく(歳ですゆえ…)、運動不足解消のためにと最近クロスバイクを買ってサイクリングを始めました(^ ^

bscycle-01

実は買うまでクロスバイクの由来も知らなかったのですが、山を走るマウンテンバイクと、スピードレースをするロードバイクの間の子とのこと。

購入車種は Marin Bikes の MUIRWOODS SE 19 インチ。SE はジャパンスペシャルということで、タイヤのサイズが異なったり、ブレーキがディスクからVブレーキに変更されているなど、日本の事情に合わせたモデルになっているようです。

26インチの少し太めタイヤということで、通常のスピードを出すクロスより街乗り向き。700c 細タイヤは段差でアイタタタってなりますが、この自転車はクロモリ(鉄)フレームとも相まって、スピードは犠牲になるものの柔らかい乗り味なのではないかと思います。

ちなみに腕が悪いのかホイルベースの長さか(多分前者)アンダーステア気味でしょうか。おもったより曲がらなくてドキッとすることが何度かありました。

さて、街乗りクロスといえどスポーツ自転車には走る以外の機能はついていませんので、いくつかパーツを買い足す必要があります。

必需品からそうでないものまで、購入して2ヶ月使って良いなぁと思ったものを紹介してみたいと思います。初めてクロスバイクを買う方の参考になれば。

ライト

自転車にライトは必ずつけます。たまに夜のサイクリングロードに無灯火が走っていますが、本気でステルスなので危ないです。リアもあったほうが良さそうです。

bscycle-02

bscycle-03

ライトパネルを押し込むと点灯するタイプが操作もしやすく便利でした。

Amazon より「Blackburn(ブラックバーン) VOYAGER+MARS CLICK COMBO ヴォイジャー+マーズクリックコンボセット ブラック 3BB-VY/MS-CLK」

フロントリアライトセットがお買い得。ゴムバンドをきつく伸ばして自転車のフレームに装着します。

盗まれないように鍵をかけましょう。

bscycle-06

長め太めのワイヤーの鍵で、走行中には肩からかけると安全反射板の役割になるタイプもあるようです。(Amazon より )

空気入れ

スポーツ系の自転車のタイヤは常にパンパンにしておかないと、スピードも出づらくパンクもしやすいとのこと。タイヤに空気圧の仕様が書いてありますので、走る前に圧力計を見ながらいっぱい入れてあげましょう。ぼくのは6気圧でした。

bscycle-17

米式/英式/仏式とコネクタが3種類あって、アダプタで互換できる空気入れが多いようです。1000〜2000円くらい(Amzon より 空気入れ

泥除け・スタンド

ほとんどのクロスは、泥除けもスタンドもついていないので追加購入。

bscycle-07

雨天は走らないので泥除けはいらなかったかも。ちなみに後ろにしかつけなかったので、あまり意味もなしてません。。ホコリよけくらいにはなっているかな?(笑)

スタンドは多くの場合必要になると思いますので自転車屋さんで合わせて購入を。サービスで取り付けもしていくれると思います。価格は 1000〜2000円くらい。

すそバンド

すそが広い服を着てクロスをこぐと、右のギアにひっかけて破けます(経験者)。というわけで、特にスーツ通勤で使う方はすそバンドを買いましょう。

bscycle-14

服によってはもんぺみたいになるのが玉に瑕ですが、しょうがありません。。こちらも鍵と同様反射板になっているタイプがあるようです。(Amazon よりすそバンド)

ドリンクホルダー

長距離、といっても1時間くらい走るなら水分補給必須。市販のペットボトルがそのまま使えるドリンクホルダーがとても便利です。

bscycle-04

bscycle-05

丸ボトルでも四角ボトルでもがっりちホールドでしてくれます。ちなみに愛車の MARIN ちゃんは縦にも取り付けられるネジ穴あり。お手持ちの自転車を確認してみましょう。

Amazon より「Bikeguy ペットケージ (500mlペットボトル専用) ブラック」

これで 627円はお買い得。ドリンクの収納取り出しもさっとできてお勧めです。

ハンドルグリップ

クロスを乗り始めて2〜3日はおしりが痛く、スポーツ自転車はやっぱり乗り心地は悪いかななんて思いましたが、ハンドルとペダルとサドルの3点で平均して体重を支えるということを意識してからは快適に運転できるようになりました。最近ではこのサドルは柔らかいなぁなんて思います。

ただ、ハンドルの握りだけは丸いグリップを掴み続けると指が固まるような違和感が。こちらは結構な時間乗っても修正できなかったのでグリップを変更。

bscycle-10

エルゴノミクスタイプのグリップに。向きをうまく設定すれば、段差の不快なショックも吸収してくれてかなり快適です。お勧め。

Amazon より「ERGON(エルゴン) GP1 ロング Lサイズ HBG08001」

グリップの取り換えは、元のグリップをごじってハンドルから外すか(結構疲れる)、ゴムであればカッターで崩壊させて新しいものと付け替えます。

その際にブレーキ位置を奥に変えなければいけないかもしれません。この場合はブレーキワイヤーのテンションが変わるので要ブレーキ調整です。(気をつけて)

メッセンジャーバッグ

クロスには買い物カゴがついてませんので、荷物を運ぶために斜めがけができる小さめメッセンジャーバッグを持っていると便利です。

bscycle-08

サイクリングしていると同じもの持ってる人たまに見かけます。 定番なんでしょうか? 🙂

Amazon より「Manhattan Portage 1606VJR」と「[ManhattanPortage] ショルダーパッド LGサイズ SHOULDER PAD LG MP1001」

メッセンジャーバッグを使いながら自転車に乗っていると、結構ストラップが食い込んできますのでショルダーパッドをつけたほうが良さそうです。

パンク修理セット

遠出して自転車がパンクしたり故障したりしたら悲しいので、バッグには修理セットを忍ばせておきましょう。

bscycle-13

ポータブルの空気入れと、パンク修理セット。自転車に合わせて六角レンチ、ドライバーなども入れておくと良いと思います。

Amazon より「Panaracer(パナレーサー) ミニフロアポンプ [フットステップ装備] 米式/英式/仏式バルブ対応 BFP-AMAS1」と「 Panaracer(パナレーサー) タイヤレバー&パンク修理パッチキット [携帯用ポーチ付属] PTL-KIT」

携帯ポーチがお気に入り。

スマートフォンホルダー

走った記録を GPS から計測したり、地図を手軽に見るためにスマートフォンを装備。

bscycle-11

bscycle-12

Garaxy S4 ですが、うまく固定されています。

Amazon より「MINOURA(ミノウラ) スマートフォンホルダー [iH-500-STD] 」

サイドアーム側は段差の揺れにも耐え、かなりがっちり固定されますが、ある程度経過するとさすがに振動でフレーム側の固定ネジが緩むなどはしますので、念の為ストラップはつけておいたほうが良いです。気がついたらネジをきつくしめておきましょう!

Runtastic Roadbike

スマートフォンアプリ「Runtastic Roadbike」。 GPS から距離や速度を計測し、地図の情報と合わせて走行ログを記録してくれます。

bscycle-16

Pro 版を購入して使っていますが、アップダウンも計測してくれるのがお気に入り。総走行距離もでますのでやる気もアップ。

測定開始から2ヶ月で520キロ走行したようです。年内 1000 キロを目標にしていましたがこの調子ならいけそう。 北海道は自転車に乗れる次期が短いですが。。 😉

調べてみると札幌には距離が長めのサイクリングロードが結構あります。

サイクリングマップ/札幌市

建設局総務部自転車対策担当課では、市内一円のサイクリングロードを紹介する「さっぽろサイクリングマップ」を作成しております。

今日は豊平川を遡上して、滝野森林公園・滝野の森口まで片道約 20キロ。 1時間13分でした。帰りは思いっきり下りなので 45分くらい。

bscycle-15

途中上りが結構きつかったですが、たまたま走っていた練習中のロードの人と、サイクリングなマウンテンバイクな人をマイルストーンにさせてもらって無事到着。 🙂

さぁ、目指せ支笏湖片道 50キロ!(超上りらしい…)