TypeScript

deno + SolidJS の設定で試行錯誤

最近、SolidJSに興味を持ちました。JSXを使うことができるけど、React系とはアプローチが異なり、仮想DOMを使わないことで効率が良いらしい。公式ページの情報公式ページの情報でも、deno + SolidJS については書いてありま...
TypeScript

シンプルなAIアプリ4

シンプルなAIアプリ3の続きです。ブラウザでAIに送信するプロンプトを編集し、AIが返した結果を表示できるようになったので、UIを調整します。UIの調整index.htmlを更新するブラウザに表示する画面を検討しました。そして、次のようなイ...
TypeScript

シンプルなAIアプリ3

シンプルなAIアプリ2の続きです。esbuild実行環境を整備する前回はesbuildをコマンドラインから起動していましたが、それには、esbuildをnpm installしなくてはなりません。Denoを使っているなら、build用スクリ...
TypeScript

シンプルなAIアプリ2

シンプルなAIアプリの続きです。今回は、データの送受信処理を作成します。ブラウザとサーバー間の送受信ブラウザとサーバー間の送受信処理を作成していきます。送信、受信ともに、データはJSON形式でやり取りすることにします。ブラウザ → サーバー...
TypeScript

シンプルなAIアプリ

Gemini APIを使ったシンプルなAIアプリを作っていきます。仕様を考える今回のアプリは、プロンプト: ブラウザ → Denoサーバー → Gemini API生成結果: Gemini API → Denoサーバー → ブラウザという感...
TypeScript

Denoを試す3

これは「Denoを試す2」の続きです。Denoに挑戦したそもそもの目的は「Gemini AIを使う」ことでした。Denoを試すという話題の最後に、それに挑戦しましょう。Gemini API (Node.js版)Gemini APIは、様々な...
TypeScript

Denoを試す2

「Denoを試す」の続きです。PreactでSSRサーバーサイドを動かすためにDenoを使ってみる気になったので、この機にSSR(サーバーサイドレンダリング)を試してみたいと思いました。普通ならここでReactの出番なのですが、私はPrea...
TypeScript

Denoを試す

Denoを使ってみたくなったので、その時の体験記的な話を少し書いてみます。Denoの導入動機最近の私は、AIの自動生成に興味を持っています。GoogleのGeminiやMicroSoftのCopilotなどで気軽に、かつ、無料でテキスト生成...
プログラム

コパイロットでプログラミング

Microsoft Copilotを使って、簡単なプログラムを作ってみた話です。背景私は普段はPHPを使う機会がなく、あまり詳しく知りません。何かをさせたいと思っても、適切なシステム関数を思い出せませんし、細かいプログラム作法も詳しくありま...
preact

esbuildのMake環境

これは下の話の続きです。背景と動機の説明esbuildを使い方をネットでいろいろ検索していくと、次のようなbuild.jsを書いて、buildするという話ばっかり見つかります。import { build, BuildOptions } f...
PIC

XC8攻略記5

前回はswitch文に関連する話を書きました。そのときに記載を省いたことが1つありました。それを書いてみたいと思います。関数テーブルによる処理分岐条件分岐を高速に行う方法の1つとして「テーブル方式による分岐」があります。enum値が0から始...
preact

preactとesbuildを使ってみた

preactを選んだ動機最近、react…というかJSXの練習をしてみたいと思うようになりました。HTML文をTypescriptのコードの中で作成して、div要素のinnerHTMLを書き換えて…という作業が結構大変だなぁ~と感じるように...
PIC

PICによるRC戦車制御3

