「Unblock Your Software Engineers With Unblocked(アンブロックドでソフトウェアエンジニアを活用しましょう)」
「Unblock Your Software Engineers With Unblocked(アンブロックドでソフトウェアエンジニアを最大限に活かそう)」
開発者は新しい会社にオンボーディングするために数週間、場合によっては数か月を費やします。新しいコードベースに慣れるには時間がかかります。この間、開発者は多くの質問を持つことになります(それが当然です!)。しかし、その質問は他のチームメンバーの邪魔になり、彼らは自分の作業を止めて答えを提供する必要があります。
ほとんどのエンジニアリング組織は、新しい開発者が必要なサポートを得る一方で、チーム全体の進行を余計に遅くしないジレンマに直面しています。
ドキュメンテーションの文化は正しい方向に進む優れた一歩です。しかし、このドキュメンテーションは、Slackメッセージ、NotionやConfluenceのウィキ、GitHubのプルリクエスト、Jiraのチケットなど、断片化されています。この情報の果てしない海をどのように上手に航海するのでしょうか?
Unblockedという人工知能(AI)のスタートアップ企業は、この問題を解決しようとしています。彼らは他の誰にも邪魔をすることなく、自分自身を解放するための質問と回答が得られるチャットボットのようなインタフェースを作りました。最も重要なことは、Unblockedは会社が使用するすべてのデータソースに接続できるため、回答は現実の会社のリソースに基づいてカスタマイズされます。
- 「aiOlaのCEO兼共同創設者、アミール・ハラマティによるインタビューシリーズ」
- 「InVideoレビュー:2023年11月の最高のAIビデオジェネレーター?」
- 「今日の市場においてAIパワードモバイルアプリが際立っているのは何か?」
私は最近、自分のような人にどれくらい役立つかを確認するためにUnblockedを試してみました。この記事では、いくつかのシナリオの例、私がした質問、そして受け取った回答を見ていきます。
私たちは情報を求めるための3つの一般的なカテゴリを探求します:
- 新しいコードベースのアーキテクチャを一般的に理解する
- 機能の動作原理を理解する
- バグのトラブルシューティングと修正
Unblockedで解消しましょうか?
サンプルリポジトリ
現在の雇用主のデータを使用するためにUnblockedを利用するためには、セキュリティプロセスを経て許可を得る必要があります。UnblockedはSOC 2に準拠しており、顧客データを分離しています。さて、私は今回の能力を把握するために、私の個人プロジェクトでUnblockedを試すことにしました。
私は大学の時に作成した私の最大のリポジトリの一つに頼りました。コンピュータサイエンスのコースを通じて取り組んだ数十のプロジェクトが含まれています。これらのプロジェクトの多くは8年以上見ていないものです。もしあなたが私と同じようであれば、数か月前でも描いたコードの詳細をすでに忘れてしまっているかもしれません。ですので、このリポジトリに戻ってくることは再オンボーディングに似ていました!
GitHubで使用するリポジトリ全体をこちらで見つけることができます。(コードの品質についてはあまり厳しく判断しないでください。私は初めて学んでいましたから!)
シナリオ1: コードベースの概要を教えてもらえますか?
この古いリポジトリのいくつかのプロジェクトに慣れ直しているとき、私はUnblockedにリポジトリについて質問しました。
最初に非常に一般的な質問をしました。「このアプリは何をしますか?」
Unblockedは私にこのリポジトリにはさまざまなプロジェクトが含まれていることを教えました。さらに、いくつかのプロジェクトについて説明もしてくれました。Unblockedは私がペットの養子縁組、写真撮影、フィットネス、映画ストリーミングのアプリを持っていることを知っていました。さらに、Unblockedは私のリポジトリにウェブベースのゲームがあることも正しく認識しました。
「このアプリは何をしますか?」という質問と回答
素晴らしいスタートでした。2つ目の質問をしました。「このリポジトリはどの言語、ライブラリ、またはフレームワークを使用していますか?」
Unblockedは私の主要なポートフォリオファイルに記載されている多くのツールを返答しました。それぞれのプロジェクトが異なるテクノロジーを使用していることも正しく指摘しました。スクリーンショットの一番下には、Unblockedが情報の出所を示しているので、この情報がどこから来ているかがわかります。
「このリポジトリはどの言語、ライブラリ、またはフレームワークを使用していますか?」という質問と回答
シナリオ2: このものはどのように動作するのですか?
さて、それで十分な導入でした。次に、私のプロジェクトの一つであるjQueryを使用したConnect Fourゲームについての具体的な質問をしました。
このトライアルの目的は、私が日常の仕事でUnblockedをどのように利用できるかを見ることでした。したがって、このゲームに取り組んでいる新しいコードベースでオンボードしている開発者として、ゲームの動作方法について質問がありました。同僚の誰かに邪魔をする代わりに、Unblockedに尋ねることにしました。
私は自分のゲームでプレイヤーがチートできないようにするために確認したかった。私は尋ねました、「ConnectFourアプリでは、他の人が自分のターンを待たずに2つのピースを連続してプレイすることは可能ですか?」
Unblockedの回答は印象的でした。ゲーム内でターンを順番に行う仕組みが示される特定のコードスニペットを参照できました。
「ConnectFourアプリでは、他の人が自分のターンを待たずに2つのピースを連続してプレイすることは可能ですか?」に関する質問と回答
しかし、私はプレイヤーがどうかしてチートする方法を見つけることができないとは納得していませんでした。追加の質問をしました。「アニメーションが終了する前に誰かがボタンを2回すばやくクリックした場合、それでチートできて2つのピースを一度にプレイすることは可能ですか?」
再び、Unblockedの回答に感銘を受けました。私が2つのピースを一度にプレイするために確実にクリックを2回行えないようにクリックハンドラーを無効にするために使用した別のコードスニペットが強調されました。
さらに、類似の問題に関するクローズドGitHubの問題が見つかったが、その問題はすでに解決されたと保証されました。
「アニメーションが終了する前に誰かがボタンを2回すばやくクリックした場合、それでチートできて2つのピースを一度にプレイすることは可能ですか?」に関する質問と回答
シナリオ3:このバグを修正するのを手伝ってもらえますか?
次のシナリオを考えてみましょう。新しいコードベースで作業し、バグを修正するのに助けが必要な場合を想像してみましょう。同僚に助けを求めるかもしれませんが、Unblockedも助けてくれると思いました。
次の数個の質問では、私が数年前に自分のキャップストーンプロジェクトの1つとして作成したマルチプレイヤーゲーム「Pixel Mania」に言及しました。このゲームはJavaScriptで作成され、ピアツーピアで情報をやり取りするためにWebソケットを使用しています。ゲーム内では、各プレイヤーが点で表されます。彼らは画面内を移動し、サイズを大きくするために食べ物を食べます。プレイヤー同士でも食べ合うことができます。また、サイズを半分に切る障害物を避けながらこれを行わなければなりません。
このゲームは2人から4人がオンラインの場合には非常にうまく動作しますが、プレイヤーの数が増えるとゲームの動作が遅くなります。
このシナリオでは、私がこのプロジェクトで作業していてこれらのパフォーマンスの問題に気付いています。何か助けが必要です。誰に尋ねるべきですか?もちろんUnblockedです!
最初の質問は、「PixelManiaで多数のプレイヤーがプレイするとパフォーマンスの問題が発生しています。それはなぜですか?」でした。
Unblockedはいくつかの初期の考えを返答しました。ゲームはすべてのプレイヤー、食べ物、ボールの位置情報を管理しています。Unblockedはアイテム数が増えるにつれて操作が長くなると考えました。
それは正しいです。ゲーム内の多くの操作は、すべてのアイテムをループし、衝突を検出して食べ物を食べたか、他のプレイヤーを食べたか、ボールに当たったかを知るためです。Big O記法を考えると、これらの操作は少なくともO(n)の時間がかかります。
Unblockedはさらに、「更新のレート制限、更新のためのデルタ圧縮の使用、またはクライアントが近くのオブジェクトの更新のみを受け取る関心領域管理システムの実装など、さまざまな最適化が可能である」と提案しました。
「PixelManiaで多数のプレイヤーがプレイするとパフォーマンスの問題が発生しています。それはなぜですか?」に関する質問と回答
UnblockedではChatGPTと同様に会話ができるため、追加の質問をしたいと思い、ペアプログラミングのアイデア出しセッションのように扱いました。
「提案された最適化技術について詳しく説明していただけますか?」と尋ねました。
Unblockedは以下の5つの提案について詳細に説明しました:
- 更新のレート制限
- デルタ圧縮
- 関心領域管理
- 空間の分割
- データ構造の最適化
「提案された最適化技術について詳しく説明していただけますか?」に関する質問と回答
さらに詳しく掘り下げたかったので、尋ねました。「空間の分割は良い手法のように思います。PixelManiaでそれをどのように実装するかについてアドバイスをいただけますか?」
より詳細なアドバイスをいただきました!ただし、これは空間の分割がどのように機能するかについての一般的な情報だけでなく、特定のファイル(’game.js’や’Player.js’など)にアドバイスを適用しました。
「空間分割は私にとって良いアプローチのように聞こえます。PixelManiaでそれを実装する方法についてアドバイスをいただけますか?」という質問と回答についてです。
その後、私は使用したデータ構造についてもう1つ質問しました。「また、最適化されたデータ構造も言及されましたが、PixelManiaで効率的または誤って使用されているデータ構造はあり、最適化できる可能性がありますか?」
Unblockedは、私が行ったデザインの特定のインスタンスと潜在的な欠点をいくつか指摘しました。私の操作の多くはO(n)時間で行われており、異なるデータ構造を使用してオブジェクトをより良く活用すればO(1)時間で処理できるかもしれません。これにより、いくつかのパフォーマンスの問題を改善することができる可能性があります。
「また、最適化されたデータ構造も言及されましたが、PixelManiaで効率的または誤って使用されているデータ構造はあり、最適化できる可能性がありますか?」という質問と回答についてです。
今頃になると、次に進むためのかなり良いアイデアが得られました。もし私が仕事でこれに取り組んでいたら、コードの変更を始めるのに十分な準備が整っているでしょう。
結論
質問することと自己依存のバランスを見つけるのは難しいことです。中断はコンテキストの切り替えを引き起こし、時間の無駄になることもあります。私たちは皆、同僚に役立ちたいと思っていますが、同時に時間を守る必要もあります。
AIは、開発者として私たちの分野でますます重要な役割を果たしており、これまでにない方法で生産性を大幅に向上させることができます。
Unblockedはそのようなツールの1つです。開発者が自分自身で質問の回答を見つけやすくすることで、必要な助けを必要な時に得ることができます。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles