IT ニュース&コラム 2020/11/ 9 通巻819号 技術版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ■■ チュートリアルや手順書を手軽にするプレースホルダーの書式 ■■ ## 一部を置き換えるチュートリアルの難しさ チュートリアルに書いてあるとおりに操作しているのに、 期待通りに動かなかったりすることがよくあると思いますが、 動かない原因の多くは、入力する内容を少し間違えてしまうことです。 たとえば、チュートリアルに bash シェルから入力する操作が $ az group create --name --location のように書かれているとき、 の部分を新しく作成するリソースグループの名前に置き換え、 の部分をリソースを配置する地域名に置き換えて az group create --name myTrial --location japaneast と入力します。 この置き換える部分を「プレースホルダー」と呼びます。 そして、次に入力する操作が $ az appservice plan create --name --resource-group --sku FREE --is-linux と書かれているときは、前に入力した内容と整合をとって az appservice plan create --name my-free-plan --resource-group myTrial --sku FREE --is-linux と入力します。 もし、 az appservice plan create --name my-free-plan --resource-group yourTrial --sku FREE --is-linux のように整合が取れていない値(yourTrial)を入力してしまうと チュートリアルは期待通りに動きません。 Response, Resource, Resume など似たスペルがあるプレースホルダーが 使われているときは、スペルにも注意が必要になります。 ○○でもわかる!ような具体的な説明になっていたとしても 整合性を取るために頭の中でいろいろ考えることが多く難しくなってしまうのですね。 ## 実際に入力する内容に置き換えてから実際に操作する 少し作業内容を工夫をしてみましょう。 あらかじめ実際に入力する内容に置き換えたコマンドを書くことです。 もし、 $ az group create --name --location のようにチュートリアルに書かれていたら、新しいテキストファイルなどに az group create --name myTrial --location japaneast と書いておきます。 そして、書いた内容をコピペすることでシェルに入力します。 この作業により頭の中だけでなく目で見ることができ、 1つ1つ冷静にプレースホルダーを置き換えることができるようになります。 チュートリアルや手順書がテキストファイルなら、 テキスト エディターの機能で**すべて置き換える** ことができ、何も考えずにコピペを繰り返すだけの単純作業になります。 これはかなり楽です。 ちなみに、Web に書かれたチュートリアルの中には自動的に置き換えて表示されているものも 登場しておりすごいと思ったのですが、まだ多くはありません。 また、そのチュートリアルの中でしか置き換えられません。 ## 様々なプレースホルダーの問題点 プレースホルダーの書式はチュートリアルによってそれぞれ異なります。 それぞれの特徴を挙げてみましょう。 代表的なのはこれらでしょう。 | サンプル | 書式 | | ------------- | ---------- | | | 山カッコ | | _placeHolder_ | イタリック | | ${placeHolder} | シェル変数 | | PLACE_HOLDER | 大文字のみ | 山カッコは HTML や XML の書き方と同じです。 標準的なのですが、この書き方では HTML や Markdown のソースに書くと タグに認識されて消えてしまうという問題があります。 <placeHolder> に置き換えれば表示はできるのですが 編集するのが大変です。 また、HTML のサンプルにこの書式のプレースホルダーを書くと HTML タグとの区別がつきません。 イタリックは多くのチュートリアルで見られるのですが、 プレースホルダーの部分かそうでない部分かを識別することが少し難しいです。 また、この書き方ではテキストファイルで表現することができません。 シェル変数の書式はシェルスクリプトの書き方と同じですが、 それゆえにシェルスクリプトのサンプルに使うことができません。 変数なのかプレースホルダーなのかの区別がつかないからです。 あわよくばシェルスクリプトに使えそうに思えますが、 シェルスクリプトにした場合、実際に入力する値が分かりにくくなります。 事前に変数への代入もしなければなりません。 シェルスクリプトだからそのまま実行できるように思えますが、 ステップ実行することが難しいという問題もあります。 大文字のみの部分をプレースホルダーにしているチュートリアルも見たことがありますが、 これは論外でしょう。 頭字語と客観的に区別することができません。 グローバルなスコープの定数にこのスタイルが採用されているために コードに使えません。 (最近はグローバル定数でこのスタイルが採用されることが少なくなりましたが) ## プレースホルダーはアンダーバー2つで囲むとよい 最も便利なプレースホルダーの書き方は、アンダーバー2つで囲むことです。 | サンプル | 書式 | | --------------- | ------------ | | __placeHolder__ | アンダーバー | 私がこの書き方を初めて見たのは、(意味はプレースホルダーではありませんが) Python の __init__ です。 Markdown での太字の書き方でもあります。 この書き方をチュートリアルや手順書のプレースホルダーに採用したら 多くのメリットが見えてきたので紹介いたします。 ## HTML や Markdown にそのまま貼り付けられる アンダーバー2つで囲む書き方の1つ目のいいことは、 HTML に書き換えるときにそのまま使えることです。 山カッコの場合、前述のような問題がありますが、 アンダーバー2つで囲む書き方であれば、 < > に置き換える必要はありません。 また、HTML のサンプルに使うこともできます。 Markdown に書き換えるときはアンダーバーではなく太字に変わります。 これは問題があるように思うかもしれませんが、 コードやコマンドの中で太字を使うことはないので実質問題ありません。 ## 識別しやすい、見つけやすい アンダーバー2つで囲む表現にすると、 山カッコやイタリックやシェル変数に比べて幅をとるためか、 速読したときでもプレースホルダーであるかそうでないかを識別しやすくなります。 | サンプル | 説明 | | --------------- | ------------ | | | 山カッコ | | _placeHolder_ | イタリック | | PLACE_HOLDER | 大文字のみ | | __placeHolder__ | アンダーバー | | ${placeHolder} | シェル変数 | 識別しやすいことは重要です。 コマンドを実際に入力する直前に 置き換えなければならない部分が残っていないかを 目視でチェックすることがよくあるからです。 また、テキストエディターの検索機能でアンダーバー2つを検索することで 置き換えなければならない部分を確実に見つけることができます。 Markdown のエディターを使った場合、太字になる部分の色が変わるため 見つけやすくなります。 ## ダブルクリック1発で選択して置き換えられる ダブルクリック1発で選択できると、 置き換える部分をダブルクリック ⇒ Ctrl + V ⇒ 置き換える部分をダブルクリック ⇒ Ctrl + V ⇒ …… という単純作業になります。 これは楽です。 ところで、ハイフンを単語の区切りにするケバブスタイル(例:my-resource)のシンボルは、 マイナスと区別できないために、ダブルクリック1発で選択できません。 my-resource の my の部分だけ選択されるか resource の部分だけ選択されます。 なので私はケバブスタイルは大嫌いです。 将来ケバブスタイルでもダブルクリック1発で選択できる 機能をエディターやシェルで登場してほしいものです。 山カッコとシェル変数は、これと同じ原因でダブルクリックしてもカッコは選択されません。 ダブルクリックするとカッコの中だけ選択されてしまいます。 置き換える範囲を1文字単位で正確にドラッグしなければならなくなり、 精神力が削られます。 ## エラーによって早く問題が分かる プレースホルダーになっている部分は英数字しか使えないなどの 「シンボル」であることが多いのですが、 そのシンボルの先頭にはアンダーバーが付いたシンボルが使えない ことが多いようです。 Lintなどのスタイルチェックを通せば警告される可能性も高いです。 エラーになれば置き換え忘れたという問題がすぐに分かります。 ## まとめ プレースホルダーをアンダーバー2つで囲んだときのメリットを以下にまとめました。 ぜひ試してみてはいかがでしょうか。 - HTML や Markdown にそのまま貼り付けられる - 識別しやすい、見つけやすい - ダブルクリック1発で選択して置き換えられる - エラーによって早く問題が分かる ■■ 注目ニュース 一覧 ■■ ◇ ギグワーカーは個人事業主。カリフォルニア州の住民投票で可決。 https://japan.cnet.com/article/35161961/ … 民主党といいIT企業といい支配者層に有利な選挙結果が多く、中国のようになってきた。 ◇ Windows 10 でこのPCを初期状態に戻すが利用できない問題、MSが回避策提示。 https://japan.cnet.com/article/35161454/ … 初期状態に戻すことは開発に置いて非常に重要だが。 ◇ システム認証をゲートウェイにまとめて細かい権限管理ができる HashiCorp Boundary。 https://gigazine.net/news/20201018-hashicorp-boundary/ … サーバーの中だけにある s の権限をとりまとめ。 ◇ 真っ黒で何となく怖いコマンド画面をとっつきやすくしたコマンド プロンプト (チャット風) 。 https://gigazine.net/news/20201020-cmdchat/ … たまに変えてみるのもいいかも。 ◇ 世界初の国家中央銀行発行のデジタル通貨が誕生。 https://gigazine.net/news/20201023-central-bank-digital-currency/ … 多くの人にとってお金のやり取りに関して不正がなくなりそう。 ◇ Internet Explorerで非互換のサイトをEdgeで強制的に開く仕様を追加。 https://gigazine.net/news/20201027-microsoft-edge-insted-internet-explorer/ … マイクロソフトも本気で IE を無くしたいらしい。 ◇ AMDがアメリカの半導体企業・ザイリンクスを3兆6000億円で買収。 https://gigazine.net/news/20201028-amd-acquire-xilinx/ https://japan.cnet.com/article/35161563/ … AI やデータセンターで使われる FPGA を AMD がほぼ独占。 ◇ アマゾン、37%増収の好決算。AWSは29%増。 https://japan.cnet.com/article/35161700/ … クラウドも順調に増加。 ◇ マイクロソフト、売上高と利益ともに予想上回る。Azure 売上高は48%増。 https://japan.cnet.com/article/35161576/ … Azure の増加は AWS より大きく、こちらも好調。 ◇ グーグルの親会社Alphabet、59%増益。広告が回復。 https://japan.cnet.com/article/35161699/ … GCP と Google Workspace で 45%増。 ◇ 有意義な仕事をしていると感じるために重要な3つのポイント 。 https://gigazine.net/news/20201017-3-keys-meaningful-work/ … 社会貢献している仕事であることと、上司のリーダーシップ。 ■■ ソフトウェアデザイン館 Sage Plaisir 21 ■■ ホームページ >>> http://www.sage-p.com/ メルマガ >>> http://www.mag2.com/m/0000083983.html ブログ >>> http://blog.livedoor.jp/sage_p/ ツイッター >>> http://twitter.com/Ts_Neko ダウンロード >>> http://www.sage-p.com/freesoft.htm サポート掲示板 >>> http://www.sage-p.com/kg_ban09/z6037C8.cgi 東日本大震災 >>> http://www.sage-p.com/saigai.html メール >>> ts-neko◇sage-p.com ←◇を@に変えてください 緊急メールは件名に「うどんメール」を付けてください。 このメルマガの登録・解除 - http://www.mag2.com/m/0000083983.htm