こたつでどぶ汁

今週のお題「冬の楽しみ」 冬といえば「鍋」。ずっと食べてみたかったどぶ汁を作ってみました。オリジナルレシピです。

どぶ汁

材料

具材

  • あん肝 :50g
  • あんこう:1パック
  • 白菜  :いっぱい
  • 絹豆腐 :150g
  • マロニー:1袋

調味料

  • 酒   :大匙2
  • 味噌  :大匙2
  • 水   :200ml

レシピ

1. スープ作り

まずあん肝を炒ります。 いい感じに色づいてきたら、酒・味噌・水をいれ、沸騰するまで混ぜます。

2. 水分抽出

白菜を敷き詰め、しんなりするまで蓋をして煮込みます。

3. 他の具材投入

十分水分が出てきたら、ほかの具材も投入します。

4. 完成

アンコウに火が通り切ったら完成です! 〆は雑炊で!

感想

味噌の濃厚さが具材に絡んで美味しかったです! ただ、あん肝をダイレクトに味わうならあん肝ポン酢も捨てがたい。。。

【Arduinoの裏側③】GPIO・タイマー制御における抽象化のコストとレジスタ直接操作

本記事は「Arduinoの裏側」シリーズの第3回です。 今回は、Arduinoで最も頻繁に使用される機能である「GPIO」と、その背後で動作する「タイマー」に焦点を当てます。

digitalWriteanalogWrite は非常に便利な関数ですが、ハードウェアを抽象化する過程で無視できない処理コストや、機能的な制約が発生しています。本稿では、これらの関数が内部で行っている処理を解剖し、AVRマイコン本来のレジスタ操作との比較を行います。

前回はこちら cratech.hatenablog.jp

第一回はこちら cratech.hatenablog.jp

1. digitalWriteの内部処理とオーバーヘッド

Arduinoにおいて、特定のピンをHIGHにするコードは以下のように記述されます。

digitalWrite(13, HIGH);

一見、単一の命令に見えますが、コンパイル後のアセンブラレベルでは数十行の命令に展開されます。Arduino Coreライブラリ(wiring_digital.c)の実装を確認すると、主に以下の処理が実行されていることが分かります。

  1. ピン番号の検証: 指定されたピンが存在するかどうかのチェック。

  2. PWMの停止: 対象のピンでPWM(analogWrite)が動作している場合、タイマー接続を解除する処理(turnOffPWM)。

  3. ポートとビットマスクの変換: Arduinoのピン番号(例: 13)を、AVRのポート(例: PORTB)とビット位置(例: 第5ビット)に変換するためのテーブル参照。

  4. 割り込みの考慮: レジスタ書き換え時の原子性(Atomicity)を保証するためのステータスレジスタ操作(SREG)。

これらの「安全装置」と「抽象化」により、digitalWrite の実行には約50〜60クロックサイクル(16MHz動作時で約3〜4マイクロ秒)を要します。これは、マイクロ秒単位の厳密なタイミング制御には不向きな遅延です。

2. レジスタ構造の理解(DDR, PORT, PIN)

AVRマイコン(ATmega328P等)のGPIOは、主に3つの8ビットレジスタによって管理されています。

  • DDRx (Data Direction Register): 入出力の方向を決定します(0=入力, 1=出力)。

  • PORTx (Data Register): 出力時のH/L状態、または入力時のプルアップ抵抗の有無を制御します。

  • PINx (Input Pins Address): ピンの現在の論理レベルを読み取ります。

例えば、Arduino Unoの「13番ピン」は、AVRマイコン上の「ポートBの第5ビット(PB5)」に物理的に接続されています。

3. レジスタ直接操作による高速化

前述の digitalWrite(13, HIGH); と同等の操作を、レジスタ直接操作(Direct Port Manipulation)で記述すると以下のようになります。

// PORTBの第5ビットを1にする(HIGH出力)
PORTB |= (1 << 5);

// PORTBの第5ビットを0にする(LOW出力)
PORTB &= ~(1 << 5);

この記述であれば、コンパイル後は sbi (Set Bit in I/O Register) や cbi (Clear Bit in I/O Register) といった、わずか2クロックサイクル(125ナノ秒)で完了するアセンブリ命令に変換されます。

単純計算で、digitalWrite と比較して20倍から30倍の高速化が実現可能です。

4. タイマーとPWMの深層

GPIOと同様に、analogWrite もまた、複雑なタイマーレジスタの設定を隠蔽しています。

