ソフトウェア開発」カテゴリーアーカイブ

環境構築はいつも人の心を挫く

今月号のSoftware DesignはLLM特集
自分で手を動かしながらLLMを用いたアプリケーションを作ってみよう!ということなんだけど、経験上LLMに行き着くまでに挫折しそうな人が多いと感じた。

いわゆる環境構築だ

今回も紙面に環境構築のサンプルというか参考となるコマンドが載っているが、そもそもこれがなんのOS上で構築するためのコードなのかはどこにも説明されていない。

案の定、手元のWindows環境では動作しなかった。。

現場でも、環境構築の手順に関しては手順書が用意されていることが多いが、基本的にそれ通りに行くことを見たことがあまりない。

環境を構築するということは、必要となるライブラリなどを意識するうえでは大事なんだが、それを導入する、大本の環境を統一することが出来なければその先に進むことができなくなることはザラにある。

解決策の一つは、ベースとなる環境を統一してしまうことであり、やはりDockerなのではないかと思っている。

ローカル環境を汚すこともなく、共通の状態からスタートできるわけなので良いはずなんだがなかなかそういう説明をお目にかかれない。

なんとも非合理だ

もちろん、Docker上ではGUIを用いたIDEを動かすことは出来ないので開発環境としては辛いものがあるのは分かるが、せめて紙面のサンプルであればなんとかならんものかと思った。。

頭で気持ちをくじかれると、すごい徒労感が出てしまうんだよね。

Claude3.5 sonet を使い始めています

GPTもいいのですが、最近はClaudeを使い始めています

Claude

日本語に関して、非常に自然な形での回答が返ってくることもいいのですが、Artifacts機能がなかなか素晴らしい。

簡単なツール作成であれば、それほど労力をかけずに作ることができるかもしれないポテンシャルを持っているように感じます。

ただ、GPTにしてもClaudeにしてもプログラムを書かせてもそれがそのまま動くということはなかなかなく、それなりに分かっている必要が出てしまいます。

Artifacts上で構築させたWebアプリケーションも、そもそもプレビューがエラーとなってしまうことも多々あり、GPTでは作成したコードの実行方法も教えてくれたのですがClaudeは聞かないと答えてくれません。

そして、往々にしてうまくいかないことも。。。
ただ、このあたりはすでにここまでできているのであればあと一歩。
壁を超えてくる日も近そうです。

WindowsとGPTが統合されて、ローカル環境のセットアップを含めて実行してくれるような未来も来るかもしれないと考えると、いよいよ持ってAI全盛期になりそうですね。

一方で、開発者に取って考えてみるとこれが開発の作業になってしまうと、楽ではあるものの開発者冥利に尽きるシーンに出くわすことが少なくなる。

さらに、とりあえずまずはAIに聞いてみると言うのは、スピードで考えれば良いことなのかもしれませんが、頭の中で論理立ててロジックを考えていくという訓練する場を減らすことにつながってしまう。
ローレベルの開発者がスキルアップをするシーンが奪われていくのではないかと要らぬ心配をしてしまいます。

それでも、使うメリットは高いと言わざるを得ないところが難しいですね。
良い付き合いができればいいと思うのですが。

そこはかと漂うIT使いこなしてない感

仕事で、Webアプリケーションのパフォーマンスを改善する必要があり調査しています。
基本的にはChromeのDeveloperToolsでNetworkタブで計測。
複数のLambdaで構築したAPIを呼び出していたりするので、処理時間の長いLambda関数に関してコードを見ながら短縮の余地がないかを探していました。

ただ、これって基本的にパフォーマンスが悪いという原因をバックエンドに求めていることになるんですよね。

私自身がフロントエンドよりもバックエンドの方が理解しているというのもあり、実際にバックエンド側でそれなりの時間がかかっているという予想は立っていたので今回のケースにおいてはそれでも良いのかもしれませんが、手順としてはちゃんと事実を知る必要がある。

では、どうすればいいのか?というと、もう少しDeveloperToolsの機能を使いこなしましょうね、ってことだと思う。

Lighthouse機能とか、しっかり使ったことなかったなぁ

AIにしても普通のToolにしても、特定の機能で頑張っているのではなくて、ちゃんと新しく追加された機能だったり、本来の手順としての使い方だったりということをもう少し勉強するべきなんだろうと改めて思った。

永遠にまだまだだな

久々にBuildに参加してみようかと

