表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
19/27

Copilotがうるさい

...と、ずっと思ってた。

簡単に機能をOFFることも出来ないし。


最初はEdgeで検索かけるとCopilotが

「しばらくお待ちください」

とか言って何やらAIによる回答を生成し始めるのを見て


「お前に聞いてんじゃねーよ。毎回うるせーよ。なんか重いし」

と毒づいていたのだが、ある時を境に状況は一変した。


現在の案件の作業支持者の方から

「Copilotで社内の情報も検索可能になりました。Teamsで質問可能です」

とのアナウンスがされた。


作業に関連する資料を読んでいて分からない単語があり

試しにTeamsのCopilotに質問すると面白い回答が得られた。


全てがピンポイントの情報とは言えないが

関連資料が山のようにクラウド上にまき散らされている状況下では

かなり有効な結果を示してくれる。


ググってみると

「Copilot とは、Microsoftが提供するAIアシスタント機能のこと」

となっている。


最近ではOfficeがらみのアシスタント機能も充実しているらしく

Excelなど立ち上げてもCopilotが随所に顔を出す。


ただ、冒頭でお話したEdgeでのAIによる検索結果の要約は

Googleの生成AI検索「AI Overviews」に比べるとイケてない。


IT関連の情報を色々発信しているYouTube動画で

EdgeとGoogleではシェアに大差がついていて

AIが使用する情報コンテンツそのものが圧倒的に足りない事実を知った。


そうなると、生成AI検索も当然のように「格差」がついてしまうのだろう。


会社の環境ではEdgeを使用しBingで検索しているのだが

「お前に聞いてんじゃねーよ」状態の時には

Edgeを立ち上げておきながら、Google Searchで検索していた。

最近久しぶりにbingに戻したら、検索結果に物足りなさを感じた。


それでも社内の情報を検索する方法がOne Driveの検索だけだと

的確に絞れないし、絞ってもイマイチピンポイントの結果に

なっていないことが多々あった。

Copilotのおかげでそのストレスからは解放されたと思う。


さて。Copilotネタだけだと間が持たないので直近の仕事中に

とても楽しかったことがあったのでそちらのネタにシフトしよう。


現在の仕事ではJavaを使用しているのだが

DBのテーブルの内容をCSV形式で出力する機能を実装した。


対象のテーブル数が90以上あり、90数個のファイルを作成するのが

面倒だったため1つのファイルにまとめていたのだが

ファイルを分けた方がいいという指摘を受けた。


getter,setter,printCSVを含む形で90数個のクラスを実装することになるが

それぞれのクラスに差異が生ずる部分はテーブル名とカラム群だけなので

いつものように、一部自動生成で実装することにした。


色々な案件で、今回と同様の「同じような実装」を多数必要とするケースでは

いつも使っていた手である。


「自動生成」というと何やら偉そうだがただの力業で

差分部分を吸収した形でJavaコードを出力するだけである。

今回の場合なら簡略化すると以下のような実装が必要となる。


public class <テーブル1> {

private String <カラム1>;

private String <カラム2>;

.

.

.

private String <カラムn>;


  public String get<カラム1>() {

return <カラム1>;

}


public void set<カラム1>(String col) {

this.<カラム1> = col;

}

.

. (カラムnまでgetter,setterを実装する)

.

public void printCSV() {

<テーブル1>の内容をCSV形式で出力

}

}


例えば「TABLE_A」と「TABLE_B」があるとしたら

<テーブル1>の部分をそれぞれ「TABLE_A」と「TABLE_B」に

それぞれのテーブルのカラムを<カラム1>から<カラムn>に

置き換えて実装してやればいい。


こんなのを、90数個手作業でやる気には到底ならないので

スクリプトを使用して上記のJavaコードをひねり出す。

(コードに限らず、入力データ等こういった力業の

 自動生成をするシーンは多々ある)


今回はPythonスクリプトを使用したのだが、

いかにもロートルプログラマらしい「楽しみ」がそこにあった。


「楽しみ」の前にまたちょっと寄り道。

スクリプトはBourne Shellから始まって、C-Shell,Perl,Ruby,bash,Pythonと

その時流行っているものを選択してきた。


特筆すべきは「Ruby」で、以下のコードに一目惚れした。


5.times do

puts "こんにちわ"

end

「5.times do」がかっこ良すぎる!(個人的見解)


とにかくRubyでコードを書きたくって仕方ない。

その当時デグレード確認のための機能テストを自動化していたのだが

かなり自由に作業を任されていたので

当然Ruby!ここはRuby!と、ウハウハしながら組んでいた。


Ruby20周年のとき、「仕事でRubyを使用している方」という括りを利用して

Rubyアソシエーションの会合に不適切にまんまと潜り込みmatzにもお会いした。

(私以外にも単なる「Rubyファン」の男性が参加していた)


AIが脚光を浴び始めた頃にはRubyからPythonに時代は移行し

新しいもの好きの私は今、Pythonを選択している。


ここでやっと話が元に戻る。


先に紹介したJavaコードの自動生成処理で

クラス名のネーミング規則の話がレビュアーから出た。


Javaではクラス名は大文字で始める。

私の実装ではDBのテーブル名をそのままクラス名に使用していたため

「Class TABLE_AAA」といったクラス名になっていた。

クラス名に「_」(アンダーバー)の使用はあまりないという指摘も受けた。


「Class TABLE_AAA」なら「Class TableAaa」となるのが通例だという。

後者はキャメルケースと呼ばれ、Java以外でも古くからお目にかかる表記方法だ。


「おーし。それならキャメルにしちゃうよん」と私。

レビュアーから

「この場合、このままでもいいんじゃないかな」

との意見を貰っていたにも関わらず

どうしてもキャメルケースにしたくなったので、コーディングしてみた。


ここでロートルプログラマのC言語脳で単純に考えると、まずはこんな感じ。


#include <stdio.h>

void camel_case(char *src_pointer, char *dest_pointer) {

char *keep_src_pointer;

keep_src_pointer = src_pointer;

while (1) {

if(*src_pointer == '_') {

src_pointer++;

*src_pointer = toupper(*src_pointer);

}

else {

if (src_pointer == keep_src_pointer) {

*src_pointer = toupper(*src_pointer);

} else {

*src_pointer = tolower(*src_pointer);

}

}

*dest_pointer = *src_pointer;

if(!(*src_pointer)) {

return;

}

src_pointer++;

dest_pointer++;

}

}


int main(void){

char src_buff[20];

strcpy(src_buff,"TABLE_AAA_BBB");

char dest_buff[30];


camel_case(src_buff, dest_buff);

printf("%s",dest_buff);

}


同じことをPythonでやる段になって

「はて、1文字ずつの処理ってやるのかな?」

と思いググってみると


  Pythonで文字列を1文字ずつ分割してリストに入れる


なんていう恐ろしいものがHITし、「ひえー」と思っていると


  pythonで文字列の先頭文字を大文字にする


なーんて素敵な関数を発見し、それならばこうだ!とウキウキコーディング。


srcString = "TABLE_AAA_BBB"

targets = srcString.split('_')

result = ""

for target in targets:

result = result + target.capitalize()

print(result)


こんな些細な発想の転換が楽しくて嬉しくて、プログラマやめられないっす。

(でも、キャメルケースはこの場合可読性が悪いと感じて使用するのはやめた)

C,Python共にWEBベースの実行環境で動作確認済みですが

やはり久しぶりのCにはちょいと手こずりました。

(何とか動かせた。よかったー。Intel286時代の感覚で組みました。今はCも進化してるかなー)

もう、Python大好き(笑)

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