「戦車制御機能」部分が作成できたので、残りの機能を作っていきます。受信と制御の連絡機能赤外線受信処理では、データの受信が完了したときにEvent_IRR_DataIsReceivedイベントを発生します。(詳細は「PICによる赤外線通信7 ...
PIC

PICによるRC戦車制御2

「戦車制御機能」の続きです。モーターのソフトウェアPWM戦車のモーターはソフトウェアPWMで動かします。そのためのコードを作成していきましょう。これはいろいろと説明するよりも、コードを見た方が早いと思うので、先にコードを示します。TMR2イ...
PIC

PICによるRC戦車制御1

これは「PICによる赤外線通信」の続きです。「PICによる赤外線通信8」で、赤外線受信処理部分のプログラムはできてしまったので、タイトルを変更しました。残りの作業について「PICによる赤外線通信5 受信プログラムの周りの機能について」で、4...
TypeScript

deno + SolidJS の設定で試行錯誤

最近、SolidJSに興味を持ちました。JSXを使うことができるけど、React系とはアプローチが異なり、仮想DOMを使わないことで効率が良いらしい。公式ページの情報公式ページの情報でも、deno + SolidJS については書いてありま...
TypeScript

シンプルなAIアプリ4

シンプルなAIアプリ3の続きです。ブラウザでAIに送信するプロンプトを編集し、AIが返した結果を表示できるようになったので、UIを調整します。UIの調整index.htmlを更新するブラウザに表示する画面を検討しました。そして、次のようなイ...
TypeScript

シンプルなAIアプリ3

シンプルなAIアプリ2の続きです。esbuild実行環境を整備する前回はesbuildをコマンドラインから起動していましたが、それには、esbuildをnpm installしなくてはなりません。Denoを使っているなら、build用スクリ...
TypeScript

シンプルなAIアプリ2

シンプルなAIアプリの続きです。今回は、データの送受信処理を作成します。ブラウザとサーバー間の送受信ブラウザとサーバー間の送受信処理を作成していきます。送信、受信ともに、データはJSON形式でやり取りすることにします。ブラウザ → サーバー...
TypeScript

シンプルなAIアプリ

Gemini APIを使ったシンプルなAIアプリを作っていきます。仕様を考える今回のアプリは、プロンプト: ブラウザ → Denoサーバー → Gemini API生成結果: Gemini API → Denoサーバー → ブラウザという感...
TypeScript

Denoを試す3

これは「Denoを試す2」の続きです。Denoに挑戦したそもそもの目的は「Gemini AIを使う」ことでした。Denoを試すという話題の最後に、それに挑戦しましょう。Gemini API (Node.js版)Gemini APIは、様々な...
TypeScript

Denoを試す2

「Denoを試す」の続きです。PreactでSSRサーバーサイドを動かすためにDenoを使ってみる気になったので、この機にSSR(サーバーサイドレンダリング)を試してみたいと思いました。普通ならここでReactの出番なのですが、私はPrea...
TypeScript

Denoを試す

Denoを使ってみたくなったので、その時の体験記的な話を少し書いてみます。Denoの導入動機最近の私は、AIの自動生成に興味を持っています。GoogleのGeminiやMicroSoftのCopilotなどで気軽に、かつ、無料でテキスト生成...
TypeScript

ブロックくずしを作る10「ブロックを壊す」

ブロックと球の衝突判定ができるようになったので、球が当たったブロックを壊す処理を追加しましょう。ブロックを壊すための設計ブロックを壊すために、今回は次のような設計にします。ブロックに耐久力のパラメータを追加する。ブロックに弾が当たると耐久力...
TypeScript

ブロックくずしを作る9「ブロックと球の衝突処理2」

ブロックに球との衝突判定を追加する衝突判定のアルゴリズムができたので、実際にコーディングしていきましょう。まずはブロック(Brickクラス)に追加するコードです。export class Brick implements IGameCanv...
TypeScript

ブロックくずしを作る8「ブロックと球の衝突処理」

衝突時の動作仕様ブロックを配置できるようになったので、弾がブロックに当たった(衝突した)ときの処理を作っていきましょう。最初に、ブロックと弾が衝突したときの球やブロックがどのように変化するのか、動作仕様を決めます。ラケットと異なり、ブロック...
TypeScript

図形クラス3「距離」

2つの図形の距離図形クラス、図形クラス2でいくつかの図形クラスを作ってきたので、2つの図形の距離の出し方やそのプログラムについて考えましょう。2つ点の距離 (X2,Y2) (X1,Y1) distance 点\((X_1,Y_1)\)と点\...
TypeScript

図形クラス2「直線」

のつづきです。今回は直線関係を整備していきます。直線クラスはじめに直線クラスを整備する目的について説明します。目的の1つ目は、CANVASに直線を描画するためです。これはそれ以上の説明は不要でしょう。目的の2つ目は、もっと複雑な図形を扱うた...
TypeScript

ブロックくずしを作る7「ブロックを配置する」

前回、ブロックの配置仕様や座標計算などを行ったので、それに基づいたコーディングをしていきましょう。ブロック座標へのアクセス機能を追加するブロックくずしをつくる5の最後に、「ブロックの座標をbrick.Rect.Xとbrick.Rect.Yで...
TypeScript

ブロックくずしを作る6「ブロック配置の仕様」

ブロック配置の仕様を決める前回まででブロックを表示できるようなり、とりあえず横5個×縦3個を配置しました。今回はブロックをゲームエリア内のどこにどれだけ配置するのかを決めましょう。 上の図は、ゲームエリアとブロックの配置の例を示したものにな...
PIC

XC8攻略記5

前回はswitch文に関連する話を書きました。そのときに記載を省いたことが1つありました。それを書いてみたいと思います。関数テーブルによる処理分岐条件分岐を高速に行う方法の1つとして「テーブル方式による分岐」があります。enum値が0から始...
PIC

PICによるRC戦車制御3

「戦車制御機能」部分が作成できたので、残りの機能を作っていきます。受信と制御の連絡機能赤外線受信処理では、データの受信が完了したときにEvent_IRR_DataIsReceivedイベントを発生します。(詳細は「PICによる赤外線通信7 ...
PIC

PICによるRC戦車制御2

「戦車制御機能」の続きです。モーターのソフトウェアPWM戦車のモーターはソフトウェアPWMで動かします。そのためのコードを作成していきましょう。これはいろいろと説明するよりも、コードを見た方が早いと思うので、先にコードを示します。TMR2イ...
PIC

PICによるRC戦車制御1

これは「PICによる赤外線通信」の続きです。「PICによる赤外線通信8」で、赤外線受信処理部分のプログラムはできてしまったので、タイトルを変更しました。残りの作業について「PICによる赤外線通信5 受信プログラムの周りの機能について」で、4...
PIC

PICによる赤外線通信8

イベントについてここまでのコードや説明で「イベントを発生する」「イベント発生フラグを立てる」といった説明していたので、それについて説明します。イベント駆動型プログラムまず、今回の受信処理プログラムはイベント駆動型プログラムで作成することにし...
PIC

PICによる赤外線通信7

受信プログラムの続きを行っていきます。受信フェイズの検討送信処理プログラムを作成したとき、送信フェイズの検討を行いました。受信プログラム側も同様にフェイズを分類することにします。フェイズ名説明受信を期待する信号と回数STOPデータ受信をスト...
PIC

PICによる赤外線通信6

まずは、受信処理プログラムの基本部分を作っていきましょう受信処理に必要な最重要機能前回の送信と受信のタイミングの違いでも説明したように、「パルスON」の時間と「パルスON+OFF」の時間を計測することで、送信側から送られてきた信号を判定する...
PIC

XC8攻略記4

XC8の最大の弱点が分かりました。それはswitch文です。【注意点8】switchは最大の鬼門すでに結論を述べていますが、XC8はswitch文が最大の鬼門だと思います。switch文はいろいろメリットがあります。C言語に慣れている人には...
PIC

PICによる赤外線通信5

前回までで送信プログラムをある程度作成できたので、今回から受信プログラムを作っていきます。受信プログラムの検討に入る前に、全体的な回路構成や受信データについての注意点など、周辺について説明します。全体的な回路構成下に、受信側の回路構成を示し...
PIC

XC8攻略記3

攻略記2の【注意点5】ループ処理カウント方法の話の中で、「ループを抜けるチェックもカウントダウンの方が簡潔になっています。」ということを書きました。(該当箇所へのリンク)そこで条件式について調べてみたいと考えました。【注意点6】条件式は0を...
PIC

XC8攻略記2

XC8攻略記。今回はもっとも基本的な算術処理についてです。【注意点4】演算子の罠もっとも単純な計算式を考えてみます。次の計算式はAとBを足してCに代入しています。C = A + B; // AとBを足してCに代入次のように書けば、Cに8を加...
PIC

XC8攻略記1

はじめに一般的な話としてコーディング(プログラムの作成)を行う場合は、「わかりやすいこと」「簡潔であること」が望ましいとされています。それは、主に次の理由からです。不具合:不具合を作りこみにくい。また不具合が発生してもデバッグが行いやすい。...
PIC

PICによる赤外線通信4

送信プログラム作成の続きです。送信フェイズの検討前回までのコードで状況に応じてIRT_NextSignalにセットする値を変えることで、赤外線通信ができるようになっています。「状況に応じて」を整理するために、送信処理をいくつかのフェイズに分...
PIC

PICによる赤外線通信3

通信フォーマットを決めたので、送信側のプログラムを作成していきましょう。単純ケースまず単純なケースです。下のようなコードでリーダー部やアドレス部を送信することはできます。なお、IRT_On()とIRT_Off()は、過去に説明しています。#...
PIC

PICによる赤外線通信2

通信フォーマット赤外線通信を行うために参考となる情報を検索した結果、赤外線通信には通信フォーマットというものがあることを知りました。特に参考になったのは、こちらのページでした。NECフォーマットなど様々な通信フォーマットがありますが、下のよ...