Technology Radar vol.28(2023年04月版)を読む
Technology RadarのApr. 2023を読んだので、気になった項目をまとめて、感想を記録しておく。
今後調べたいものは以下の通り。
- K3s
- Modal
- Ory Kratos
- Quarto
その他に気になったものを取り上げる。
Techniques
3. Dependency pruning
Adopt
スターターキットやテンプレートは、初期セットアップをスピードアップするために、ソフトウェアプロジェクトで広く使用されていますが、特定のプロジェクトに不必要な依存関係を多く取り込む可能性があります。依存関係の刈り込みを実践することが重要である。定期的にこれらの依存関係をよく見て、使用されない依存関係を刈り込むのである。これにより、ビルドとデプロイにかかる時間を短縮し、潜在的な脆弱性を取り除くことでプロジェクトの攻撃対象領域を減らすことができる。これは新しい手法ではないが、ソフトウェア・サプライチェーンに対する攻撃の頻度が高まっていることから、私たちはこの手法に改めて注意を払うことを提唱する。
8. レイクハウス・アーキテクチャ
Trial
レイクハウス・アーキテクチャは、データレイクの拡張性とデータウェアハウスの信頼性とパフォーマンスを組み合わせたアーキテクチャスタイルである。レイクハウス・アーキテクチャは、データレイクの拡張性とデータウェアハウスの信頼性とパフォーマンスを組み合わせたアーキテクチャ・スタイルであり、レイク層とウ
ェアハウス層に分けてデータを保管するのではなく、単一のプラットフォームで大量の多様なデータを保管・分析することを可能にする。この用語はDatabricksのようなベンダーと関連付けられることが多いが、Delta Lake、Apache Iceberg、Apache Hudiのようなオープンな選択肢も検討に値する。Lakehouseアーキテクチャはデ
ータメッシュの実装を補完することができる。自律的なデータプロダクトチームは、データプロダクト内でレイクハウスを活用することもできる
11. AIによるテストファースト開発
Access
ソフトウェア業界の多くの人たちと同じように、私たちもコードを書く際にサポートしてくれる、急速に進化しているAIツールを探求してきました。多くの人がChatGPTに実装を渡し、その実装のテストを生成するように依頼しているのを見かけます。しかし、私たちはTDDの信奉者であり、潜在的にデリケートな実装コードを常に外部のモデルに与えたくないので、この分野における私たちの実験の一つは、AI支援テストファースト開発と呼ばれるテクニックです。この手法では、ChatGPTにテストを生成してもらい、開発者がその機能を実装します。具体的には、まず複数のユースケースで再利用可能なプロンプトの「フラグメント」に、技術スタックと使用しているデザインパターンを記述します。次に、実装したい具体的な機能について、受け入れ基準も含めて説明します。それを基に、ChatGPTにその機能の実装計画を我々のアーキテクチャスタイルと技術スタックで生成してもらいます。その実装計画をチェックしたら、受け入れ基準のテストを生成してもらいます。このアプローチは驚くほどうまくいきました: チームに自分たちのアーキテクチャスタイルを簡潔に説明することを求め、若手開発者や新しいチームメンバーがチームの既存のスタイルに沿った機能をコーディングするのに役立った。このアプローチの主な欠点は、モデルにソースコードを渡さないにもかかわらず、技術スタックや機能の説明など、潜在的にセンシティブな情報を与えてしまうこと
だ。チームは、少なくともこれらのAIツールの「ビジネス向け」バージョンが利用可能になるまでは、知的財産権の問題を回避するために、法律顧問と協力していることを確認する必要がある。
14. チームの知識ベースとしてのLogseq
Access
チームのナレッジマネジメントは、Wikiのようなツールを使って情報を保存したり、新しいチームメンバーに参加させたりすることでよく知られています。Logseqをチームナレッジベースとして使用するチームもあります。オープンソースのナレッジマネジメントシステムであるLogseqは、グラフデータベースを搭載しており、ユーザーが考えやメモ、アイデアを整理するのに役立ち、Gitベースのストレージを使用してチームでの使用に適応させることができます。Logseqによって、チームは民主的でアクセス可能なナレッジベースを構築し、各メンバーにパーソナライズされたラーニングジャーニーを提供し、効率的なオンボーディングを促進することができる。しかし、他のナレッジマネジメントツールと同様に、チームは情報過多や無秩序を避けるために、ナレッジベースの適切なキュレーションと管理を行う必要がある。同様の機能はObsidianのようなツールでも利用可能だが、Logseqの重要な違いは、段落ベースのリンクにより、チームメンバーが記事全体を読むことなく、関連するコンテキストを素早く見つけることができるという、消費に焦点を当てた点にある。
Platforms
25. K3s
K3sは、エッジコンピューティングのニーズやリソースに制約のある環境向けのデフォルトのKubernetesディストリビューションです。これは軽量で完全に準拠したKubernetesでありながら、運用のオーバーヘッドを削減している。デフォルトのストレージバックエンドとして、etcdの代わりにsqlite3を使用しています。関連するすべてのコンポーネントを単一プロセスで実行するため、メモリフットプリントが削減されている。産業用制御システムやPOS機器などの環境でK3sを使用していますが、この決断には非常に満足しています。K3sのランタイムcontainerdがwasmをサポートするようになったことで、K3sはWebAssemblyワークロードを直接実行・管理できるようになり、ランタイムのオーバーヘッドをさらに削減できるようになった。
33. TypeDB
TypeDBはナレッジグラフデータベースで、複雑なデータ関係を扱うように設計されており、大規模なデータセットのクエリや分析を容易にする。TypeDBのTypeQLクエリ言語はSQLライクな構文を持ち、スキーマの定義、クエリ、探索の学習曲線を容易にする。TypeDBには、コマンドラインインタフェースやグラフィカルユーザインタフェースであるTypeDB Studioなど、データベースでの作業を容易にする様々なツールが付属しており、スキーマの管理、データのクエリ、リレーションシップの可視化、さらには他者とのコラボレーションなど、TypeDBで作業するためのいくつかの機能が提供されている。ドキュメントも充実しており、サポートのためのコミュニティも活発です。私たちのチームは、TypeDBを使用して、異なるデータベースにまたがる分類学的概念のナレッジグラフを構築し、新しい推論ルールを追加することで、その強力な推論機能を活用し、効率を高め、作業負荷を軽減しました。TypeDBは、その直感的な開発者エクスペリエンスと支援的なコミュニティにより、自然言語データ、レコメンデーションエンジン、ナレッジグラフなど、複雑なデータ関係に依存するデータソリューションの構築を検討しているチームにとって、検討すべき良い候補となるでしょう。
34. Autoware
Assess
Autowareは、ROS(Robot Operating System)上に構築されたオープンソースの自律走行ソフトウェア・スタックで、自動車やトラックなど幅広い車両向けの先進運転支援システム(ADAS)の開発・導入に使用できる。知覚、意思決定、制御など、自律走行のさまざまな側面のためのツールとアルゴリズムのセットを提供する。また、環境と目的に基づいて車両の軌道を生成する計画・制御モジュールも備えている。自律走行技術のオープンイノベーションを奨励している。私たちは新製品のアイデアを検証するためにAutowareを使ってプロトタイプを作っており、役立っています。
39. Modal
Assess
Modalは、独自のインフラを必要としないオンデマンド・コンピューティングを提供するPaaS(Platform as a Service)である。Modalでは、機械学習モデル、超並列計算ジョブ、タスクキュー、ウェブアプリをデプロイできる。コンテナ抽象化を提供することで、ローカルからクラウドへのデプロイをシームレスに切り替えることができ、ローカルとクラウドの両方でホットリロードが可能です。デプロイメントを自動的に削除し、手作業によるクリーンアップの必要性を回避するだけでなく、デプロイメントを永続化することもできる。モーダルは、Spotifyのための最初のレコメンデーション・エンジンを開発したのと同じチームによって書かれている。AI/MLスタックをエンド・ツー・エンドで処理し、オンデマンドでGPUリソースを提供することができる。ラップトップで作業していても、クラウドで作業していても、Modalは単に動作するだけで、プロジェクトの実行とデプロイに簡単で効率的な方法を提供します。
Tools
78. Ory Kratos
Assess
我々はすでにOry HydraをセルフホストOAuth2ソリューションとして評価しており、チームからのフィードバックも良かった。今回は、開発者にやさしくカスタマイズが容易なAPIファーストのID・ユーザー管理システムであるOry Kratosに注目する。このシステムは、セルフサービスログインや登録、多要素認証(MFA/2FA)、アカウント認証、アカウント回復など、ID管理システムで実現したい一般的な機能をすでに提供しています。Hydraのように、Kratosはヘッドレスであり、開発者自身がUIを構築する必要があるため、チームはより柔軟に対応できる。開発者は異なるビジネスコンテクストに適合するようにIDスキーマをカスタマイズすることも可能です。Kratosはデータベース以外に外部依存がなく、異なるクラウド環境へのデプロイやスケーリングが容易です。もしユーザ管理システムを構築する必要があるなら、Kratos を試してみることをお勧めする。
Languages and Frameworks
80. Gradle Kotlin DSL
adopt
私たちのチームは現在、Gradle Kotlin DSL を、Gradle を使って新しいプロジェクトを開始する際のデフォルトと見なしており、Groovy よりも好んでいます。すでにGroovyを使っているチームは移行を検討すべきです。KotlinはIDEでのリファクタリングとシンプルな編集をよりよくサポートし、私たちのチームは読みやすく保守しやすいコードを生成すると報告しています。現在、いくつかのIDEがマイグレーションをサポートしていることを考えると、既存のGroovyを置き換える実験をするのは比較的早いはずだ。状況によってはKotlinの方がGroovyより遅いかもしれないが、多くのプロジェクトではチームに影響を与えることはないだろう。
81. PyTorch
adopt
PyTorchは引き続き機械学習(ML)フレームワークの選択肢である。ほとんどのチームがTensorFlowよりもPyTorchを好んでいます。PyTorchはTensorFlowが隠しているMLの内部構造を公開し、デバッグを容易にします。動的な計算グラフを使うことで、モデルの最適化が他のMLフレームワークと比べてはるかに簡単です。最先端(SOTA)モデルの豊富な利用可能性と研究論文の実装の容易さが、PyTorchを際立たせている。グラフMLに関しては、PyTorch Geometricはより成熟したエコシステムであり、私たちのチームは素晴らしい経験をしてきました。PyTorchはモデルのデプロイとスケーリングに関しても徐々にギャップを埋めてきており、例えば我々のチームはTorchServeを使って事前に学習したモデルを本番環境でうまく提供しています。多くのチームがエンドツーエンドのディープラーニングのニーズに対してPyTorchをデフォルトにしているので、私たちは喜んでPyTorchを採用することをお勧めします。
87. Quarto
Trial
Quartoはオープンソースの科学技術出版システムである。これを使えば、マークダウンで文書を書き、コードを埋め込み、そのコードの出力を最終的な文書に出力することができる計算ノートブックを構築することができる。再現可能でカスタマイズ可能なデータ分析レポートの作成にも使用でき、さまざまな形式で簡単に共有できます。私たちのデータサイエンスチームは、ビジュアライゼーション(プロット)や表を含むデータ分析レポートを共有するためにQuartoを使用しました。彼らは、RやPythonを使用してこれらのダイナミックレポートを生成し、HTMLとしてエクスポートして関係者と共有できることを気に入っていました。組織内外で研究や分析を共有したいのであれば、Quartoを評価することをお勧めします。
Discussion