投稿者「krote」のアーカイブ

Software Design1月号

Software Design 1月号が届いた

ソフトウェアデザイン 2025年1月号

1月号の特集は認証技術と、Web APIテスト。

パスキーかー。
最初に話を聞いてから随分と立つ気がするけれど、いつまで立っても最前線と言われ続けているけれどどこまで実装されているんでしょう。
私がB2Bが多いのでB2Cであれば、見ている風景は随分と違うのかもしれません。

今号から新連載となるものもいくつかあってちょっと面白いなと思ったのは「一歩踏み出すための技術広報戦略の立て方」という連載でした。
著者はハイヤールーの玉田さん(https://www.wantedly.com/id/tamaclaw_hireroo)。

本連載で書かれている、会社が抱えるProblem

  • リファラルや自己応募の比率が低い
  • シニアなエンジニアにリーチできない
  • エンジニアに選ばれない

これはまさにその通り。
昨今は特に売り手市場が続いていて、中途採用が非常に厳しい感じがします。
(足元では変わりつつあるようにも感じますが)

エンジニアに選ばれるためには、当たり前ですが選ばれる会社でなければいけないし、選ばれる会社であることを紹介しないといけないんですよね。

エンジニアによる発信というのもわかるにはわかるんだけど、そのあたりのインセンティブ設計。コントロールなどなど、難しいところ。

そもそもの話として、自社にスーパーエンジニアがいるわけでもなく、すでに情報発信している会社と比較するとどうしても見劣りする技術力。
それらを考えたときに、モチベーションを保ちつつ選ばれる会社になるための発信を続けるのって現実的なんだっけ?と考えると、ぐぬぬって感じになってしまいます。

とはいえ、Problemで上げたものはまごうことなき問題であって、この連載がこの先どういうことを教えてくれるのか、非常に楽しみです。

Copilot が使えるようになっていた!

朝、メールを見ると。。。

おぉおぉ?
どゆこと?

メールにも書かれているけれど、いくつか制限があるようです

  • 2,000 code suggestions a month: Get context-aware suggestions tailored to your VS Code workspace and GitHub projects.
  • 50 Copilot Chat messages a month: Use Copilot Chat in VS Code and on GitHub to ask questions and refactor, debug, document, and explain code.
  • Choose your AI model: You can select between Anthropic’s Claude 3.5 Sonnet or OpenAI’s GPT 4o.
  • Render edits across multiple files: Use Copilot Edits to make changes to multiple files you’re working with.
  • Access the Copilot Extensions ecosystem: Use third-party agents to conduct web searches via Perplexity, access information from Stack Overflow, and more.

制限として大きいのは2000コード提案と50チャットの部分。
なんかあっという間に制限に引っかかりそうな気がしますね・・・。
それも利用仕方の問題なのかな

最近、WebでCaludeのほうを使う機会のほうが多くなっている気もしますが、まだまだ生成AIを使ったスタイルに馴染みがないので手を動かせるようにしていきたいものです。

Watch Face を作ってみたい

Garmin の Watch face はConnectIQアプリで入手することができるのですが、有料のものが多いのと、ちょっとごちゃごちゃしすぎる感じがします。

かといって、文字盤を自作することができるとして用意されているFaceItは項目数的にしょぼい。

であれば、自作することが出来ないだろうか?と思って調べてみるとVSCodeで開発環境を作ることができるということだったので、まずは開発環境を整えてみた

前提

VSCodeインストール済み
Javaインストール済み

公式の環境作成に関するページはこちら
https://developer.garmin.com/connect-iq/connect-iq-basics/getting-started/

SDKインストール

SDK取得のページからSDK Managerをダウンロード。起動する。
基本的にポチポチと進めていくことでSDKをインストールすることが出来た。
バージョンに関しては、執筆時点では 7.4.3が最新のようなのでこちらをCurrentとする

無事にインストールが済んだら、続いてVSCodeに拡張を追加していく

VCSCodeへのインストールと設定

VSCodeのExtensionとして「Monkey C」を検索、インストールする。
その後、VSCodeを再起動してコマンドパレット(Ctrl+Shift+P)から「Generating a developer Key」を選択。適当なフォルダを選択してKeyを出力する。

その後、Monkey C : New Projectを選択します

プロジェクト名を適当に入力。
WatchFaceなので安直にface1とかにしてみました

続いて、なんのプロジェクトかを選択します。
ここではWatch Faceですが、その他の選択肢が若干気になりますね。。。

テンプレートとしては、Settingもできたほうがいいと考えて「Simple with Settings」を選択します。

対応するAPIレベルを選択します。
APIレベルに関しては、どの機種がどのレベルを対応しているかの一覧が公式にあるので、必要に応じて選ぶことになります。

得に今回は複数の機種での用途を考えないので自分が持っている265が5.0.0だったのでそれを選択してみました

どの製品を対象とするのかを選択します。
このあたりはシミュレーターやストアへの公開時設定に影響を及ぼしそうです

無事、プロジェクトを作ることが出来ました。

Run and Debugをそのまま押下すると。。

無事にシミュレータも起動させることが出来ました!

ちょっと遊んでみたいと思います!

開発環境の構築は開発よりも難しい

購読しているSoftware Designの12月号

連載のLLMが前号に引き続きのHIL(Human In the Loop)をお題にしたもので、読んでいて面白そうだったので試してみることに。

リポジトリはこちらです
https://github.com/mahm/softwaredesign-llm-application/tree/main/14

やってみる

ReadMeにしたがって、ポチポチしていきます。
poetryというのは初めて使います。正直言って、業務でPythonを使っているわけじゃない身としては、試しに触るたびに新しいパッケージマネージャーを使わされている気がします。
なんでPython使いはパッケージマネージャーをどんどん作るのでしょう。
どれだけパッケージ使いづらいんでしょうかね。。。
それとも、「俺が作る最強のパッケージマネージャーを見せてやる」ってイキってる人が多いということなのかもしれません。

さて、最終的に実行を行ってみるのですが。。。

ModuleNotFoundError: No module named 'pydantic_core._pydantic_core'
Traceback:
File "C:\Dev\llm\softwaredesigne\softwaredesign-llm-application\14\.venv\Lib\site-packages\streamlit\runtime\scriptrunner\exec_code.py", line 88, in exec_func_with_error_handling
    result = func()
             ^^^^^^
File "C:\Dev\llm\softwaredesigne\softwaredesign-llm-application\14\.venv\Lib\site-packages\streamlit\runtime\scriptrunner\script_runner.py", line 590, in code_to_exec
    exec(code, module.__dict__)
File "C:\Dev\llm\softwaredesigne\softwaredesign-llm-application\14\app.py", line 5, in <module>
    from agent import HumanInTheLoopAgent
...

知ってる。チュートリアルってエラーになるんだぜ。

この “pydantic_core.pydantic_core”が見つからないってのはOpenAI関連のLambdaレイヤーを構築する際に起こるエラーとググったら出てくる。
Lambdaレイヤーなんて作っちゃいないんだけど、どうやらWindows環境では確実にこうなるようだ。
Software Designにそんな環境依存の話書いてあっただろうか?と思わずひとりごちた。
ちくしょう。

正直、なぜLambdaレイヤーと言われているのかは定かではないけれど、対応にはFastAPIの0.99.0を入れるとある

Lambda Layers で No module named ‘pydantic_core._pydantic_core’
https://qiita.com/ganessa/items/bb67517a095f2c510926

試して見る

C:\Dev\llm\softwaredesigne\softwaredesign-llm-application\14> pip install fastapi==0.99.0
...
Using cached starlette-0.27.0-py3-none-any.whl (66 kB)
Installing collected packages: pydantic, starlette, fastapi
  Attempting uninstall: pydantic
    Found existing installation: pydantic 2.9.2
    Uninstalling pydantic-2.9.2:
      Successfully uninstalled pydantic-2.9.2
  Attempting uninstall: starlette
    Found existing installation: starlette 0.41.2
    Uninstalling starlette-0.41.2:
      Successfully uninstalled starlette-0.41.2
  Attempting uninstall: fastapi
    Found existing installation: fastapi 0.115.4
    Uninstalling fastapi-0.115.4:
      Successfully uninstalled fastapi-0.115.4
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
composio-core 0.5.40 requires pydantic<3,>=2.6.4, but you have pydantic 1.10.19 which is incompatible.
Successfully installed fastapi-0.99.0 pydantic-1.10.19 starlette-0.27.0

なんかERRORは出るものの、最終的にはpydantic-1.10.19がインストールされた。
さて試してみる

変わらず・・・

試してみる(2)

問題の根本としては、Windows環境で試していることが原因っぽい。
というわけで、Dockerも検討したけれど手元にMacもあったので試してみる

あっさり動いたーーーー。

すごい釈然としない。。2024年においてもまだ環境依存は簡単にはこえられない壁として我々の前には立ち塞がっていると言うことなんだろう・・・。

そして、本当はそんなことをしたいのではなくここから仕組みの理解や改変を通した学びを得たいところだったのだけれど、すでに徒労感がある。

悲しい。

動かしてみると

そりゃ、LLMアプリを勉強するくらいであったら課金くらいしろよってのは、まぁ、そうなのかもしれないけれど、試すことすら出来ないのは悲しいところです。

ChatGPTにしろAnthropicにしろ、開発中もひたすらに料金がかかり続けるモデルだと、お勉強エンジニアには厳しいお財布事情になりそうです。

これ、複数のLLMで試したいと思ったら全部課金するって話になるんですよね。。。

リーダーシップ・シフト 全員活躍チームをつくるシェアド・リーダーシップ

堀尾志保著「リーダーシップ・シフト 全員活躍チームをつくるシェアド・リーダーシップ」を読んだ

リーダーシップ・シフト 全員活躍チームをつくるシェアド・リーダーシップ

本の内容としては、様々な活躍しているマネージャー、リーダーを調査して作られた本ということで、調査結果感がありました。

特に第1章の「シェアド・リーダーシップとは」という、この本のタイトルともなっている概念に関しての説明があるのですが、これがちょっと長い。
延々と「調査では~」みたいな形になるのでこの時点で危うく脱落仕掛けました。

というか、実際に第1章は正直後半はすっ飛ばして2章以降に行ってしまっていいと思っています。

STEP1~5まであり、それぞれに意味があるとは思いますが、やはりSTEP1のイメトレして始めるというところは、思ったよりも面白く聞くことが出来たように思えます。

この手の本は、全部が全部賛同できるわけでもないのでなにかひとつでも自分に対して行動上の変化を起こすことができれば儲けものくらいな気分で聞いていたりします。

なにか、活かせているだろうか・・・。
ビジネス書を読んで、学んだ気になって終わっていないだろうか。
最近、よく思ってしまいます。

もっとしっかり、考えないといけませんね

Garmin1週間

Garminを入手してから1週間が経ちました。
これまでずっとAppleWatchだったのでその変化に戸惑いながらもだんだん慣れてきました。

指標が多い

今までのAppleWatchが、心拍が取れない古いモデルではあったので比較するのはフェアではないのですが、取れるデータ・指標が多いように感じます。

それぞれが何を元に導き出された指標なのか、少しずつ理解を深めることができればと思うのですが・・・

トレーニングレディネスに関してはずっと「悪い」状態なんですよね。
これは、咳が出てしまっていて体調を崩しているところをGarmin先生に見抜かれているのか、なんなのか。

指標のうちの「HRVステータス」というやつは、睡眠中の心拍に関連するもので、計測するのに3週間かかるとのこと。そのあたりになってからようやくいい感じのスコアになるのだろうか?

ストレスのレベル

面白い指標にストレスレベルがあります。

ヘルプを見ると、ストレス反応を検知して記録しているそう。
何日分かみてみましたが、寝ている間もストレスが結構掛かっているのが見受けられるんですよね。
このあたりは、その時間帯に何をしたっけ?をわかるようにして付け合わせてみたいですね。

リングを閉じることが出来ない

わかっていたことではありますが、フィットネスアプリでリングを閉じることができなくなりました。
そこまでリングを閉じることに意識を持っていたわけではありませんが、仕事をしている際に「立ち上がれ!」と言われて渋々動いていた行為をしばらくしていないことに気が付きます。

運動不足解消という意味においては、ランニングをしていることから考えると微妙ではありますが、座りっぱなしの状態を改善して足を動かすということはそれなりに意味があったのかもしれないな、と思ってしまいますね。

AutoSleepが対応していない

睡眠トラッキングにはAutoSleepという有料アプリを使っていました。
Garminは対応していないのでこのアプリは意味がなくなってしまいました。。。

Garmin自体に睡眠トラッキングの機能が付いているので、困るのか?という話でいうと特に困ることはないのですが、これまで蓄積してきたデータと異なる指標によるデータが出来上がってしまうことの一貫性のなさが少し悲しいですね。

AppleWatch自体はまだ手元にあるので、2つ使いも出来なくはないのですが、中途半端な感じが否めないのでGarmin1本で行こうということは確定しています。
ただその一方で、AppleWatchならではの部分がなくなってしまったということの寂しさはちょっと残りますね。

プランD

もう、これはコロナ何じゃないかな?って思っているくらい、我が家の調子の悪さは続いています。
といっても、一番調子を崩しているのは妻。
子どもたちは咳が出るくらいで、私も咳がメインです。

とはいえ、子供が多い我が家で大人が一人欠けると身動きが取れなくなります。
先週から、随分前、子供が生まれる前に行った「ざうお」にみんなで行こう!って予約していたりもしたのですが、先週・今週とこんな調子なので流石に見合わせています。

土日ということで、色々と動こうとしていたことは軒並み見直しを掛ける必要が生じており、プランBどころかCや考えてもないDをひねり出さないといけません。

まぁ、ぶっちゃけてしまうと安静にしていろってことなんですけどね。

体が弱っていると、どうしても思考パターンまでもが引きづられて弱弱になってしまうのが日々感じられるのでこの点はなんとかしないとなぁ。
本来は忙しいこの師走。
ほとんど忙しくすることができていない今日このごろが、このあとどんなひどい厄災を招いてしまうことか・・・ 恐ろしやー

風邪ひき一家

程度の差こそあれ、家族全員で風邪引いています。。。

毎回、こういうことがあると熱がひどくなるのが妻。
今回はそれに加えて末娘も熱が上がってしまっているので家事がいまいち回らなくて大変です。

一応、インフルの検査は陰性とのことでコロナは検査はしていないけれど、ちょっと様子見です。
私はというと熱はそれほど出るわけではないのですが、咳がちょっと出ます。

なんか、咳の出方がなんとなくコロナっぽい気がしないでもないんですけどね。
できるだけ外出は控えめに、体調自体はそれほど悪いわけでもないのでマラソン練習は変わらずにやっているような状況です。

徐々にですが、Garminにも慣れてきているので、1週間たったあたりでまとめてみたいところ。

気がつけばもう12月も中旬。あっという間です。

AWS re:Invent を眺めている

AWSのイベントre:Inventの資料が公開されていたので、少しずつ眺めていっています。

正直言って、まあだまだこれらの情報に関しての感度が低いのが実情ではあります。
というのも、結局のところ発表してから実際に現場で使うようになるまでに、多くの場合はそれなりに時間がかかるんですよね。
また、先端のサービス開発をしていると違うのかもしれませんが、まだまだ旧来方式の開発をするケースもままあり、なかなかこれらモダンな技術スタックでの開発となるとお目にかかれないのが正直なところです。

とはいえ、実利はともかく面白そう

https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2024_AWS-reInvent_1206_v1.pdf

特に現在はBedrock周りですね。気になったのはIntelligent Prompt Routing

うまいこと、モデルを使い分けてくれるということなんですけど、どういうアルゴリズムでそのモデルを選ぶんだろう?
それぞれを走らせて結果で判断とかだと結局コストかかってるじゃーん!ってなるのでこの目的からは外れてしまう。
一方で、この結果で満足できるかどうかなんてわかるものだろうか?と思ってしまう。

このあたり、どういう考えになっているのかは気になりますね。

このあたりで述べられているエージェントの機能に関しては、今月のSoftwareDesigneで出ていたHIL(Human in the Loop)エージェント周りでもやっていた話なのかな。

コードを書かなくても、これらの事ができるようになっていくというのはいいことなんだろうけれど、流れが早すぎて手を動かす暇があまりない。。。

今回のサービスアップデートがこの資料上では106件あるが、AI関連がその半分くらいを締めているんですよね。
それを考えると、これらを網羅的に把握するのはやはりなかなか厳しいもので、まずは自分に合いそうなユースケースから攻めていく形かなぁ?

Bedrockをちょっと触ってみないことには始まらないかもしれませんね。

結局、Amazonからモノは届きませんでした

先日、配送に問題があったと連絡があった注文

スクショを取り忘れてしまったのですが、結果的に発送元へ返送され、返金手続きが走りました。。。

必要であれば再度購入しろということです。

うーん、まぁクリスマスプレゼントなのでもう一度注文するしかないんですけどね。
ブラックフライデー期間中だったので、これで割引率の高い商品だったら結構ショック受けていたような・・・。

やっぱり配達中にトラックが事故にでもあったのかな?
まぁ、そういうことはありますよね。
そういうことがあるのはしょうがないんだけど、同じ商品がすぐに配送されるというわけではないんだ、ということが今回知ることができました。

これはやっぱり、配送予定日が変わることに対して、注文者の判断に任せたほうがいいということなのかな?
再配送か、別途再注文か、キャンセルか選べると良いとは思いますが、そこまで手間をかけるのも大変ということなんでしょうね。

荷物が翌日に届くことが当たり前に感じるAmazonですが、ちゃんと届いたときの感謝を忘れないようにしたいと感じました。