🐕

「Bing」を使って高速プログラミングを実現する

2023/06/30に公開

概要

技術者が学習を含めて利用するなら圧倒的に「Bing」です。
ここでは利用方法に関するアイデアと「使いやすいよぉ〜」って話をしていきます。

なんでGPTではないのか?

基本的にプログラミングや技術関係の質問は正しさが結構重要です。
聞いてみたけど嘘だったよ!ってなると結構なリソースを取られてしまいます。

精度を上げる仕組みとしてネット検索した結果を含んで回答を生成させる方法があります。
GPTはプレビュー版として有料メンバーのみに公開されている機能です。
Bingは無料で利用できるので、GPTよりもBingの方が使いやすいです!
それに早い!(なんか知らないですがGPTよりもBingのほうがURLを参照した結果を元に結果を出すのが早いです)

要約

違いを簡単にまとめると下記のような感じです。

GPT Bing
速さ URLを読み込ませると遅い 結構早く結果が出る
情報の正しさ URLを読ませないと正しい情報が非常に怪しい 検索結果を教えてくれるので正しい確率が高い
チャット数制限 無制限 ユーザ登録されていれば30
シモネタなど 「研究目的です」とか行けば行ける 結果に対して検問をかけているので途中で生成をやめる

主な使い方

エラーを解析する。

プログラマ日々バグと戦っています。
例えば、この解析を非常に素早く実施する事ができます。

使い方は簡単で、下記のように「下記のエラーについて教えてください」とぶん投げるだけです。

質問

