はじめに
2020年度XTechグループアドベントカレンダーの14日目の記事です。
エキサイト株式会社、新卒1年目の荒井です。
今回はMacで右クリックをすると表示されるメニューに「php日本語マニュアルで開く機能」という自作機能を追加していきます。
完成形としては下記画像の様な形になります。
右クリックした後に表示される「phpマニュアルで開く」という項目をクリックするとブラウザが新規のタブでphp日本語マニュアルを開きます。
下記の例ではarray_intersect_keyですので
https://www.php.net/manual/ja/function.array-intersect-key.php
が開かれます。
Github上でのコードレビュー時や他の技術ブログの記事を読んでいるときに役立てばいいなと思います。
環境
機種:MacbookPro 16
OS: macOS Catalina 10.15.4
作り方
Macの右クリックしたあとのメニューに表示される項目は「サービス」と呼ばれるみたいです。
このサービスメニューを作成するにはAutomatorという標準アプリを使用します。
Automatorとは
AutomatorではMacでできる様々な機能を組合わせてタスクを作成することができます。
- 画像からPDFを作成
- URLをダウンロード
- イメージのサイズ調整
などMacに標準で入っていて便利な機能をライブラリのように扱えるためよく調べておくと日頃の業務に活かせるかもしれません。
今回はそのなかでエンジニア的には一番便利なのではないかと思われる
- シェルスクリプトを実行
というものを使用していきます。
サービス作成までの流れ
それでは実際にAutomatorを使いサービスを作っていきます。
下準備
まずAutomatorを開くの下記画像のようになりますので「クイックアクション」を選択します。
すると下記画像のように
- ワークフローが受け取る: 現在の項目(テキスト)
- 検索対象: すべてのアプリケーション
となっていればここまでは大丈夫です。
このようにすることで選択したテキスト(今回でいうとphpのメソッド名)を受け取ることができます。
シェルスクリプトに選択した文字列を渡す
次に受け取ったphpのメソッド名をもとにphpの日本語マニュアルのページを開く機能を作っていきます。
検索窓から「シェルスクリプトを実行」を探しドラッグ&ドロップしてください。
その後、入力の引き渡し方法の部分を「stdin」から「引数として」に変更します。
下記画像のようになれば大丈夫です。
ここまででシェルスクリプトの引数にユーザーが選択したテキスト(phpのメソッド名)を渡すことができるようになりました。
今回はブラウザで特定のURLを開ければ良いので、下記のスクリプトをコピーして貼り付けてください。
replacedMethodName=${1//_/-}
open "https://www.php.net/manual/ja/function.${replacedMethodName}.php"
php日本語マニュアルではメソッド名にアンダースコアがある場合にURLではハイフンに置き換わっているようですので置換処理がしてあります。
(いまのところ上記の処理だけで動いているのですが、もしほかの規則が見つかった場合は書き加える必要があります。)
ここまで完了したら保存してブラウザを再起動すればサービスとして追加されていると思います。
デバッグ方法
今回は2行しか書いてないですが、もし複雑なスクリプトを書きたい場合はなんどか実行してデバッグをしたいということがあるかと思います。
今回の機能でいう「ユーザーが選択したテキスト」という部分をシェルスクリプトに渡すため__スタブ的なものを一時的に__ 置く必要があります。
検索窓から「指定されたテキストを取得」を探し「シェルスクリプトを実行」の前に置きます。
すると下記画像のように指定したテキストをシェルスクリプトに渡すことができます。
最後に
最近Automatorを使い始めたのですが、Macの便利な機能を自分のスクリプトに組み込むことができる点はすごく面白いと思います。
特定のディレクトリ以下の画像を再帰的にサイズ調整する、みたいな処理をしたいとなったときに言語のライブラリを調べるのも良いですが、MacのAutomatorから呼び出してみるのも良いかなと思いました。