ATmega328Pには、Timer0(8bit)、Timer1(16bit)、Timer2(8bit)の3つのハードウェアタイマーが存在します。Arduinoの標準環境では、これらは以下のように割り当てられています。

  • Timer0: 時間管理(millis(), delay())および、5, 6番ピンのPWM。

  • Timer1: 9, 10番ピンのPWM、およびServoライブラリ。

  • Timer2: 3, 11番ピンのPWM、およびTone関数。

標準機能の限界とレジスタ操作

analogWrite を使用した場合、PWM周波数は約490Hz(一部のピンは約980Hz)に固定されます。しかし、モータードライバの制御や高速なスイッチングが必要な場面では、この周波数では不適切な場合があります。

ここで、タイマー関連のレジスタ(TCCR: Timer/Counter Control Register)を直接操作する必要が生じます。

例えば、Timer2のプリスケーラ(分周比)設定を変更することで、PWM周波数を数kHz〜数十kHzに変更したり、比較一致レジスタOCR: Output Compare Register)を操作して、ハードウェアレベルで正確な波形を生成することが可能になります。

ただし、Timer0のレジスタ設定を変更する際は注意が必要です。ここを変更すると、依存している delay() や millis() のカウント速度まで変化してしまい、プログラム全体の時制が狂うリスクがあります。

5. 抽象化と直接操作の使い分け

レジスタ直接操作は強力ですが、以下のデメリットも伴います。

  • 可読性の低下: どのピンやタイマーを操作しているかが直感的に分かりにくい。

  • 移植性の喪失: マイコンが変わればレジスタ構成も変わるため、互換性が失われる。

  • 副作用のリスク: 特にタイマー操作は、システム時間関数など他のライブラリに影響を与える可能性がある。

したがって、以下のような基準で使い分けることが推奨されます。

通常の用途: 標準関数を使用する(可読性と安全性を優先)。

高速制御・特殊な周波数が必要な場合: 高速SPI通信や、可聴域外のPWM生成などにおいてのみ、レジスタ直接操作を使用する。

6. 結論

Arduinoの利便性は、ハードウェアの複雑さを隠蔽することで成り立っています。しかし、エンジニアとしては、その隠蔽された「皮」を剥ぎ取り、必要に応じてシリコン本来の性能を引き出す知識を持っておくべきです。

GPIOとタイマーレジスタの理解は、そのための第一歩となります。

【Excel風】仕事の息抜き!ブログに埋め込まれた偽装ゲームで遊ぶ【やり方も解説】

お仕事お疲れ様です! 早速ですがゲームを作ったので、遊んでみてください!

Final_Report_2026.xlsx - Excel
AutoSave: ON
fx
=READY()
セル: A1 | スコア: 0

業務効率化関数 リファレンス

=VLOOKUP()
最高値を検索しワープ。
=IFERROR()
【15秒】エラー回避。
=SUM()
【15秒】データを吸引。
=AVERAGE()
【15秒】低速化。
※[Esc]キーで瞬時に画面を隠します

escapeを押すと仕事っぽい画面になります!

なぜこれを作ったのか

ふと、「HTMLでゲームを作れるのならブログに埋め込めるのでは?」と思いました。 しかしHTMLやJSは専門外なので、生成AIに頼めば作ってくれるのでは?と思いGeminiに頼んだところ、5分ほどでこれを作ってくれました。

作り方

まず生成AIにお願いする

まず以下プロンプトを投げかけました。 はてなブログがHTMLで書けるのを利用して、HTMLで作ったゲームをブログに埋め込むことってできない? できるといわれたので、次にこのプロンプトを投げました。 仕事中にこっそりできる、面白いゲーム作って するとExcel風のゲームができました。

ブログに張り付ける

MarkdownHTMLで編集して貼り付けてください。 プレビューで見てみると遊べるはずです!

あとは生成AIにブラッシュアップをお願いして、張り付けて...を満足いくまで繰り返せば完成です!

最後に

是非お仕事に疲れた時にこっそり遊んでみてください!

僕の好きなKeychronのキーボードリンクも貼っておくのでぜひ!

【IPA】情報処理技術者試験の再編について【2027年度】

※本内容は情報処理技術者試験の見直し案のまとめです。今後変更される可能性はあります。

本日2026/1/5、日経クロステックより情報処理技術者試験の大幅刷新案のニュースが出ました。

