熱脳しゃちょのブログ -48ページ目

熱脳しゃちょのブログ

おせっかい焼SE兼プログラマ兼……の辛い日々と、思う事なぞ

というより、「AIGでないものをAIGと思い込んで人類が行動することになったらどうなるか?」の方が深刻な問題だと思うな。

現時点で不穏な雰囲気になってるんだから。

 

まぁ、偽神を崇めるな、ってやつだが……。

アイディア出しの増量期とか、画像とか曲のちょっとした自動生成は使ってる。

特にアイディア出しは、自分と違う視点でかつ、人間的ではない(単語連想的)視点として、補助的に使ってる。

けど、撮って出しというか、そのまま語尾とかちょっと直して使う、みたいな使い方はしない。

信用度が低い資料の一つ扱いかな?

なので、AI嫌いとか、AI使えないロートルというわけではない。

 

おいらにとって怖いのは、AI そのものというより、AI を使いこなすだけの技術力もないのに、ソースを大量生産させて「俺ってすげぇぇーーっ!!!」ってなってる、勘違いエンジニアなんよね。

「ロジックおかしいよ」って指摘しても、「いや、AI が出力したので」って理解できないくせに人を小馬鹿にしてくるのが、うんコードを積み上げた末、不具合も積み上がって身動き取れなくなって逃走、なんてのが少なくないし、これから大量に発生するだろうというのがファイアーを見るよりオブビアスだ。

 

この手の無能な働き者は、仲間を呼んで組織を腐らせるし、取り返しのつかない時点まで隠すし、見たら即座に処刑しないと、プロダクトも会社も致命傷になるよ。

 

日本の八段の剣道と、韓国のコムド(w)の違いというか、本当に実力があってちゃんとしてる人はがちゃがちゃしないし、合理的で最小限の動きで最大の効果を発揮する。

傍目には派手さもなくてつまらんかもしれんけど。

 

まぁ、エンジニアじゃなく、大道芸人を集めたいなら、止めはしないけどね w

 

実はプログラマなんですが w
ちょっと本気で、クラウド用の仕組みを整理し直してみてる。

そのうち、非同期処理周りをちょっと先出し。

 

非同期処理なんてSQSかPubSub使えばできる。

と思ったら大間違いで、これ、プリミティブすぎて、何かあった時、運用が大変(それやってるところ、幾つも知ってるけど w)。
細かい制御、致命的例外、同一処理の結果キャッシュ、リトライ戦略の共通化等、あったら色々とても楽になる仕組みで、サブセットはいくつかの炎上現場で動いている(はず。理解できない自称「イケてるエンジニア」にぶっ壊されてなければ w)。

10年以上前、StepFunctionsのベータが出る前に、数年、分散処理の仕組みが研究されていた頃、クラウド環境に適応したものを、と基本設計したもので、どの現場でも導入前はその効果に懐疑的だったけど、開発運用ともに認知負荷が大幅に下がり、不具合もほとんど発生しない、となったもの。

の、Scalaバージョンになります。

  val message_queue_cloud_type: CloudType = CloudType.Aws
  val send_mail_cloud_type: CloudType = CloudType.Aws
  val container = new AsyncJobContainer(
    processorsCluster,
    message_queue_cloud_type,
    send_mail_cloud_type,
    identifier,
    config,
  )

 

このように指定したら、非同期処理のための MessageQueue と メール送信用の MailSend を Aws の仕組み、つまりSQSとSESを使う。

 

  val message_queue_cloud_type: CloudType = CloudType.Synchronous
  val send_mail_cloud_type: CloudType = CloudType.Synchronous

 

とすると同期処理 & ローカル直接実行となり、ローカルでの開発時、自動テストで処理本体だけに集中できる(synchronousのsendmailはローカルの標準出力にプリントになっている)。

このCloudTypeは

 

  val config = new java.util.HashMap[String,String]()
  config.put("cloud.type","aws")
  config.put("sendmail.cloud","aws")

 

みたいな感じで、confファイルとかから指定できる。

まだ未実装だけど、CloudType.Gcp ってのも、CloudType.Azure も、体力があったら予定はしている。
クラウド周りだと、MessageQueue、SendMailとCloudStorageを共通の仕組みで操作できるように設計はしている。
CloudType.Gcpなら、PubSubを使うことになる。と言った感じ。


で、このAsyncJobsはJob管理をDBで行っていて、

 

  val config = new java.util.HashMap[String,String]()
  config.put("store.type","mysql")
  config.put("store.host","localhost:3306")
  config.put("store.user","root")
  config.put("store.pass","root")
  config.put("store.schema","unittest_schema")

こんな感じで指定。
今の所、MySQLとPostgreSQLが選択できる。

 

クラウドの利用部分は、このようにパラメータで設定するだけ。実装するのは固有の処理部分だけで、こいつはこれだけ取り出して自動テストできる。という方針になってます。

 

まぁ、今しばらくは増量期で、このあと減量期みたいに全体を整理して使いやすく絞っていくんだが、目の前の処理だけをAI使って大量に実装していくのがエンジニア、じゃないんですよ、と。


フリーソフトとして公開するか? って点については、多分、当面は扱いが難しかったり、責任もってハンドリングできないので、少数、連絡があったら、って感じになると思います。