🌊

Technology Radar Volume 29 まとめ

2023/10/09に公開

2023 年 9 月 27 日公開。

https://www.thoughtworks.com/content/dam/thoughtworks/documents/radar/2023/09/tr_technology_radar_vol_29_en.pdf

Technology Radar についてはここにまとめている

この記事では次のことがわかる。

  1. 今号のテーマ
  2. 各カテゴリーごとの Adopt / Hold / ピックアップを紹介
    • ピックアップは将来的に影響がありそうなものや面白そうなものを選んでいる
    • 個人的な思いなども書いているので参考に

その他のまとめ

今号のテーマ

AI 支援によるソフトウェア開発: AI-assisted software development

GitHub Copilot に代表される、プログラマーの意図を汲んだコードサジェストやチャットによる的確なアドバイスを可能とする一連のサービスが普及してきた。

あくまでも「支援」であり、最初から最後まで生成を任せることはまだできない。

このテーマは生成 AI 爆発的な発展によるポジティブな面と捉えることができる。

生産性の測定はどのていど生産的なのか?: How productive is measuring productivity?

日本でも開発生産性という言葉がにわかに聞こえ始めている。

DevOps が浸透し、 Four keys 測定が国産ツールによって提供されるようになってきたことで扱える定量指標が増えてきた。また、 Developer eXperience に注力するにあたって説明責任を果たす意味合いでも SMART な目標としてコントローラブルな定量指標を使うことが多くなってきた。それらが開発生産性という言葉で表されることもあるだろう。

そして、前テーマに対して、生成 AI の発展によって膨れ上がった期待がもたらしたネガティブな面でもある。「生成 AI にすべてのシステム開発を任せてしまえるのではないか。その際の生産性は非常に高いだろう」といった期待から、現状の生産性を把握したいと考えるのは当然だろう。

だが、定量指標のみで開発生産性は測定できないという話もある。生産性について研究した論文では人間であることを前提とした測定をすべきという結果が出ている。こういった主張については開発者も人間なので、 HR 界隈では常識となってきた従業員エンゲージメントも考慮しなければならないだろうことは察しがつくだろう。 SPACE フレームワークDX フレームワークなど、人間的な側面も考慮したフレームワークがいくつも提唱されている。

たくさんの LLM: A large number of LLMs

前 2 テーマの前提ともなる、生成 AI のひとつ、 LLM の発展が目覚ましい。専門でないのですべてを追えているわけではないが、消費者が触れられるものだけでも両手の指で足りない程度にリリースされている。

また、 LLM 自体の発展とともにプロンプティングについても効果的な手法が提案されている。こちらの方がより実践しやすいだろうか。

リモートワーク手法の成熟: Remote delivery workarounds mature

COVID-19 によって、強制的に離れた場所にいるチームメンバーと仕事せざるを得なくなった結果、様々な知見が集積された。より良い仕事するための方法論だけではなく、リモートを前提とした組織の作り方についてもまとまった内容が発信されている。

Techniques

Adopt

デザインシステム: Design Systems

国内でも構築されることが多くなってきたデザインシステムが Adopt となっている。その背景としては今まで提供されてきた、一般的な UI ライブラリーを使うだけでは細かいカスタマイズやメンテナンスが難しかったというのもあるだろう。

最近は Radix UI など、ヘッドレスコンポーネントとデザイントークンをかけあわせて作成されることも多いのではないだろうか?

RFC を軽めに使う: Lightweight approach to RFCs

RFC というと古くはネットワーク通信の標準仕様を策定するものというイメージがあった。最近は GitHub Discussions 上などでソフトウェア仕様を議論し、 Markdown ファイルなどにまとめていくやり方も散見される。

開かれた場での議論はそれ自体が ADR として有用であり、また、多くの視点を得やすいため、より良いものが出来上がりやすいだろう。

もちろん、企業のプロジェクトとして RFC という手法を使っていくにあたって、既存のプロセスを踏んでいくことはメリットよりもデメリットが大きくなってしまう。このブリップは、そういったプロセスよりも、メリットを享受できる使い方を意識することで、より良いものを作る一助にしようという話だ。

Hold

OWASP Top 10 の無視: Ignoring OWASP Top 10 lists

OWASP Top 10 はセキュリティ攻撃の手法とその対策について、重要度などを鑑みて最低この 10 個は対策しておけ、という情報を提供してくれる。もちろん攻撃手法のトレンドは定期的に変化するため、 OWASP Top 10 の内容も定期的に変化する。これはすべてを網羅しているわけではないため、別途対象のシステムにあわせたセキュリティ評価はすべきだが、プロダクト作成時に最初から観点として盛り込めるため、一読をおすすめしたい。

最近では LLM 用のリストもあり、転ばぬ先の杖としての存在感を発している。

ピックアップ

OIDC for GitHub Actions - Trial

GitHub Actions を用いてデプロイする際に OpenID Connect 経由で短期間のみ有効なトークンを発行できる。 repo に API キーをベタ書きするより安全で、鍵保管サービスなどとの連携がないのですっきりする。

ReAct prompting - Trial