xtech.nikkei.com

これまでの「高度試験区分ごとの縦割り」から、「領域ごとのスキル認定」へ。 この内容と以前公開された内容を整理すると、新体系は以下のようになると予想されます。

情報処理技術者試験 再編イメージ図

おすすめの参考書

最大の変更点:「応用情報(AP)」の3分割

今回の再編案で最も衝撃的なのが、応用情報技術者試験(AP)の構造改革です。 これまでは「広く浅く」全分野を問われる試験でしたが、図の通り3つの領域に分割されるようです。

新・応用情報の3領域
  • マネジメント・監査領域: PM、サビマネ、監査などの基礎
  • データ・AI領域: アルゴリズム、統計、AI活用
  • システム領域: アーキテクチャ、NW、セキュリティ、実装

これにより、「自分はインフラ屋だから『システム領域』だけ先に取る」といったキャリアに合わせた受験が可能になりそうです。

3つ揃えると「フルスタック認定」?

これは2025/7の検討段階の話ですが、すべて合格したらフルスタックエンジニアへ認定も一案という文言があります。

これまでのAP合格者に相当する称号だと思われますが、「フルスタック」という現代的な名称を使うあたり、IPAも「専門性」と「総合力」の両立を強く意識していることが伺えます。 転職市場でも「AP(システム領域合格)」と書くより、「フルスタック認定済み」と書ける方がインパクトがありそうです。

高度試験も「3本柱」へ集約か

APの上位にある「高度情報技術者試験」も、APの3領域に対応する形で再編されるイメージとなっています。

従来の区分(NW, DB, ESなど)はどうなる?

おそらく、それぞれの領域内の「専門科目」として再配置されるか、あるいは「システム領域」の高度試験として統合される可能性があります。

エンベデッド(ES)は?

間違いなく「システム領域」の最重要科目として残るでしょうが、昨今のトレンドを考えると「データ・AI領域」の知識も問われるクロスオーバーな試験になるかもしれません。

基本情報(FE)は「共通言語」として継続

土台となる基本情報技術者試験(FE)は、引き続き「エンジニア共通の基礎・土台」として維持されるようです。 ただし、上位のAPがこれだけ変わるということは、FEの出題内容も「より実務的な基礎」へとマイナーチェンジする可能性が高いでしょう。

まとめ:エンジニアはどう動くべきか

この再編は、私たちエンジニアにとって「得意分野の証明がしやすくなる」というメリットがあります。

まずは自分の得意な領域の「新・AP」を取得する

余裕があれば他領域も埋めて「フルスタック」を目指す

専門性を極めるなら、そのまま直上の「高度試験」へ

というロードマップが明確になります。 特に組み込みエンジニアとしては、「システム領域」は必須として、AI活用が進む現場に対応するために「データ・AI領域」をどう攻略するかが鍵になりそうです。


この記事を書いた人

くらてち
社会人3年目の組み込みエンジニア。
2025年にエンベデッドシステムスペシャリスト(ES)合格。
X(Twitter)でも発信中。フォローお待ちしています! ▷ @cratech25

おすすめ記事

cratech.hatenablog.jp cratech.hatenablog.jp cratech.hatenablog.jp

AIに仕事を奪われるのが怖い?なら「組み込みエンジニア」という聖域へ来い

AIに仕事を奪われるのが怖い?なら「組み込みエンジニア」という聖域へ来い

どうも、くらてちです。

最近、Xを見ているとプログラマーはオワコン」「AIに仕事を奪われる」という話題をよく見かけます。 実際、GitHub CopilotやChatGPTのコーディング能力は凄まじいです。「Webサイト作って」と言えば、一瞬でそれっぽいコードが生成される時代になりました。 私もよく使います。

これからエンジニアを目指す人や、若手の人が不安になる気持ち、痛いほど分かります。

でも、組み込みの世界は、AIにはまだまだ攻略できません。

今日は、社会人3年目の現役エンジニアの視点で、「なぜAI時代こそ、組み込みがブルーオーシャンなのか」を解説します。

理由1:AIには「肉体」がない

これが最大の理由であり、最強の防壁です。

Webやアプリ開発は、PCの中(バーチャル空間)だけで完結することが多いですが、組み込みはリアルと戦う仕事です。

AIがいくら完璧なC言語のコードを書いたとしても、物理的なトラブルは解決できません。

