IT ニュース&コラム 2019/11/18 通巻801号 技術版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ■■ Linuxによくある謎の記号による処理を説明変数で読みやすくする方法 ■■ 「UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである。」 Linux/UNIX 哲学が好きという人はシンプルな書き方や機能だけでいろいろなことが できるところが好きとよく聞きますが、その一方で謎の記号が多用されます。 たとえ謎であっても記号を数文字書くだけで処理ができれば、文字数が少ないから シンプルだという思想なのでしょう。 キーボードしか使えませんからタイプ数が 最重要です! シンプルであると言いつつ、bash シェルには、意外と多くの機能があります。 矛盾してますね。 ですが使えるものは使っていきたいと思います。 たとえば、変数の値からキーワードを検索して見つかった位置から値を取り出す ことが、特別なライブラリをインストールしなくてもできます。 full_path="/path/to/foo.tar.xz" echo "${full_path##*/}" では、上記のスクリプトを実行すると、何が表示されるか分かるでしょうか。 答は、foo.tar.xz と表示されます。 つまり、パスからファイル名の部分だけ 取り出しています。 文字数が少なくてシンプルで幸せになれましたね! では、どの記号がどういう機能を持っているのか説明していきたいと思います。 ${ } は、変数を参照するコード(の開始と終了)を表しています。 変数名は ${ } の中ではなく、その一部です。 変数名はアルファベットと アンダースコアではない、# より前の部分ですが、厳密には変数名にピリオドを 含むこともできるので、アルファベットとアンダースコアではない部分という のは正確ではありませんが、分かるからいいらしいです。 ##*/ の部分は、単に変数を参照するのではなく変数のある一部を参照する 機能を呼び出しています。 先ほど、ファイル名の部分だけ取り出すと説明 しましたが、実はそんな機能はありません。 ##*(キーワード) が、 最後(右)にキーワード(今回は / )とマッチした位置より右側を参照する という機能だったのです。 理解できた貴方は素質ありますよ! このように謎なコードが出来上がるわけですが、どうしても bash で処理を 書かなければならないことはよくあります。 幸い、情報処理というものは ざっくり言うとデータの変換の集まりであるため、処理名に頼りにしなくても 処理内容を知ることができます。 つまり、入力データ - 処理 - 出力データ のうち、入力データと出力データの内容を知ることができれば、処理を ブラックボックスとして処理内容を理解する必要がないことがほとんどです。 スマホの中でどんな処理をしようが、欲しい情報が得られる操作方法と、 その情報を得るために入力しなければならないことを入力することさえ できれば事は足ります。 この性質から、説明変数を使うことで、処理内容を理解することができます。 full_path="/path/to/foo.tar.xz" file_name="${full_path##*/}" echo "${file_name}" 説明変数では、##*(キーワード) が最後(右)にキーワード / とマッチした 位置より右側を参照する機能であることを理解していないですし、ファイル名 を取り出す機能ではないと間違って理解するでしょうが、何の問題もありません。 ##* の機能を正しく知って体系的に記号の羅列を理解すれば記憶する量が減るし 解読ができる能力もつくと考えるかもしれませんが、コードを書くときは、 ファイル名を参照する方法を検索して ##*/ が見つかったらそれを写せばいい ですし、コードを読むときは、説明変数から理解できます。 ##* を解析して 読むより絶対に早いです。 説明変数を書くと文字数が多くなるから書かなかったり 独自の略語で書いてしまうと、謎なコードが出来上がってしまうのは、UNIX哲学で 注意しなければいけないことなのですが、素質があればそれも不要かもしれませんね! 説明変数が何かについては、過去の記事で丁寧に説明していおりますので、 そちらを参照願います。 参考 https://ja.wikipedia.org/wiki/UNIX哲学 http://blog.livedoor.jp/sage_p/archives/51916281.html ■■ 注目ニュース 一覧 ■■ ◇ YouTubeの新しい利用規約が採算の合わないチャンネルを勝手に削除可能になるものだと物議を醸す。 https://gigazine.net/news/20191111-youtube-delete-accounts-commercially-viable/ … ITに関連することなら何でも三権を得ようとするグーグル。 ◇ グーグル検索、知らない単語の発音を学べる新機能を追加。 https://japan.cnet.com/article/35145443/ … 発音練習がAIになる。ネイティブでも認識できないことがあるAIだが。 ◇ 悪用の懸念もあるOpenAIの文章生成言語モデル、GPT-2最終版リリース。 https://japan.cnet.com/article/35145106/ … 弁護士や代筆者がAIになる。 ◇ ハイクオリティの動画を自動で生成する SoVeC Smart Video、月額定額制のクラウドサービス。 https://japan.cnet.com/article/35144951/ … イメージ動画の作成がAIになる。 ◇ メルカリが越境EC に参入。100カ国以上から購入可能に。 https://japan.cnet.com/article/35145470/ … 日本でしか買えないようなものを海外に売ることができるようになる。 ◇ 漁業、農業へのAI、IoT活用は実用段階へ。KDDIが手がける5つの事例。 https://japan.cnet.com/article/35145090/ … クラウドで出来そうな気がするけど具体的なソリューションが見えない不安がある。 ◇ JavaScript自作アプリが動くスマートウォッチ Bangle.js。Tensorflow LiteでAIも。 https://japan.cnet.com/article/35145280/ … 40KBしかRAMがないがガジェットの方向性が変わるかも。 ◇ マイクロソフト、カリフォルニア州の新プライバシー法の権利を全米で。責任者が意向。 https://japan.cnet.com/article/35145248/ … アップルとは違う方法でプライバシーを守っていく。 ◇ スマホゲーム ラブプラス EVERY のメンテナンスが長期化。再開日時は未定に。 https://japan.cnet.com/article/35145018/ … キャラクターの認知度は高いが技術力のなさで失敗しているコナミ。 ◇ 1万1000人以上の科学者が地球の気候は危機的状況にあると合同で宣言。 https://gigazine.net/news/20191106-world-scientists-declare-climate-emergency/ … 地球温暖化。 ■■ ソフトウェアデザイン館 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