Reason と Act をプロンプティングすることにより、従来手法よりも適切な答えを引き出す手法。素人が見た感じ、目的の明示とサブタスクへの分解をしているように見えるため、精度も上がるだろうという感想だ。

パッケージ幻覚への対抗としての依存健全性チェック: Dependency health checks to counter package hallucinations - Assess

package hallucination という攻撃手法が可能であると、 Vulcan Cyber 社の研究者が警鐘を鳴らしている。

https://vulcan.io/blog/ai-hallucinations-package-risk?nab=0

このブリップは package hallucination への防御策として、依存のチェックをきちんとやりましょうね、というものだ。

Platforms

Adopt

Colima

https://github.com/abiosoft/colima

macOS における Docker ランタイムのひとつ。大企業では Docker Desktop のプラン変更の影響が大きかったが、 macOS についてはこれが最適解となるか?

Hold

なし。

ピックアップ

Orca & Wiz - Trial

どちらもクラウドにおけるセキュリティを測定、可視化してくれる SaaS 。

https://orca.security/

Orca はエージェントレスで各コンテナーイメージや k8s クラスター、サーバーレス設定のセキュリティを評価してくれるようだ。 CLI が提供されているので、 CI に組み込んで使うことができる。

https://www.wiz.io/

Wiz も Orca と同様の機能のようだが、稼働中のインスタンスに対しても実行可能だ。

CloudEvents - Trial

https://cloudevents.io/

マイクロサービスや分散システムなど、システム間で発生するイベントを定義している仕様群。こういった共通仕様を使うことで、様々なシステムが繋がりやすくなるだろう。

Kraftful - Assess

https://www.kraftful.com/

ユーザーからのフィードバックを集約してニーズなどを把握できる SaaS 。様々なプラットフォームから寄せられるフィードバックをサマライズして大意を把握できるのは良さそうだ。ただし、まだベータ版であることと、 iOS や Android の国指定に日本がなかったことから、十分に使えるわけではない。

Tools

Adopt

dbt

https://www.getdbt.com/

ELT でのデータ変換ツール。今どきの良いツールらしい。

Mermaid

https://mermaid.js.org/

DSL で図をかけるツール。いつのまにか mermaid.js という名前でなくなっていた。

最近は GitHub や Notion でサポートされていたりするので、図を書きたいときのファーストチョイスとなる。 Live Editor も提供されているので、ちょっと書いて共有したいときなどにも便利。

Ruff

https://github.com/astral-sh/ruff

Python 用リンター。とにかく速い。

Snyk

https://go.snyk.io/jp.html

脆弱性をスキャンしてくれるツール。真価はツールよりも脆弱性データベースが常にメンテナンスされていることだろう。

Hold

なし。

ピックアップ

cdk-nag - Trial

https://github.com/cdklabs/cdk-nag

CDK のセキュリティチェッカー。 HIPAA や PCI DSS のルールセットもあるので有用。

DX DevEx 360 - Trial

https://getdx.com/products/devex360

開発者体験を可視化する SaaS 。アンケートベースなので定性的なことも含めて評価できるらしい。 Gallup Q12 は従業員エンゲージメントを測定するためのものだったが、開発者に特化したものも出てきた。

mob - Trial

https://github.com/remotemobprogramming/mob

モブプログラミング用のツール。 GitHub と連携してドライバー交代をコマンドひとつで可能にする。同様の用途では VSCode の Live Share が便利だが、多少重かったりエディターが限定されてしまうという難点があった。これを使えばそういった点を解消できる。

MobSF - Trial

https://github.com/MobSF/Mobile-Security-Framework-MobSF

モバイルアプリ用のセキュリティチェッカー。モバイルにはモバイル特有の事情があるので、こういったツールを活用するのがいいだろう。

GitHub Copilot - Trial

https://docs.github.com/ja/copilot

Visual Studio Code で使うと文脈にあわせてコードが補完される。クラシカルな Intellisense では連打していたものが、 Tab キーひとつで済むようになっている。「これが欲しかった」というコードが出てくるし、 React useMemo / useCallback の依存など、定形処理を一発で完璧に補完してくれるので集中力や時間の消費が少ない。

問題となっていたライセンスや著作権に関する問題は Microsoft が後ろ盾になってくれるというアナウンスを出しているので、リスクを許容できるなら値段以上の価値をもたらしてくれるだろう。

また、 Individual Plan で public beta がはじまった GitHub Copilot Chat はひとりペアプロに使える気がする。作業を代替してもらう以外に命名を相談したり、リファクタリングのお供にしたりといった使い方ができそうだ。

Codeium & Tabnine - Assess

どちらもコードを書く際のアシスタントとして動いてくれるツール。 GitHub Copilot では著作権侵害の可能性を排除できないが、これらは学習データからグレーなものを省いているため、そういった心配をしなくてもいいようだ。

https://codeium.com/

https://www.tabnine.com/

また、どちらも多くのエディターをサポートしているため、お気に入りのエディターでこういった機能を使いたい場合にも候補に入るだろう。

Languages & Frameworks

Adopt

Playwright

https://playwright.dev/

ブラウザーに依らず E2E テストをかけるフレームワーク。かなり使われている印象。

Hold

なし。

ピックアップ

なし。

GitHubで編集を提案

Discussion