毎年のことですが、Microsoftの開発者向けイベント、Buildが月末に開催予定との案内が来ました

Microsoft Events – Microsoft Build Japan

セッション情報も公開されていましたが。。。

PowerPoint プレゼンテーション (microsoft.com)

思ったよりも数が少ない印象でした。

どう考えても今年のメインテーマとしてはAIであると思っているし、OpenAIを要するMicrosoftとしてはCopilotなりAzure AI なりで盛りだくさん!かと思ったら、そもそもセッション数が少なかった。

うーん、こんなモノだったかな?

いずれにしても、少しAzure関連の情報からは離れてしまっていたので、ざっくりと全体を聴きつつ、Copilotも見ていきたいです。

恥ずかしながら、ベータ版で触ったのみで有償化されてから触っていないんですよね。
試しにものづくりしてみたいと思ったときに、やっぱり試してみたいわけで。
お話を聞いてみて、判断していきたいところです。

Qiita Engineer Fest 2024が始まるよ

Qiita Engineer Festa 2024(キータ・エンジニア・フェスタ 2024) – Qiita

というわけで、Qiitaがイベントを行います。

年末に行われるアドベントカレンダー企画に近いのかな?と思ってみてみると。。。

Qiita Engineer Festa 2024 の記事投稿キャンペーンに紐づけて19記事投稿すると、「Qiitaオリジナルグッズ」を必ずプレゼント!38記事投稿すると更に特別な「Qiitaオリジナルグッズセット」を必ずプレゼント!

いや、どんだけ書かせるんだ!

まぁ、記事の文字数とかそういう制限はないみたいなので、極端な話、適当に落ちている話題で記事を書いても達成はできなくはないけれど、そういうことじゃないよねって気もする。

Organization対抗戦は、私が所属している会社では大っぴらにはやっていないので対象外。

残るはスポンサー企業テーマになるわけですが、今のところ5つの企業がスポンサードしているよう。
ちょっと気になるのはCodeAGIというもの。

CodeAGIで実際にコードを自動生成してレビューを投稿しよう! – Qiita

今どきめずらしく、クライアントアプリっぽい。
そして、いたるところにデザイナーではなくエンジニアが作ったっぽい資料感がたまらない。

記事連投とかはちょっと続く気がしないけれど、CodeAGIというものは少し触ってみても面白いかな、と思った。

新卒研修で教えることはなにか

Qiita見ていたら、毎年のことではあるけれど新卒研修に関する記事が

【2024年度】エンジニア向け研修資料まとめ #エンジニア – Qiita

リクルートやサイボウズなど、大手のベンダーはさすがの充実度である。

ただ、これだけの研修を用意できるのはもちろん素晴らしいのだけれど、その研修をこなすことができるだけの下地を持った新卒がいるということが一番素晴らしいとは思っている。

結局のところ、入社前段階で何をやっていたのか。
どこまで研鑽を積んできたのか?ということになるのではないだろうか。

正直言って、文系出身者や大学までプログラミングやってませんでした!みたいな人がこの研修を受けてどこまでついていくことができるのだろうか。
ついていくことができたとした場合、それはそれですごい地頭にだろう。

それでも、本当にこの内容を理解できているのだろうか。。。?
少なくとも講習だけで頭に入るとはとても思えないのだけど、それは所詮私程度の頭ということになるのかもしれない。

結局のところ、息子を見ていても中学・高校時代から情報系の授業が体系として組み込まれている現代において、新人研修の中身自体ももっと若手に作らせないと行けないのではないかとすら思えてくる。

根本的に前提が違うのかもしれない

そう考えると合点がいくわけだが、同時に、自分自身に対して若干寂しさを感じてしまうものですね。

そうは言っても、まだ10年以上は働かなければならないわけで、新卒研修の資料を見ながら、「新卒に教えている内容、わかんないんだけど」という気持ちを抑えながら勉強していくしかないわけです。

頑張らねば

ソフトウェアアーキテクチャに関して

たまたまですが、イベントにいくつか参加しました
ここのところ、登録はすれどもなかなか参加できなかったりしていたのでちょっと久しぶりです

ソフトウェアアーキテクチャメトリクス – Forkwell Library #44

ソフトウェアアーキテクチャメトリクス – Forkwell Library #44 – connpass

https://amzn.to/3IgDAGe

毎度おなじみのForkwellさんによるイベント。今回は「ソフトウェアアーキテクチャメトリクス」という本の訳者さんが登壇。