下記のエラーについて教えてください。 npm ERR! tar.unpack untar error /home/rupesh/.npm/lodash/4.13.1/package.tgz npm ERR! Linux 3.13.0-88-generic npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "lodash" npm ERR! node v4.3.1 npm ERR! npm v2.14.12 npm ERR! path /home/rupesh/node_modules/lodash npm ERR! code EACCES npm ERR! errno -13 npm ERR! syscall mkdir npm ERR! Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash' npm ERR! at Error (native) npm ERR! { [Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash'] npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'mkdir', npm ERR! path: '/home/rupesh/node_modules/lodash', npm ERR! fstream_type: 'Directory', npm ERR! fstream_path: '/home/rupesh/node_modules/lodash', npm ERR! fstream_class: 'DirWriter', npm ERR! fstream_stack: npm ERR! [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:35:25', npm ERR! '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:47:53', npm ERR! 'FSReqWrap.oncomplete (fs.js:82:15)' ] } npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! Please include the following file with any support request: npm ERR! /home/rupesh/Desktop/es6/npm-debug.log

質問

そうすると、下記のようにネットの中を漁って回答っぽいものを教えてくれます。

このエラーは、npmlodashパッケージをインストールしようとした際に、/home/rupesh/node_modules/lodashディレクトリを作成することができなかったことを示しています。エラーの原因は、EACCES: permission deniedとなっており、ディレクトリの作成に必要な権限がないことが原因であることがわかります。

この問題を解決するには、エラーメッセージにも記載されているように、rootまたはAdministratorとしてコマンドを再実行することができます。LinuxまたはmacOSの場合は、sudoコマンドを使用して、次のように実行することができます。

sudo npm install lodash

Windowsの場合は、コマンドプロンプトまたはPowerShellを管理者として実行し、次のように実行することができます。

npm install lodash

このようにして、適切な権限でコマンドを再実行することで、問題を解決することができます。

JSONやSQLを設計する

JSONやSQLを設計するのにも向いています。

質問

例えば下記のような質問を投げてみます。

八百屋向けのツールを作っています。販売するシステムを構築する場合に、量り売りの場合と個数単位の場合が2つあります。 リクエストとして商品のタイプと量(量り売りと個数売が2つある)を受け取り、戻り地として各商品の価格(1個あたり・1グラムあたり)と値段と合計を戻します。 この2つのJSONを設計してください。

回答

それっぽいJSONを貰えるので、それを加工して利用できるように設計し直してください。

八百屋向けの販売システムで、量り売りと個数単位の販売を行う場合、リクエストとレスポンスのJSONを設計することができます。以下に、その例を示します。

リクエストJSONの例:

{
   "items": [
       {
           "type": "weighed",
           "name": "りんご",
           "weight": 300
       },
       {
           "type": "counted",
           "name": "みかん",
           "quantity": 5
       }
   ]
}

上記のリクエストJSONでは、itemsキーに購入する商品のリストが含まれています。各商品は、typeキーにweighed(量り売り)またはcounted(個数単位)のいずれかが指定され、nameキーに商品名が指定されます。また、weightキーまたはquantityキーに、購入する量が指定されます。

レスポンスJSONの例:

{
   "total": 850,
   "items": [
       {
           "name": "りんご",
           "unit_price": 100,
           "price": 300,
           "weight": 300
       },
       {
           "name": "みかん",
           "unit_price": 50,
           "price": 250,
           "quantity": 5
       }
   ]
}

上記のレスポンスJSONでは、totalキーに購入する商品の合計金額が含まれています。また、itemsキーには購入する各商品の詳細が含まれており、各商品はnameキーに商品名、unit_priceキーに単価(1個あたりまたは1グラムあたり)、priceキーに金額が指定されます。また、購入する量は、weightキーまたはquantityキーに指定されます。

このようなJSON設計で、八百屋向けの販売システムで量り売りと個数単位の販売を行うことができます。

ツール選定

特定のツールなどを選定する場合も向いています。

質問

例えば下記のような質問を投げてみます。

CICDに関わるツールを利用方法も含めてリストでください

回答

こんな感じで回答が帰ってきます。

CI/CD(Continuous Integration/Continuous Deployment)に関連するツールには、以下のようなものがあります。

  1. Jenkins - オープンソースの自動化サーバーで、ビルド、テスト、デプロイなどのタスクを自動化することができます。Jenkinsを使用するには、Jenkinsサーバーをセットアップし、ジョブを作成してビルドスクリプトを設定します。
  2. Travis CI - クラウドベースのCI/CDサービスで、GitHubリポジトリと連携してビルド、テスト、デプロイなどのタスクを自動化することができます。Travis CIを使用するには、Travis CIアカウントを作成し、リポジトリを登録して.travis.ymlファイルにビルド設定を記述します。
  3. CircleCI - クラウドベースのCI/CDサービスで、GitHubまたはBitbucketリポジトリと連携してビルド、テスト、デプロイなどのタスクを自動化することができます。CircleCIを使用するには、CircleCIアカウントを作成し、リポジトリを登録して.circleci/config.ymlファイルにビルド設定を記述します。
  4. GitLab CI/CD - GitLabに統合されたCI/CD機能で、GitLabリポジトリ内のコード変更に応じてビルド、テスト、デプロイなどのタスクを自動化することができます。GitLab CI/CDを使用するには、GitLabリポジトリ内に.gitlab-ci.ymlファイルを作成してビルド設定を記述します。
  5. GitHub Actions - GitHubに統合されたCI/CD機能で、GitHubリポジトリ内のコード変更に応じてビルド、テスト、デプロイなどのタスクを自動化することができます。GitHub Actionsを使用するには、GitHubリポジトリ内にワークフロー定義ファイル(.github/workflows/*.yml)を作成してビルド設定を記述します。

これらのツールは、それぞれ異なる方法でセットアップおよび使用されますが、共通してビルド、テスト、デプロイなどのタスクを自動化し、CI/CDパイプラインの構築および運用を支援します。

更に質問

自動テストに関わるツールを比較し、項目ごとの比較表を作成してください。また比較した結果を1-100で点数付けしてください

更に回答

自動テストに関連するツールには、様々なものがあります。以下に、いくつかの代表的なツールを比較した表を示します。

項目 JUnit TestNG NUnit Mocha
プログラミング言語 Java Java .NET JavaScript
テストアノテーション あり あり あり なし
アサーションスタイル メソッド呼び出し メソッド呼び出し メソッド呼び出し/制約モデル BDD/TDD/Exports
テストランナー統合 Maven/Gradle/Antなど Maven/Gradle/Antなど NUnitコンソール/Visual Studioなど Mocha単体/Grunt/Gulpなど
点数(1-100) 90 85 80 95

上記の表では、JUnit、TestNG、NUnit、Mochaという4つの自動テストツールを比較しています。各ツールは、対応するプログラミング言語、テストアノテーションの有無、アサーションスタイル、テストランナーとの統合方法などが異なります。また、各ツールには独自の特徴や利点があります。

このようにして、自動テストに関連するツールを比較し、項目ごとに比較表を作成することができます。ただし、点数付けは主観的なものであり、実際の使用状況やニーズに応じて異なる結果が得られる可能性があります。

Discussion