AIにできない「現場の仕事」
  • 半田付けが甘くて動かない試作基板の修正
  • 「なんかモーター回すと誤作動する」というノイズ調査
  • オシロスコープのプローブをミリ単位の足に当てる作業

現場では「コードは1行も間違っていないのに、ハードウェアの要因で動かない」という怪奇現象が日常茶飯事です。 泥臭くテスターを当てて、匂いを嗅いで(焦げてないか確認して)、原因を特定する。 この「物理干渉」が必要な領域に、AIが入ってくるのは当分先の話です。

理由2:ネットに答えがない「魔境」だから

生成AIは、インターネット上の膨大なデータを学習して賢くなっています。 逆に言えば、「ネットに落ちていない知識」は知らないということです。

Web系の技術はオープンソース文化ですが、組み込みの世界は…

  • 30年前の謎のマイコンが現役で動いている
  • 仕様書が紙でしか残っていない(しかも手書きの修正入り)
  • メーカー独自の「秘伝のタレ」みたいな非公開仕様だらけ

いわば「クローズドな魔境」です。 Google検索しても出てこない、先輩の頭の中や、倉庫のキングファイルの中にしかない情報。これらをAIは学習しようがありません。

この「情報の非対称性」が、私たちの仕事をAIから守っています。

理由3:責任の重さが「命」に関わるから

AIは時々、平気な顔で嘘をつきます(ハルシネーション)。 Webサイトの表示が少し崩れるくらいなら修正すれば済みますが、組み込みの世界では致命的です。

⚠️ AI任せにできない理由
  • 自動ブレーキが作動しなかったら?
  • 医療機器のアームが暴走したら?
  • 工場のラインが停止して損害が出たら?

「99%合ってるコード」では使い物にならないのが組み込みです。 最後の最後、ミリ秒単位のタイミングを保証し、「絶対に安全だ」と判子を押す責任を取れるのは、人間だけです。

とはいえ、AIは「最強の相棒」です

誤解してほしくないのは、「組み込みにAIは不要」と言いたいわけではありません。 むしろ、私も毎日ガッツリ使っています。

  • 面倒な構造体の定義を書かせる
  • 複雑なビット演算の計算チェック
  • 英語のデータシートの要約

「コーディング」という単純作業はAIに任せて、人間は「ハードウェアの制御」「システム全体の設計」という部分に集中できる。

むしろ、組み込みエンジニアにとっては「面倒な作業が減って、モノづくりだけ残る」というボーナスタイムが来ていると感じます。

まとめ:泥臭い世界へようこそ

AIにおびえて「エンジニアはやめとこうかな…」と思っているなら、もったいないです。

「画面の中」から飛び出して、「モノ」を動かす世界に来ませんか?

物理法則と戦うこの仕事は、AI時代でも簡単には廃れません。 3年目の若造ですが、この「聖域」で待っています。

【祝賀】2026年新年の抱負

あけましておめでとうございます。 くらてちです。

昨年は、目標だった「エンベデッドシステムスペシャリスト(ES)」に合格し、エンジニアとして少し自信がついた1年でした。

さて、2026年。 気づけばエンジニア4年目。「新人」という免罪符が完全に消滅する年です(震)。

ざっくり「絶対やる(MUST)」と「できればやりたい(HOPE)」に分けて、今年の抱負を書き残しておこうと思います。

【MUST】これだけは絶対にやる

今年は「技術」と「プライベート」の両輪を回すのがテーマです。

MUSTリスト
  • 英語(瞬間英作文の継続)
  • 技術書をちゃんと読む
  • 言語新しく1つかけるようにする
  • ブログをたくさん書く
  • 筋トレをサボらない
  • 彼女を作る(切実)
  • 英語&技術 英語は「どんどん瞬間英作文」シリーズを始めます。やっぱり、ドキュメントを読むだけじゃなくて「使える」ようになりたいので。 技術面では、エラーが出たらググってコピペ…ではなく、今年は**「技術書」を腰を据えて読む習慣**をつけたいです。
  • 新言語 バックエンドの言語1つ書けるようになりたいなあと。今のところGoが最有力候補です。
  • ブログ せっかく始めたので、今年は更新頻度を上げます。 技術の話、資格の勉強法、日々の生存報告など、アウトプットしていきます。
  • 筋トレ 昨年からジムに通ってるのですが、今年も継続できればなと。平均週2以上はキープしたいです。
  • 彼女を作る はい、これMUSTです。 仕事も大事ですが、そろそろプライベートも充実させないと...(焦) エンジニア、出会いがない問題。進展があれば(あるいは無くても)ブログで報告する…かもしれません。