オライリー本なので、なんとなくタイトルからアーキテクチャに対しての何かしらのメトリクスを取得するための手法だとかがまとまっているのかな?と思っていたのですが、そうではないよう。

10人のアーキテクトが思い思いに話をしている内容であって、訳者の方いわく「エッセイ」だと。
なるほど。

オライリー本は、時々そんな感じのエッセイ本を出しますよね。

言ってしまうと、まだ話をまとめるには時期尚早ということなのかもしれないな、と思った。

NECグループAWS活用の裏側大公開|Well-Architectedフレームワークとコミュニティ

NECグループAWS活用の裏側大公開|Well-Architectedフレームワークとコミュニティ – connpass

こちらはAWSに焦点を当てたもの。
でも、よくよく考えて見るとこちらもアーキテクトの選択で何を重要視するのか?だったり、選択したアーキが正しかったのかを振り返るという観点では通じるものがあるかもしれないな?と思った。

AWSの資格試験では基本的にUdemyを中心に勉強をすることが多いのですが、存在は知っていてもちゃんとWell-Architectedフレームワークを読んだことないな、と思いました。

落ち着いて考えてみると、一度それを頭に読み込んでから資格勉強したほうがいいのでは。。。と今更ながらに思ったわけです。

AWS Well-Architected – 安全で効率的なクラウドアプリケーション (amazon.com)

このあたりの資料はそれなりの頻度で更新されていきます。
そもそものAWSサービス自体が追加されていくので結構たいへんですよね。。。

イベントでは、どうやってこれらのレビューをやっていくのかとかも話されていたので興味深かったです。
一方で、自社でそこまで回していくのは、それなりに規模がないと厳しいような気もしましたが、そのあたりはしっかりと学んでいないものの言い訳なのかも。

うーん、勉強しないとですね

SoftwareDesign2月号

定期購読しているSoftwareDesignの2月号が届きました。

https://amzn.to/3UtdNSq

今月号の特集としてはテストとWeb APIセキュリティに関して。

テストに関しては、テスト技法に目を奪われがちなんだけど、そもそものテストの考え方を正していく必要があるとしてテストマニフェストが紹介されていた

https://www.growingagile.co/the-testing-manifesto/

SoftwareDesignに掲載されていたものは2015年バージョンで、上記のものは2023年バージョンのようだ。
基本的な考え方が変わっているわけではなく、言葉を少し修正した形と紹介されていた。

checking functionality over Testing understanding

機能性をチェックするよりも、理解をテストするとでも訳すのだろうか?
SoftwareDesignでは「機能性をチェックするよりも、チームが理解している価値をテストする」とある。

これは、結構難しい問題に感じる。

本来、価値を提供するために機能を作り込んでいるはずのものが、機能を作ることが目的となってしまって気がつくとその価値が提供できていないのではないだろうか?ということだろうか。

そう考えると確かに、そしてまさに、アジャイルではないか

ソフトウェア開発ではプログラミングによって機能を作り込んでいく。ただ、出来上がったアプリケーションがその機能によってなんの価値を提供しているのかに立ち返って、常に検証し続ける必要がある。
そして、アジャイルの文脈ではその検証を繰り返してスプリントを回していく。

どうも、ウォーターフォールが染み付いてしまい、当初作った仕様に従った機能のテストしかできていないように感じてしまった。

改めて、このあたりに関しては気を引き締めていかないといけないと感じた。

Docker で GPUを使いたい

少し前から OpenAI が提供している whisper を触っています

業務でお客さんとMTGをする機会が最近増えてきて、会話をしていると会話に集中してしまって、メモを取り忘れてしまうんですよね。
端々ではメモをとっても、やっぱり抜けてしまう事はあったり、話を聞いていて

「お、それはこういうことかな?」

って考えている間に話が進んでしまっていたり。。。
ということで、できるだけ録音をするようにしています。

どうせなら文字起こしを手軽に行いたいというのがモチベーションとなります。
将来的には要約まで自動的にやってくれるとよくて、それはもう現実的なレベルまで世の中は来ているわけですが。

Dockerfile

参考にさせてもらったのはこちら

Dockerを使ってOpenAIのWhisperをサクッと試す
https://zenn.dev/kento1109/articles/d7d8f512802935

FROM pytorch/pytorch:1.9.0-cuda10.2-cudnn7-runtime

WORKDIR /workspace

