Software Design の2021年6月号について、
- ざっくり内容紹介
- 個人的に気になった記事やポイント
をまとめている記事です。
サマリー記事の一覧はこちら。
特集①:Visual Studio Code 拡張機能
- VS CodeのGit操作をもっと楽に
- 初っぱなからなんだけど、僕はVS CodeのGitがすごく好きではないので見出しを見てちょっとモチベーションが下がってしまった…。でも正面から突っぱねるのは何事も良くないので一応ちゃんと読んだ。
- まずは標準内蔵Gitで初期設定とかやる話の紹介
- Git Graph
- 標準Gitではコミット履歴を分かりやすく可視化してくれるものはないので、Git Graphという拡張機能を使う
- まあ良いのだけど、GUIの観点ではSoureTreeに勝るものはないと思っているのと、エディタの画面内で大量の領域を占拠されるのにとてもストレスを感じるという理由があるので、やっぱりないかな…という感想。
- と思っていたらコミットグラフは設定次第でかなり見やすいものにはなりそう。
- 難しい問題だけど、そもそも「コードエディタと同じアプリケーション内でやる必要がどの程度あるのか?」というところに議論が帰結する気がする。これをメリットに感じるか否かは各個人の作業思想と性格によるんだろうな。
- 標準Gitではコミット履歴を分かりやすく可視化してくれるものはないので、Git Graphという拡張機能を使う
- 別の拡張機能、Git History
- こちらもコミット履歴などが見れるもので(そのままw)、ファイルごとのコミット履歴が見れるのが強みとのこと。
- こうなってくるといよいよ「1つにしろ」感が否めないけどちょっと的外れな意見な気もするので黙っておこう
- GitLens
- 半角スペースがないのは誤植じゃないよ
- 要はエディタのファイル上でコミット情報をインライン表示してくれるというもの
- 場合によっては助かるシーンもあるかもしれない、まさかデフォルトで使うものじゃないよね…?
- こちらもコミット履歴などが見れるもので(そのままw)、ファイルごとのコミット履歴が見れるのが強みとのこと。
- サーバ作業もVS Codeでやりたい
- 「大きく出たな!」と思いましたが、紹介されているのはRemote - SSHでした。
- 典型的なLinuxサーバなどでの作業中、Vimが出てきて困ってしまうシーンでVS Codeを使える、というもの
- こうなってくると「コードエディタ内に拡張機能として内包されていること」の良さがビンビン出てくるよね。アドオンの良さは存在場所の意義と同義だと思うわけです
- これは使ったことがないけど、Windowsの開発であれば最近はWindows Terminalが優秀で気に入っているし、やっぱりエディタの画面を使うよりはウィンドウ(というかアプリケーション)を分けたいなと思うのが個人的な意見。サーバ上のテキスト編集で困るシーンはほぼないし、そもそもそんな大規模な編集って普通サーバー上でやらんよね?(Vim使えないマンだけどnanoで事足りてる)
- どのPCでも同じ設定で使える
- Setting Sync
- 設定の同期は昔試したとき「絶望的な何か」を経験してやめた気がするので今も使っていない
- VivaldiもAdobeそうなんだけど、「同期」というとき「どっちの環境をどっちに同期するのか」が明記されていないことが多く、苦労して作った設定環境が意図しない方に上書きされたり…みたいなことが多くいつも困るのでアプリケーション標準の設定同期は基本使わない主義になった
- というか
settings.json
とkeybindings.json
をコピーするだけ全て事足りてるのだけど、他に同期しないといけないものってなんだろう?今までこれでPC何台も環境設定やってきたし。- ウィンドウ状態とかはプロジェクトごとに
.workspace
を作って対応しているのでこれも問題ない(同じプロジェクトを違うマシンで触ることは基本ない) - なんか今回は批判ばかりしている気がして自分でも心地悪いw
- ウィンドウ状態とかはプロジェクトごとに
- 自分のPCを汚さない開発環境
- これはなんの話か分からなかったけど、コンテナを使ってVS Code内の環境も複数用意しよう、とかみたいなものっぽい
- Remote - Containersを使う(Remote - SSHの兄弟?)
- 実際Macではこの手の問題で困ることが多く、これはかなり魅力を感じる…!問題はVS Code上で環境を分ける意味がどこまであるか、かな?
- なんかあとは使い方とかの話だったので割愛、存在は覚えておこう。
- リモートでペアプログラミング
- Live Shareでペアプロする
- 時代に合っていてよいものだと思うのだけど、なんか色々弊害もありそうでやっぱり実業務へのすぐの導入は難しいんだろうなーという感想。そもそもペアプロはスキルや環境以前に人間性同士が合っていないと問題g(略
特集②:使いどころのわかる正規表現入門
- 正規表現が大好きなので少し前にもSoftware Designの読者アンケートに「正規表現の特集をやってほしい」みたいなことを書いた気がするのだけど、まさか当たった…?笑
- 正規表現はじめの一歩
- 概要説明
- 「正規表現は万能ではない」→ときには使わないほうがいいときもある、可読性の低さから考えるに適切な処理案内などは必須になっていく
- 基本の理解をシェル(bash)で学ぶ
- 概要説明
- シェルとコマンドで正規表現
- 「正規表現はログの調査に便利」という文脈でよく紹介されるとのこと。知らなんだ。CUIから
grep
とかで抽出ってこと? - この筆者さんはそんな背景を理解しつつ魅力的な例で紹介したいと思ったが、「正規表現は常に誰もが使うものではない」ことにも配慮しつつ「ハサミや糊」とたとえ、その導入を説明しています。よい文章だった。
- ここは正規表現そのものの話というより、正規表現を使うコマンド類の使い方的なお話。
grep
の3つの表現- 基本正規表現 - BRE
- 拡張正規表現 - ERE
grep
に-E
オプションつけたときのやつ、エスケープするものが変わる
- Perl互換正規表現 - PCRE
- たぶんだけど、普通のプログラミング言語で使っているいつもの正規表現(に最も近いの)がこれ(合ってる…?)
- Perlで使われる強力な正規表現を使える。
grep
だと-P
オプション。よく見る。 - 最も楽になる良い例として、最短一致が挙げられていた
- 「正規表現はログの調査に便利」という文脈でよく紹介されるとのこと。知らなんだ。CUIから
- 正規表現で日本語バリデーションを実装する
- 日本語校正サイトの制作者に誤マッチの効果的な潰し方を学ぶというもの、なんて面白そうな内容…!
- 正規表現エンジンのクセを知っておく
- PCRE系
- さっきから出てるやつ。Perlはもちろん、PHP、Ruby、Python(reではなくregex)、.NET
- JavaScript系
- ブラウザ上が実行環境なことにより組み込みの正規表現エンジンを使うしかなく機能不足と長年言われていたが、ブラウザのエンジン側が急速に発展したことによりPCRE系と遜色ないデキに。
- POSIX系
- 「重要な機能を欠いている」とのこと。これはシェルコマンドの
-P
オプションなし状態とは別物???
- 「重要な機能を欠いている」とのこと。これはシェルコマンドの
- PCRE系
- ら抜き言葉の検出
- ページめくったら普通に日本語の文法本みたいになってて草
- 「活用を考えて正規表現パターンを作る」ということのようなんだけど、まあ考えてみればこの作業になるのは当然だよね
- 運用まわりの実践的注意点
- 無理せずパイプで分ける
- ネガティブマッチに注意する
- 昔から「~以外」ってできないよなぁと思ってたけど、やっぱりそういうものなんだね。提示されていた解決策もやはり否定先読みとかでした
- ユーザーの入力文字はサニタイズしてから利用する
- PCRE系では冒頭の
^
と末尾の$
に注意する
- 正規表現を確認できるサイトで僕も大好きな愛用サイト「regex101」が紹介されていた。どうでもいいけどこれダークモードあるんだよね、最近気付いた。
Development
- アジャイル開発の新常識 第7回 手段が目的になっていない?アジャイルなテスト自動化とかは
- 最近うちでもアジャイルやらスクラムやらスプリントやら話題沸騰がすごいので少し読んだ。…けど、連載中でいきなりテストの話だったのでまあ特にはいいや。
そのほか
- ITエンジニア必須の最新用語解説「Deno」
- なんのことか全然知らん初耳の言葉だったけど、Node.jsをさらに改良したJavaScriptエンジンらしい。ベースはV8。
- もちろんTypeScriptも動く
- Node.jsと作者が同じらしい、精力的すぎる…
- セキュリティや生産性にフォーカスされている
- Node.jsで反省したこと(一例)
- 非同期処理にPromiseを使わなかったこと
- V8エンジンのセキュリティサンドボックスを採用できていないこと
- モジュールの依存関係の解決が複雑になっていること
- Node.jsと違うところ
- 標準でTypeScriptをサポート、
.ts
ファイルも動く - 必要な権限は実行時に明示する
- npmは使わない
- Pythonのようにimportで直接指定(URL指定らしい)する、みたいなことのようだけど、つまり標準モジュールみたいな概念もなく全てでパッケージのインストールが不要なんだろうか?それは環境依存なくてアツい
- requireが廃止sssれてES Modulesに統一された
- 非同期処理にPromiseを採用
- これは喜ぶ人多いよね!
- 開発支援ツール(たぶんLinterとか?)も標準搭載
- 標準でTypeScriptをサポート、
- TypeScriptがすぐに普及したように、これは数年後急上昇しているのかも。特にPromiseとパッケージ依存ないのはめちゃ大きいと思う…!
Software Design 2021年6月号
この号の分のみ単品で読みたい方は、普通にAmazonで買うのがおすすめ。
紙 or 電子書籍で選べます。