【HOPE】余裕があれば手を出したい

「できればやりたいな〜」という願望枠。 無理して潰れない程度に。

HOPEリスト
  • お金の勉強(簿記3級・FP)
  • 情報処理安全確保支援士(セキスペ)
  • お金の勉強 「エンジニアも数字に強くあるべき」とは思うんですが、まずは本業のスキルアップが優先かなと。 ただ、将来のために簿記やFPの知識は絶対に必要だと思うので、まずはテキストを買ってみようと思います。
  • セキスペ(SC)への挑戦 昨年のエンベデッド合格の勢いで、セキュリティのスペシャリストも取れたらかっこいいな、と。 組み込み×セキュリティは需要が高いですしね。まずは秋試験あたりを目標に、様子を見つつ検討します。

まとめ

というわけで、2026年は 「英語と技術を磨きつつ、筋トレして彼女を作って、あわよくばお金とセキュリティも学ぶ」 という1年にしたいと思います。

全部できなくても、昨日の自分より強くなっていればOK精神で。 同じように今年何かを頑張る方々、一緒に切磋琢磨しましょう! 本年も当ブログをよろしくお願いいたします!

【京都土産】おうすの里の濃厚梅酒「梅麟」の魅力

年末の帰省の際、両親の結婚記念日兼お土産として、ちょっと良いお酒を買ってきました。

京都・祇園に本店を構える梅専門店「おうすの里」の梅酒、梅麟(ばいりん)です。

このお酒がとっても美味しかったのでレビューします。

 

梅専門店「おうすの里」とは?

京都の祇園二年坂産寧坂などに店舗がある、梅干しと梅酒の専門店です。 観光で行ったことがある人は分かると思いますが、店内に入ると店員さんがすごく丁寧に試食・試飲を勧めてくれる、有名なお店です。

今回は奮発して、ラインナップの中でも高級な部類の「梅麟」を選びました。

 

開封:漂う高級感と「原酒」の迫力

まずパッケージがこれです。

淡い色合いの化粧箱に入っていて、金色のロゴが光っています。とても上品で高級感があります。

そして中身のボトルはこちら。

この梅酒は「原酒 Alc.18%」です。

一般的な梅酒のアルコール度数は10〜14%くらいが多いですが、これは18%もあります。 加水していない「原酒」だからこそ、梅のエキスとアルコールがガッツリ濃縮されている証拠です。ラインナップの中には12%のものも多くあるので、アルコールが濃いのが苦手な方はそちらがおすすめです。

 

実飲:おすすめはロックとソーダ割り

さっそく飲んでみました。 これだけ濃いお酒なので、まずロックにして間違いはないでしょう。

グラスに注ぐと、液体に少し「とろみ」があるのが分かります。

 

飲んだ感想: 口に含んだ瞬間、「甘い」というより「濃い!!」という衝撃が走ります。 完熟梅のフルーティーな香りが鼻に抜けて、その後にしっかりとしたアルコールの重みが来ます。

  • スーパーで売っているパックの梅酒とは完全に別物。

  • とろっとしていて、梅の果肉を感じるような濃厚さ。

  • 度数は高いけれど、アルコールの嫌な刺々しさは全くない。

  • 甘味は少なく、梅の濃厚さをしっかりと感じる。

氷が少し溶けてきても味が全然薄まらないので、ちびちびと時間をかけて楽しむ「大人の夜」に最高のお供でした。

 

次はソーダ割りにして飲んでみました。これだけ濃いお酒なので、炭酸のシュワシュワ感が加わることで、濃厚な梅の風味がさらに華やかに広がります。

ロックだと少し重たいかな?という時や、お風呂上がりにさっぱり飲みたい時なんかは、ソーダ割りが最高だと思います。

 

まとめ:京都に行ったらマストバイ

この「おうすの里」、実はオンラインショップでの購入が少しハードルが高い(大手ECサイトにはなく、電話注文などがメイン)ため、「京都に行かないと買いにくい」というレア感もお土産として優秀なポイントです。

お酒好きな方への京都土産にはもちろん、日々の疲れを癒やす自分へのご褒美にも最高でした。 京都へ行かれた際は、ぜひお店を覗いてみてください。試食いっぱいさせてくれるので、覗くでも楽しいですよ!!