RUN apt-get update && apt-get install -y \
    build-essential \
    gcc \
    git \
    ffmpeg \
    && rm -rf /var/lib/apt/lists/*

RUN pip install --upgrade pip

RUN pip install git+https://github.com/openai/whisper.git 

試してみるとエラーになった

root@dfbc095388f8:/workspace# whisper mtg02.m4a --language ja --model large
Traceback (most recent call last):
  File "/opt/conda/bin/whisper", line 5, in <module>
    from whisper.transcribe import cli
  File "/opt/conda/lib/python3.7/site-packages/whisper/__init__.py", line 12, in <module>
    from .decoding import DecodingOptions, DecodingResult, decode, detect_language
  File "/opt/conda/lib/python3.7/site-packages/whisper/decoding.py", line 514
    if prefix := self.options.prefix:
               ^
SyntaxError: invalid syntax

cudaのバージョン問題

参考にさせていただいたページにもあるように、pytorch をPCにあった cuda バージョンにする必要があります。

cudaバージョンの確認方法は、コマンドプロンプトで

>nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Jun__8_16:59:34_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.7, V11.7.99
Build cuda_11.7.r11.7/compiler.31442593_0

という形で表示されます。

ところが、イメージには11.7用のものが見当たらないんですよね

pytorch/pytorch
https://hub.docker.com/r/pytorch/pytorch/tags?page=1&name=11.

最新は11.6のようなので、こちらを使用してみる

FROM pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime

modelのダウンロードエラー?

実行してみると。。。

root@401ac01bcb2c:/workspace# whisper mtg03.m4a --language ja --model large
  0%|▏                                    | 12.3M/2.87G [00:02<11:43, 4.37MiB/s]
Traceback (most recent call last):
  File "/opt/conda/bin/whisper", line 8, in <module>
    sys.exit(cli())
  File "/opt/conda/lib/python3.10/site-packages/whisper/transcribe.py", line 310, in cli
    model = load_model(model_name, device=device, download_root=model_dir)
  File "/opt/conda/lib/python3.10/site-packages/whisper/__init__.py", line 108, in load_model
    checkpoint_file = _download(_MODELS[name], download_root, in_memory)
  File "/opt/conda/lib/python3.10/site-packages/whisper/__init__.py", line 62, in _download
    raise RuntimeError("Model has been downloaded but the SHA256 checksum does not not match. Please retry loading the model.")
RuntimeError: Model has been downloaded but the SHA256 checksum does not not match. Please retry loading the model.

ん、Modelのダウンロードに失敗した?
リトライしろってあるのでもう一度やってみる

root@401ac01bcb2c:/workspace# whisper mtg03.m4a --language ja --model large
/opt/conda/lib/python3.10/site-packages/whisper/__init__.py:48: UserWarning: /root/.cache/whisper/large-v2.pt exists, but the SHA256 checksum does not match; re-downloading the file
  warnings.warn(f"{download_target} exists, but the SHA256 checksum does not match; re-downloading the file")
 23%|████████▌                             | 667M/2.87G [01:34<05:55, 6.71MiB/s]

先に進んだので大丈夫じゃーん!って思っていたら、ここから進まなくなった。。。

今日はここまでにしよう。。。

Goerli Testnet ETH Claim キャンペーン

buildspace もようやく、 React のフロントエンドから Goerli Testnet にDeployしたスマコンに接続するところまで終了

途中、どうしてもうまくいかないな?と時間がかかる場所があったのですが、チュートリアルとしてその時点ではうまくいかない状態というオチでした。

時々ある罠ですが、ちょっと困るものです。。。

Goerli Testnet への Deploy は、以前にも誰ジェネでやってます。

誰でもできる!ジェネラティブNFT開発
https://crypto-code.jp/materials/create-generative-nft

ただ、その時もテスト用のEthが足りなくて、そもそもDeployできないという事態になったんですよね。結果としてその時は諦めてしまった過去があります。

そんな中、こんなTweetが!
過去に Mainnet / Goerli / Sepolia で Deploy したことがある人に 10 Goerli ETHをくれるという!

両手を上げて行ってみましたが、、、、 2022/11/15 時点でDeployしている必要があるとのこと。
そして、私がGoerliで試していたのが 11/16 。。。

うがあああああああああ

という訳で、見事に対象外でもらうことができませんでした。。。
これは、ちょっとせつなすぎる。。。

いつものことといえばいつものことですが、本当に間が悪い。。。

どうにかならないものか。
どこかにお祓いに行ったほうが良いのかもしれません