@Blog
日常日誌からプログラムやYOUTUBER紹介、旅日記まで日々更新中です。

Jsonの返却時に便利ですよを貼っときますねと雑煮.
2025.07.14
おはようございます.Jsonの返却時に便利ですよを貼っときますね、こう書くのがベストプラクティスなのか分かりませんが便利な時がありますので覚えておいて損はない書き方だと思います.
//Jsonの返却時に便利ですよ👍️
const obj = {
name: "Taoka",
age: 25,
country: "Japan"
};
Object.entries(obj).forEach(([key, value]) => {
console.log(key,value)
});
//console log ⬇️
//name Taro
//age 25
//country Japan
雑煮ではなくて雑談です、最近?のUPDATEでウィンドウズ11のメモ帳でもマークダウン記法が使えるようになったソウデス.ちょっと驚きました、なんかメモ帳ってウィルスに感染しないぐらい強固なアプリなイメージがあるので、いまのメモ帳は今まで無かったものを拡張していっている感じがしてちょっと心配なイメージが少しあります.
便利になることは良いことですが、拡張していくとバグや脆弱性が発生するので大丈夫かなって思います.マイクロソフト開発陣営は優秀な人だと思いますが、やっぱ心配.
全然関係ない話をもう一つウィンドウズをアップデートしていく内に何だか家のパソコンが熱暴走で…固まりだした.この原因を探ろうとログを見て解決したいと思っています.原因が分かったら記事にしようと思います.
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
```, アップデート, アプリ, いま, イメージ, ウィルス, ウィンドウズ, こと, そうです, ダウン, なん, バグ, パソコン, ベストプラクティス, マーク, マイクロソフト, メモ, もの, よう, ログ, 一つ, 便利, 優秀, 原因, 大丈夫, 強固, 心配, 感じ, 感染, 拡張, 明日, 暴走, 書き方, 最近, 発生, 脆弱, 解決, 記事, 記法, 返却, 開発, 関係, 陣営, 雑煮, 雑談,

チャットワークのAPIを使ってみました.プロンプトでほぼ書いています.
2025.07.13
おはようございます.チャットワークのAPIを使ってみました.プロンプトでほぼ書いたコードになります、チャットGPTの無料版にリファレンスのURLリンクとPHPのクラス化、リターンに$thisで返却出来る所は$thisを使用してスマートにコードを書いてと指示を出しました.
出来上がったコードが下記になります.ソースコードは自分の方でモンキーテスト的に動かしてみましたが、ちゃんと動作するようです.
<?php
class ChatworkClient
{
private string $apiToken;
private string $baseUrl = 'https://api.chatwork.com/v2';
private int $retryCount = 3;
private int $retryDelay = 1000000; // microseconds
public function __construct(string $apiToken)
{
$this->apiToken = $apiToken;
}
public function setRetry(int $count, int $delayMicroseconds): self
{
$this->retryCount = $count;
$this->retryDelay = $delayMicroseconds;
return $this;
}
private function request(string $method, string $path, array $params = []): array
{
$attempts = 0;
while ($attempts < $this->retryCount) {
$attempts++;
$ch = curl_init();
$url = $this->baseUrl . $path;
if ($method === 'GET' && $params) {
$url .= '?' . http_build_query($params);
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headers = ['X-ChatWorkToken: ' . $this->apiToken];
if (in_array($method, ['POST', 'PUT', 'DELETE'])) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);
curl_close($ch);
if ($error) {
if ($attempts < $this->retryCount) {
usleep($this->retryDelay);
continue;
}
throw new RuntimeException("cURL error after {$attempts} attempts: {$error}");
}
if ($status >= 200 && $status < 300) {
return [
'status' => $status,
'body' => $body ? json_decode($body, true) : null,
];
}
if ($attempts < $this->retryCount && $status >= 500) {
usleep($this->retryDelay);
continue;
}
return [
'status' => $status,
'body' => $body ? json_decode($body, true) : null,
];
}
throw new RuntimeException("Request failed after {$this->retryCount} attempts");
}
public function setToken(string $token): self
{
$this->apiToken = $token;
return $this;
}
public function me(): array
{
return $this->request('GET', '/me');
}
public function getMyStatus(): array
{
return $this->request('GET', '/my/status');
}
public function getMyTasks(array $filters = []): array
{
return $this->request('GET', '/my/tasks', $filters);
}
public function getContacts(): array
{
return $this->request('GET', '/contacts');
}
public function getRooms(): array
{
return $this->request('GET', '/rooms');
}
public function createRoom(array $params): array
{
return $this->request('POST', '/rooms', $params);
}
public function getRoom(int $roomId): array
{
return $this->request('GET', "/rooms/{$roomId}");
}
public function updateRoom(int $roomId, array $params): array
{
return $this->request('PUT', "/rooms/{$roomId}", $params);
}
public function deleteRoom(int $roomId, string $action = 'leave'): array
{
return $this->request('DELETE', "/rooms/{$roomId}", ['action_type' => $action]);
}
public function getMembers(int $roomId): array
{
return $this->request('GET', "/rooms/{$roomId}/members");
}
public function updateMembers(int $roomId, array $params): array
{
return $this->request('PUT', "/rooms/{$roomId}/members", $params);
}
public function getMessages(int $roomId, bool $force = false): array
{
return $this->request('GET', "/rooms/{$roomId}/messages", ['force' => $force ? 1 : 0]);
}
public function postMessage(int $roomId, string $body, bool $selfUnread = false): self
{
$this->request('POST', "/rooms/{$roomId}/messages", ['body' => $body, 'self_unread' => $selfUnread ? 1 : 0]);
return $this;
}
public function markRead(int $roomId): self
{
$this->request('PUT', "/rooms/{$roomId}/messages/read");
return $this;
}
public function markUnread(int $roomId): self
{
$this->request('PUT', "/rooms/{$roomId}/messages/unread");
return $this;
}
public function getMessage(int $roomId, int $messageId): array
{
return $this->request('GET', "/rooms/{$roomId}/messages/{$messageId}");
}
public function getRoomTasks(int $roomId, array $filters = []): array
{
return $this->request('GET', "/rooms/{$roomId}/tasks", $filters);
}
public function createTask(int $roomId, array $params): array
{
return $this->request('POST', "/rooms/{$roomId}/tasks", $params);
}
public function uploadFile(int $roomId, string $filePath, string $message = ''): array
{
if (!file_exists($filePath)) {
throw new InvalidArgumentException("File not found: {$filePath}");
}
$ch = curl_init();
$url = $this->baseUrl . "/rooms/{$roomId}/files";
$cfile = curl_file_create($filePath);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-ChatWorkToken: ' . $this->apiToken]);
curl_setopt($ch, CURLOPT_POSTFIELDS, ['file' => $cfile, 'message' => $message]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch)) {
throw new RuntimeException(curl_error($ch));
}
curl_close($ch);
return ['status' => $status, 'body' => json_decode($body, true)];
}
}
人が今回のコードを書いた場合、早い人でも10分ぐらいはコードを書かないといけないと思います、どんなに早くてもそれぐらいの時間は必要だと思いますが、生成AIはこれを数十秒で書ける訳ですから、確実に時間短縮になります.
なので人工知能が使える現場は間違いなく最初のコード出力は人工知能に任せた方が良いです.特に新規案件の土台は生成AIに任せると開発コストは削減出来ます.
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
```, クラス, コード, コスト, これ, スマート, ソース, それ, チャット, テスト, プロンプト, モンキー, よう, リターン, リファレンス, リンク, ワーク, 下記, 人工, 今回, 使用, 出力, 削減, 動作, 土台, 場合, 必要, 指示, 新規, 明日, 時間, 最初, 案件, 無料, 現場, 生成, 知能, 短縮, 確実, 自分, 返却, 開発, 間違い,

AI時代のマーケティング激変に備えよグーグル検索の60%がクリックされない
2025.07.05
おはようございます.先日、自分が言っていた事は間違いなかったんだなって下記の動画を見て思いました.これから先、SNSとAIを駆使しないと集客出来ない時代になるということですね.要するに検索というものは廃れていくということです.最後にサイトとして残るのはユーザーが体験出来るサイトしか残らないような気もしています.
動画を内容をGeminiに解説してもらいましたのでマーケティングしている人は必見だと思います.
HubSpotのCEO、ヤミニ・ランガン氏が語るAIがビジネスに与える影響についての要点は以下の通りです。
AIの現状と影響
- AI開発の中心はサンフランシスコで、OpenAIやAnthropicがLLMの主導権を争っています [03:54]。
- AIは人間の仕事を「拡張」するものであり、一部の職種では人員削減に繋がる可能性もありますが、営業や開発のように生産性向上により、より多くの人間が必要となる職種もあります [06:30]。
- AmazonやMicrosoftもAIによる効率化と人員削減に言及しています [05:53]。
HubSpotにおけるAIの活用
- HubSpotは2023年にAI中心の製品ロードマップに転換し、社内でもAIを積極的に導入しています [09:50]。
- カスタマーサポートでは、ティア1のサポートチケットの約50%をAIで解決し、人員を維持しながら顧客ベースを拡大しています [10:56]。
- 営業では、AIを活用してアカウント調査、メール作成、会議設定を自動化し、数万件の会議設定に成功しています [11:48]。
- マーケティングでは、AIでウェブサイト訪問者の意図を分析し、パーソナライズされたコンテンツを提供することで、コンバージョン率を80〜100%向上させています [13:26]。
- ヤミニ氏自身も、ChatGPT、Claude、GeminiなどのAIツールを個人的に活用しているとのことです [14:10]。
AIによる検索とSEOの変革
- Google検索のAI概要が直接回答を提供するため、従来のSEOは通用しなくなりつつあります [17:09]。
- 人々がGoogle検索だけでなく、ChatGPTのようなLLMから直接情報を得るようになっているため、ウェブサイトへの訪問者数が減少する可能性があります [18:02]。
- 「AI最適化」という新しい分野が台頭しており、AIが特定の質問に回答できるようにコンテンツを最適化することに焦点を当てています [18:47]。
- HubSpotは、ブログトラフィックの減少に対応するため、ポッドキャスト、メールニュースレター、YouTubeなど、多様なチャネルへのコンテンツ戦略を拡大しています [21:07]。
AIによる営業とカスタマーサービスの変革
- 営業: AIは、アカウント調査、メール作成、デモ準備など、営業担当者の非対面業務の多くを自動化できます [24:22]。
- AIは、通話やメールの記録から自動的に顧客情報をCRMに取り込み、パーソナライズされたメールのドラフト作成などを支援します [25:32]。
- AIは営業における「人間的なつながり」を強化するものであり、置き換えるものではないとヤミニ氏は考えています [28:00]。
- カスタマーサービス: AIはティア1のサポート質問に最適であり、顧客満足度を維持しながら迅速な問題解決を可能にします [29:33]。
- HubSpotの顧客は、AIエージェントによって平均52%のチケット解決率を達成しており、中には80%を解決している顧客もいます [30:56]。
この動画は、AIがビジネスのあらゆる側面に深く浸透し、企業がその変化に適応する必要があることを強調しています。
トイウコトでやっぱりこれから先はECサイトやアンサーサイトはかなりダメージを受けてくると思っています.逆に影響を受けないのはBtoBのサイトなのかも.
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
)。, アカウント, アンサーサイト, いた事, ウェブサイト, エージェント, カスタマーサービス, カスタマーサポート, こと, コンテンツ, コンバージョン, サイト, サポート, サンフランシスコ, ため, ダメージ, チケット, チャネル, ツール, つながり, ティア, デモ, トイウコト, ドラフト, ニュースレター, パーソナライズ, ビジネス, ブログトラフィック, ベース, ポッドキャスト, マーケティング, マップ, メール, もの, ヤミニ, ヤミニ・ランガン, ユーザー, よう, ロード, 一部, 下記, 中心, 主導, 人々, 人員, 人間, 仕事, 以下, 企業, 会議, 体験, 作成, 個人, 側面, 先日, 内容, 分析, 分野, 削減, 効率, 動画, 可能, 台頭, 向上, 問題, 営業, 回答, 変化, 変革, 多く, 多様, 対応, 対面, 導入, 平均, 強化, 強調, 影響, 従来, 必要, 必見, 情報, 意図, 成功, 戦略, 担当, 拡大, 拡張, 提供, 支援, 明日, 時代, 最後, 最適, 検索, 業務, 概要, 活用, 浸透, 減少, 満足, 準備, 焦点, 特定, 現状, 生産, 直接, 社内, 積極, 維持, 職種, 自分, 自動, 自動的, 自身, 製品, 要点, 解決, 解説, 言及, 記録, 訪問, 設定, 調査, 質問, 転換, 迅速, 通り, 通用, 通話, 達成, 適応, 開発, 間違い, 集客, 顧客, 駆使,

AIで今後どうなるだろうな.自然言語処理で指示出し出来てきた今日.
2025.07.01
おはようございます.何だか梅雨明けした休日にGeminiCliでコードを生成しています.仕事ではまだ自分はChatに分からない事を質問するぐらいの事しかしていないのだけども絶対にCliなどで作業すると時間短縮になるのは間違いです(仕事でも導入しているのですが自分は使用していない).
休日に作業するときはコパイロットとGeminiを使用して開発しているのです、どちらも無料版なのだけど自分は無料板で事足りています.
因みにコパイロットとGemini、どちらが優秀かという問いに関しては今のところコパイロットの方が優秀なソースコードを書いてくれるというイメージが強いです.有料版ではカーソルやデビィンなどが優秀らしいけども余裕資金があんま無いので試していない.
お金に余裕があればいろいろと試したいことはあります.例えばグラボ(グラフィックボード)を取り替えて機械学習の学習をローカルで試してみたいなどがあります.
この頃思うのだけど、何かとこの業界は移り変わりが激しいのと新しい技術を学ぶときにたまに技術投資が必要になります.昔はオープンソース的な感じだったけどこのIT業界ビックテックはお金を取り出して来ています.
その中でMETA社?だけがオープンソースでいろいろと提供してくれていてとても有り難いです.それでもやっぱそれを動かす端末の推奨環境という物があるので古いPCだと動かなかったりします.
今後、Llm(大規模言語モデル)は容量が小さくなっていくということとローカル端末で動かすのが当たり前になる時代が来るそうです.
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
あんま, イメージ, オープン, お金, カーソル, グラフィック, グラボ, コード, こと, コパイロット, ソース, そう, それ, たま, デビィン, とき, ところ, どちら, ビックテック, ボード, みたい, モデル, ローカル, 今後, 仕事, 休日, 余裕, 作業, 使用, 優秀, 問い, 学習, 容量, 導入, 当たり前, 必要, 感じ, 技術, 投資, 推奨, 提供, 明け, 明日, 時代, 時間, 有料, 梅雨, 業界, 機械, 無料, 環境, 生成, 短縮, 移り変わり, 端末, 絶対, 自分, 規模, 言語, 資金, 質問, 開発, 間違い,

GeminiCliを使ってみました、まぁまぁ使えるかもしれない.
2025.06.30
おはようございます.GeminiCliを使ってみました、まぁまぁ使えるかもしれないというのが第一印象です、ただデザイン修正には使えそうにない.デザインを提示すればその通りになおしてくれると思うのだけどテキストだけの指示ではなかなか難しいと感じました.
ディレクトリ配下にあるソースコードを読ます場合は下記のようなプロンプトを一度打つとスムーズに機能追加してくれるので良いですよ.
コードベースを把握して
最初にこの言葉をGeminiに投げることでどんな機能のプログラムコードなのか把握します.これがないと駄目な訳でもないだけどもスムーズに指示出しが出来ます.
特定のコードに対して修正やらを書けたい場合は@(アットマーク)を入力するとソースコードの候補が表示されるので選択をしてプロンプトを指示を出すと良いです.
あとGeminiCliを終了する場合は下記のコマンドを打てば終了します.
/exit
!を入力しls -aなどと入力するとMacの場合は階層のファイル一覧が表示されます的なことも出来ます.

ともあれ、ジェミナイ(ジェミニ)は無料で使用できるトークンも他よりも比較的に多いので自分としてはかなり嬉しいです、休日の個人開発はこれで何とか頑張っていけそうです.
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
あっとまーく, あと, コード, こと, コマンド, これ, ジェミナイ, ジェミニ, スムーズ, ソース, そう, ディレクトリ, テキスト, デザイン, トーク, ファイル, プログラム, プロンプト, ベース, よう, 一覧, 下記, 休日, 使用, 修正, 個人, 候補, 入力, 出し, 印象, 場合, 把握, 指示, 提示, 明日, 最初, 機能, 比較, 無料, 特定, 終了, 自分, 表示, 言葉, 追加, 通り, 選択, 配下, 開発, 階層, 駄目,

AIで記事を学習して新たな記事を生み出すにはお金が必要だと思っていたがそうでも.
2025.06.22
おはようございます.AIで記事を学習して新たな記事を生み出すにはお金が必要だと思っていたがそうでもなくローカルPCでそこら辺に落ちているLlamaモデルを持ってきてチューニングすれば何とかなるじゃねぇという思いに至った.
実はあなたの手元にあるPCと、そこら中に「落ちている」オープンソースのAIモデル、特にLlama 3があれば、十分記事が生成できるんです。
ローカルAI記事生成は、もはや夢物語じゃない
「AIで記事生成」と聞くと、SFのような世界や、大企業だけが使える特権のように感じるかもしれません。しかし、今は違います。オープンソースの強力な言語モデル、特にMetaが公開したLlama 3の登場は、この常識を大きく覆しました。
Llama 3は、その性能の高さにもかかわらず、誰でも無料で利用できるという点が最大の魅力です。さらに、80億パラメータの8Bモデルであれば、最新のゲーミングPCとまではいかなくとも、ある程度の性能を持つPCであれば十分に動作します。これにより、高額なクラウドサービスを利用せずとも、自分のPCでAI記事生成の環境を構築することが現実的になりました。
なぜLlama 3があなたのPCと相性抜群なのか?
Llama 3がローカルPCでの記事生成に適している理由はいくつかあります。
- 完全無料のオープンソース: 利用に費用がかからないため、予算を気にせずAIを試したり、本格的に導入したりできます。
- 選べるモデルサイズ: Llama 3には様々なサイズのモデルがあり、PCのスペックに合わせて選べます。特に8Bモデルは、個人利用に最適なバランスを持っています。
- 活発な開発者コミュニティ: 世界中の開発者がLlama 3を使った新しいツールや効率的なチューニング方法を日々共有しています。困ったときには助けを借りられる心強い味方です。
- 「量子化」でさらに軽量に: モデルのサイズを大幅に小さくする「量子化」という技術を使えば、より少ないメモリでLlama 3を動かせるようになります。これにより、より多くのPCで利用の道が開けます。
あなたのPCを「記事生成マシン」に変える秘訣
もちろん、いきなりプロのライター並みの記事をAIに書かせるのは難しいかもしれません。しかし、ちょっとした工夫で「何とかなる」レベルの記事生成は十分に可能です。
- 少量のデータでファインチューニング: 大量の記事データは不要です。あなたが書きたい記事のテーマやスタイルに合った、質の良い記事を数十〜数百程度集めてLlama 3を学習(ファインチューニング)させれば、その分野に特化した記事生成能力が格段に向上します。
- プロンプト(指示文)の工夫: AIへの「指示の出し方」は非常に重要です。具体的で明確なプロンプトを与えることで、チューニングが完璧でなくても、驚くほど質の高い記事が生成できます。これはまるで、優秀なアシスタントに的確な指示を出すようなものです。
- 効率的な学習方法の活用: 「LoRA(Low-Rank Adaptation)」のような効率的なファインチューニング手法を使えば、少ないGPUメモリでも短時間でモデルを特定のタスクに最適化できます。
あなたの創造性が、今、AIで加速する
かつては一部の専門家や企業にしか手の届かなかったAIによる記事生成が、今やあなたのPCで実現できる時代になりました。これはまさにAI技術の「民主化」です。
とまぁそういう訳なので何とかしてみますが、ファインチューニングにどれぐらい時間がかかるのかが未知数だったりする.
ファインチューニングPythonコード
以下のPythonコードは、Llama 3モデルをロードし、提供されたテキスト記事でファインチューニング(LoRA使用)を実行し、結果を保存します。 上記の入力値は、このコードに自動的に反映されます。 このコードをPythonファイル(例: `finetune_llama.py`)として保存し、実行してください。
import os
import torch
from datasets import load_dataset
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig, TrainingArguments, Trainer
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training, TaskType
# GPUの利用可能性を確認
print("GPUが利用可能か確認中...")
if not torch.cuda.is_available():
print("GPUが見つかりません。Fine-tuningにはGPUが強く推奨されます。")
# GPUがない場合は、ここでスクリプトを終了するか、CPUモードで続行するか選択できます。
# exit("GPUがないため終了します。")
else:
print(f"GPUが利用可能です: {torch.cuda.get_device_name(0)}")
# --- 1. モデルとトークナイザーのロード ---
# Llama 3モデルのパスを指定します。Hugging Faceのモデル名(例: "meta-llama/Llama-3-8B")
# またはローカルにダウンロードしたモデルのパスを指定してください。
MODEL_NAME = "meta-llama/Llama-3-8B" # ユーザーが入力したパスがここに挿入されます
print(f"モデルとトークナイザーをロード中: {MODEL_NAME}")
# 4bit量子化設定 (GPUメモリの節約に役立ちます)
# bnb_4bit_compute_dtypeは、Ampere以降のNVIDIA GPUに推奨されるbfloat16を使用しています。
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4", # NF4 (NormalFloat4) 量子化タイプ
bnb_4bit_compute_dtype=torch.bfloat16
)
# トークナイザーをロード
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, trust_remote_code=True)
# Llama 3はデフォルトでbos_tokenを付与しないことがあるため、明示的に追加。
# また、padding_side='right'はLlamaモデルに推奨される設定です。
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"
# モデルをロードし、量子化設定を適用し、自動的にGPUにマッピングします。
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME,
quantization_config=bnb_config,
device_map="auto", # 利用可能なデバイス(GPU)に自動的にモデルを分散
trust_remote_code=True # リモートコードの実行を許可
)
print("モデルロード完了。")
# k-bit学習用にモデルを準備 (PEFTライブラリのため)
# gradient_checkpointingを有効にすることで、メモリ使用量をさらに削減できます。
model.gradient_checkpointing_enable()
model = prepare_model_for_kbit_training(model)
print("k-bit学習用にモデルを準備しました。")
# --- 2. データセットの準備 ---
# あなたのテキスト記事ファイルが格納されているディレクトリを指定します。
# 例: 'your_article_data/' の中に 'article1.txt', 'article2.txt', ... と置かれている場合
DATA_DIR = "./your_article_data/" # ユーザーが入力したパスがここに挿入されます
print(f"データセットをロード中: {DATA_DIR}")
# 'text'形式でデータセットをロードします。指定されたディレクトリ内のすべての.txtファイルを読み込みます。
# 各ファイルが1つのエントリとして扱われます。
try:
dataset = load_dataset('text', data_files={'train': os.path.join(DATA_DIR, '*.txt')})
print(f"データセットのサンプル数: {len(dataset['train'])}")
except Exception as e:
print(f"データセットのロード中にエラーが発生しました。ディレクトリとファイル形式を確認してください: {e}")
exit("データセットロード失敗。")
# データセットをトークン化する関数
# 長い記事をモデルの最大入力長に分割します。
def tokenize_function(examples):
# Llama 3の最大入力長は通常8192ですが、お使いのGPUのVRAMに合わせて調整してください。
# ここでは一般的な値として2048を設定しています。
max_length = 2048
# truncate=Trueで最大長を超えるテキストを切り捨てます。
return tokenizer(examples["text"], truncation=True, max_length=max_length)
# データセットをトークン化します。
# num_procはCPUコア数に応じて並列処理を行い、処理を高速化します。
tokenized_dataset = dataset.map(
tokenize_function,
batched=True,
num_proc=os.cpu_count(),
remove_columns=["text"] # 元のテキスト列は学習に不要になるため削除します。
)
print("データセットのトークン化が完了しました。")
# --- 3. PEFT (LoRA) の設定 ---
# LoRA (Low-Rank Adaptation) は、元のモデルの重みをフリーズし、
# 小さなアダプター層を追加して学習させることで、効率的にファインチューニングを行います。
# これにより、GPUメモリの使用量を抑えつつ、高い性能を実現できます。
lora_config = LoraConfig(
r=16, # LoRAのランク。値を大きくすると表現力が増すが、メモリ消費も増える。
lora_alpha=32, # LoRAのスケーリング係数。rの2倍程度が推奨されることが多いです。
target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], # LoRAを適用する層。Llamaモデルで一般的な層。
bias="none", # バイアスを学習しない設定。
lora_dropout=0.05, # ドロップアウト率。過学習を防ぐために設定します。
task_type=TaskType.CAUSAL_LM, # タスクタイプを因果言語モデルに設定。
)
# モデルにLoRAアダプターを追加します。
model = get_peft_model(model, lora_config)
print("モデルにLoRAアダプターを適用しました。")
model.print_trainable_parameters() # 学習可能なパラメータ数を確認します。
# --- 4. 学習の実行 ---
# 学習済みモデルを保存するディレクトリ
OUTPUT_DIR = "./llama3_finetuned_model/" # ユーザーが入力したパスがここに挿入されます
# 学習の設定
training_args = TrainingArguments(
output_dir=OUTPUT_DIR,
num_train_epochs=3, # エポック数。データセットのサイズと希望する精度に応じて調整してください。
per_device_train_batch_size=1, # GPUあたりのバッチサイズ。VRAMが少ない場合は1に設定。
gradient_accumulation_steps=4, # 勾配を蓄積するステップ数。実質的なバッチサイズは per_device_train_batch_size * gradient_accumulation_steps になります。
optim="paged_adamw_8bit", # 8bit AdamWオプティマイザを使用し、メモリ効率を向上させます。
save_steps=500, # 500ステップごとにモデルを保存します。
logging_steps=100, # 100ステップごとにログを出力します。
learning_rate=2e-4, # 学習率。
fp16=True, # 混合精度学習を有効化 (GPUが対応している場合)。VRAM削減と高速化に寄与します。
max_steps=-1, # num_train_epochsに基づいて学習します。
group_by_length=True, # 同じ長さのシーケンスをグループ化し、パディングを削減します。
lr_scheduler_type="cosine", # 学習率スケジューラーのタイプ。
warmup_ratio=0.03, # ウォームアップ比率。
report_to="none", # レポート先を指定しない (wandbなどを使用しない場合)。
)
# トレーナーの初期化
# data_collatorは、モデルの入力形式に合わせてデータを整形します。
trainer = Trainer(
model=model,
train_dataset=tokenized_dataset["train"],
args=training_args,
data_collator=lambda data: {
'input_ids': torch.stack([f['input_ids'] for f in data]),
'attention_mask': torch.stack([f['attention_mask'] for f in data]),
'labels': torch.stack([f['input_ids'] for f in data]), # 因果言語モデルでは、入力自体がラベルとなります。
},
)
# 学習の開始
print("Fine-tuningを開始します...")
trainer.train()
print("Fine-tuningが完了しました。")
# --- 5. 学習済みモデルの保存 ---
# LoRAアダプターのみを保存します。これにより、ファイルサイズが小さく、効率的に管理できます。
trainer.save_model(OUTPUT_DIR)
print(f"学習済みLoRAアダプターが '{OUTPUT_DIR}' に保存されました。")
# 保存したアダプターを使って推論を行う方法の例 (コメントアウトされています):
# このコードは、ファインチューニング後にモデルをロードして推論を行うための参考例です。
# from peft import PeftModel
#
# # 元のモデルをロード (学習時と同じ量子化設定を使用します)
# base_model = AutoModelForCausalLM.from_pretrained(
# MODEL_NAME,
# quantization_config=bnb_config,
# device_map="auto",
# trust_remote_code=True
# )
#
# # 保存したLoRAアダプターを元のモデルに結合します。
# peft_model = PeftModel.from_pretrained(base_model, OUTPUT_DIR)
#
# # 推論モードに設定します。
# peft_model.eval()
#
# # テキスト生成の例
# prompt = "ローカルPCでのLlama 3ファインチューニングの利点とは"
# inputs = tokenizer(prompt, return_tensors="pt").to("cuda") # 入力をGPUに移動
#
# with torch.no_grad(): # 勾配計算を無効化し、メモリ使用量を削減
# outputs = peft_model.generate(
# **inputs,
# max_new_tokens=200, # 生成する新しいトークンの最大数
# do_sample=True, # サンプリングによる生成を有効化
# top_p=0.9, # Nucleusサンプリングの閾値
# temperature=0.7, # 生成の多様性を制御する温度
# eos_token_id=tokenizer.eos_token_id # 終了トークンID
# )
# print("\n--- 生成されたテキスト ---")
# print(tokenizer.decode(outputs[0], skip_special_tokens=True))
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
```, ;;), )。, アウト, アシスタント, アダプター, あたり, アップ, あなた, いくつ, ウォーム, エポック, エラー, エントリ, オープン, オプティマイザ, お金, クラウドサービス, グループ, クン, ゲーミング, コード, コア, ここ, こと, コミュニティ, コメント, これ, サイズ, サンプリング, サンプル, シーケンス, スクリプト, スケーリング, スケジューラー, スタイル, ステップ, スペック, すべて, ソース, そこら, タイプ, ダウンロード, タスク, ため, チューニング, ツール, データ, データセット, テーマ, ディレクトリ, テキスト, デバイス, デフォルト, トー, トークナイザー, とき, どれ, トレーナー, ドロップ, バイアス, パス, バッチ, パディング, パラメータ, バランス, ファイル, ファイルサイズ, ファインチューニング, ファインチューニングコード, フリーズ, プロ, プロンプト, マシン, マッピング, メモリ, モード, モデル, もの, ユーザー, よう, ライター, ライブラリ, ラベル, ランク, リモート, レベル, レポート, ローカル, ロード, ログ, 一般, 一部, 上記, 不要, 世界, 世界中, 並み, 並列, 予算, 付与, 以下, 以降, 企業, 使い, 使用, 係数, 保存, 個人, 優秀, 入力, 公開, 共有, 具体, 処理, 出力, 分割, 分散, 分野, 初期, 利点, 利用, 制御, 削減, 削除, 創造, 加速, 助け, 効率, 動作, 勾配, 十分, 参考, 反映, 可能, 向上, 味方, 因果, 場合, 多様, 夢物語, 大幅, 大量, 失敗, 学習, 完了, 完全, 完璧, 実現, 実行, 実質, 寄与, 対応, 専門, 導入, 少量, 工夫, 希望, 常識, 強力, 形式, 必要, 思い, 性能, 手元, 手法, 技術, 抜群, 指定, 指示, 挿入, 推奨, 推論, 提供, 整形, 新た, 方法, 日々, 明日, 明確, 明示, 時代, 時間, 最大, 最新, 最適, 有効, 未知数, 本格, 格段, 格納, 構築, 様々, 比率, 民主, 活用, 活発, 消費, 混合, 済み, 温度, 準備, 無効, 無料, 特定, 特権, 現実, 理由, 環境, 生成, 発生, 登場, 的確, 相性, 短時間, 確認, 秘訣, 移動, 程度, 管理, 節約, 精度, 終了, 結合, 結果, 続行, 能力, 自体, 自分, 自動的, 蓄積, 表現, 言語, 計算, 記事, 設定, 許可, 調整, 費用, 軽量, 追加, 通常, 適用, 選択, 重み, 重要, 量子, 開始, 開発, 関数, 閾値, 非常, 高速, 高額, 魅力,

どんだけ演算処理しているだよ.もはやリアルな世界なのかも.
2025.06.15
おはようございます.下記のゲーム動画を見て昔のゲームと比べると進化が著しい変化なのでついていけてないですね.でも本当に凄いと思っています.
こういうゲームというのは、どうやって作るのだろうかという事が興味深いです、一応、ユニティやアンリアルエンジンで作られているという事は知っているのですが、どこをどうやってこうなるのかは分からない.今までゲーム開発とかした事がないですし、勉強しようと考えた事もないので未知な領域です.
いまはでは敵キャラなどにもAIアルゴリズム?と言えば良いのかな、そういうアルゴリズムが組み込まれているらしく、自発的に考えて動いたり攻撃したりするそうです.それを並列処理している訳だから、演算処理はかなり高くなり、ゲーム機が発熱するのは避けられないのが現状だとか.
今でも制約がある中でゲームって作られているという認識です.いかに軽く動かすことが出来るかが鍵になりそうですね.また自分には雲の上ようなエンジニアさんたちが日夜必死に働いてこういうゲームが出来ていると思うと頭下がりますね.
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
アルゴリズム, アンリアルエンジン, いま, エンジニア, キャラ, ゲーム, こと, サン, すいか, そう, それ, タチ, どこ, ユニティ, よう, 下記, 並列, 処理, 制約, 勉強, 動画, 変化, 必死, 攻撃, 日夜, 明日, 未知, 演算, 現状, 発熱, 自分, 自発, 認識, 進化, 開発, 雲の上, 領域,

強制アプリ開発します.8月半ばまでに作らないとアカウントが停止.
2025.06.12
おはようございます.強制的にアプリ開発します.8月半ばまでに作らないとアカウントが停止されるので解除条件として定義されている、既存のアプリをアップデートさせるか、新たなアプリをリリースするか.
既存のアプリは非公開にしているので自分の場合、無条件で何でも良いのでアプリをひとつリリースの選択肢しかない.
まだ一ヶ月ぐらい先なので余裕はあるものの、アイデアが出ないので今の既存のサービスをアプリ化しようと思っています.
今回は広告掲載とか出来ればしたいなと思っているのだけども審査を通過するかは未知数ですね.ちなみに今回はReact Nativeで作ろうと思っています.少しだけReactを触ったことがあるのでReactNativeは開発するに当たって学習コストがかなり低いという事もありリアクトネイティブで開発します.
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
アイデア, アカウント, アップデート, アプリ, ヶ月, コスト, こと, サービス, ひとつ, リアクトネイティブ, リリース, 今回, 余裕, 停止, 半ば, 場合, 学習, 定義, 審査, 広告, 強制, 掲載, 新た, 既存, 明日, 未知数, 条件, 無条件, 自分, 解除, 通過, 選択肢, 開発, 非公開,

何もわからない??デフォルト. null合体演算子
2025.03.30
おはようございます.??(クエスチョンマーク二つ)ってのはnull合体演算子と言います.PHP以外にもあります.三項演算子などは知っている人いると思いますが、null合体演算子は知らない人もちらほらいるかもです.
因みにいま関わっているシステムには出てきますね.自分が開発にジョインしたときに自分もnull合体演算子を使用したことはあります.
三項演算子はまぁ適度に使用しますが深い階層にはしません.昔もあまり深い階層にはしなかったと思いますがしていたら後釜に迷惑が行ったかもです、そんな感じで深い階層にするのはあまり可読性が宜しく無い気がします.
null合体演算子は三項演算子よりもわかりやすいかもです.nullだったら別の値に変えてしまう処理だと思ってください.
サンプルコードリンクを貼っときます.
https://www.php.net/manual/ja/language.operators.comparison.php#language.operators.comparison.coalesce
尚、null合体演算子は優先順位が低いそうですね.そのため下記のようなことする時はカッコで囲んであげないと正しい結果が得られないそうです.算術とかでもそうみたい.
<?php
// $name が未定義の場合、警告が発生します。
print 'Mr. ' . $name ?? 'Anonymous';
// "Mr. Anonymous" と出力
print 'Mr. ' . ($name ?? 'Anonymous');
?>
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
```, かっこ, クエスチョンマーク二つ, サンプルコードリンク, す算術, 三項演算子, 値, 優先順位, 処理, 出力, 可読性, 合体演算子, 後釜, 昔, 未定義, 正しい結果, 深い階層, 警告, 迷惑, 開発,

【#Chrome拡張機能開発】先日の休みにお名前.comのIP自動入力
2024.07.17
おはようございます.先日の休みにお名前.comのDNS設定のAレコードのIPアドレス入力欄がいちいち入力するのが、面倒くさいと感じたのでIPアドレスをコピーしたものをAレコードの最初の入力箇所にペーストするとIPアドレスを分離して自動入力してくれるChrome拡張機能を作りました.
単なる面倒くさいと自分が感じたものだけで、人が使用することはあまり考えて作った訳ではないです.
Chrome拡張機能のソースコードも結構単純なものであり開発と言えるかどうか不明です.
同じ様に面倒くさいと感じた方はご使用いただけたらと思っています😌.拡張機能はこちら.
https://chromewebstore.google.com/detail/iponamep/mkgffpkffmpfmcpdnmealfpgabaeoghd
明日へ続く.
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Aレコード, Chrome拡張機能, DNS設定, IPアドレス, IPアドレス入力欄, お名前.com, ご使用, ソースコード, 人, 休み, 入力箇所, 拡張機能, 最初, 自分, 訳, 開発,

メルカリ ハロでスキマ時間を副業。
2023.11.21
おはようございます、メルカリ ハロでスキマ時間を副業。何となくだけどスキマ時間があったりします。忙しい時は忙しいだけど、イシューを終わらしてプルリクエストして承認されるを繰り返していくとイシューの発現率よりも勝ってしまうと、スキマ時間が出来ます。
そんなスキマ時間で出来る仕事がアレば自分もメルカリ ハロで仕事をしてみたいなって思います、因みに、いまスキマ時間が出来たら勉強したり自分の開発を進めたりしています。副業は認められているので、仕事が終わってスキマ時間に仕事ができればなって思っていますが、「メルカリ ハロ」が使用できるのは今のところ都心に限るそうです。

スキマ時間で働けるので有名なものはタイミーですね、アレ使用したことがないだけど高知県でも使用出来たりするのかな?
スキマ時間に働くより、株や投資にお金を回す方が良いのかな?それともスキマ時間のお金を投資に回すという考え方も出来ますよね。悩ましい🤔
明日へ続く。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
アレ, アレば自分, イシュー, お金, スキマ時間, タイミー, ところ都心, プル, メルカリ, 仕事, 副業, 忙しい時, 投資, 株, 発現率, 考え方, 自分, 開発, 高知県,

英字配列キーボードでも日本語切り替えに苦労したくない。
2023.07.23
おはようございます、英字配列キーボードでも日本語切り替えに苦労したくない。そんな方におすすめなのがPowerToysというマイクロソフトがフリーで提供しているツールです、このツールを使用すると開発や事務作業の効率が良くなります。
『Alt +`』を押すと英字配列でも切り替えが可能ですがいちいち変換するのは面倒ですよね。なので下記のような設定をすることで自分は対応を行いました。

こんな感じにキーを設定することにより、日本語モードと英語モードの切り替えが楽になりました。ショートカットキーとキーの再マップをしているだけでこんなにも楽になるとは思わなかったです。是非、英字配列のキーボードを買った人はお試しください🗿。
PowerToysはその他にも業務の効率を図るツールがありますのでいい感じです😯👍。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
ALT, PowerToys, キー, キーボード, ショートカットキー, その他, ツール, マイクロソフト, 下記, 事務作業, 再マップ, 効率, 日本語, 日本語モード, 業務, 英字配列, 英字配列キーボード, 英語モード, 設定, 開発,

Final Fantasy XVIは待つことに決めました。
2023.05.28
おはようございます。Final Fantasy XVIは待つことに決めました。何を待つかというとFF16がSteamが発売されるまで待つことに、PS5ファイナルファンタジーの独占販売は6ヶ月だということ、その後、Xboxなどでも発売され最終的に、PCでも発売されるだろうということで待つことに。
恐らく2023年6月22日に発売されて、そこから一年半ぐらいの期間は発売されないかも知れないけど、今のゲームソフトはマルチプラットフォーム対応の開発をしているから、発売されるだろうと思っているし、吉田プロデューサーがPCでは出さないと言ってもスクエニ社長さんが開発費用の改修ためにGoサインを出すだろうと思います。
それにまだFF7Rも自分はクリアしていないので当分PS5は買わないつもりでいます、そしてプレイステーション5高いよね・・・。今のところ、余裕もないので我慢してPS5もFF16も買わないというのが自分の見解です。本当は欲しいだけどねぇ~難しい↷。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
FF16, FF7R, Final Fantasy XVI, Goサイン, PC, PS5ファイナルファンタジー, STEAM, XBox, ゲーム, スクエニ社長さん, プレイステーション5高いよ, マルチプラットフォーム対応, 余裕, 吉田プロデューサー, 当分PS5, 改修, 独占販売, 見解, 開発, 開発費用,

見様見真似で創ることの大切さ。 #見様見真似
2023.02.14
おはようございます、椅子を新調したいのですが今は無理だなって思っている中の人です。
この頃、見様見真似で創れるようになってきたなって思えます。その理由はYOUTUBEやchatGPTなどのツールを使いこなすと師(メンター)はいなくても、何とかなるところまで来ているのかなって思う反面、共同で何かを開発や製品づくりは共有することが大事なことなのかなって思います。

その共同で何かを創るまえに必要な知識や技術は、本当にインターネットの通信回線費だけ払えば、今は誰でも知識を得ることが出来るようになってきているような気がします。
これからの時代、勉強しなかったら差は大きく開くなって思ってしまいます。どんな時代も大変なのですが、これからの人はもっと大変な時代じゃないかってIllustratorでロゴ作りながら思いました。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
ChatGPT, illustrator, youtube, インターネット, ツール, まえ, メンター, ロゴ作り, 共同, 反面, 差, 師, 技術, 時代, 椅子, 知識, 製品づくり, 見様見真似, 通信回線費, 開発,

Next.jsやNuxt.js.コレやアレやでport80は使えない。
2022.10.15
おはようございます、土日は雨が降るとか降らないとか🥕。
さて、Node.jsを飛び越えRact.js、Vue.jsを飛び越えてNext.jsやNuxt.jsの事を調べてたりデモページを起動してみたりして、わかったこと。コレはアプリ開発の為の道具なんだという事を改めて認識。
オープンなWebサーバーで動くように設計されていない。ポート80番上で動くように設計されていないのだから、この理由はnode.jsのインストール仕様や動作仕様が関係しているような気がします。
Next.jsやNuxt.jsが出来た背景はHTMLコードを記入したりするのが面倒くさいからだと…w。だからこういうフレームワークが出来たんだろう。フレームワークの概念はLaravel等と概念的にはあまり変わりないので、まぁそんなにって思うけど、初学者はVue.jsを勉強してNode.jsを触った後にRact.js、Next.jsが良いと思います。因みにVue.jsのフレームワークがNuxt.jsです。
Next.jsでlocalhost:3000で表示させるのは簡単なだけど、独自ドメインで表示する方法はドキュメント以外に表示されていなかった。ググっても出てこない事もあるのだなと・・・。
ツイッターにメモとして呟いて置きましたので、そちらを参照ください。この独自ドメインを使う調査に数十分使用してしまった。この時間、とても勿体無いメンターが欲しいなって思います。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
80, html, JS, Laravel, NEXT, node, nuxt, port, Ract, vue, web, アプリ, アレ, インストール, コード, こと, コレ, サーバー, デモ, フレームワーク, ページ, ポート, 事, 仕様, 初学者, 勉強, 動作, 土日, 後, 概念, 気, 為, 理由, 背景, 記入, 設計, 認識, 起動, 道具, 開発, 関係, 雨,

Dockerは楽だなという事を今頃理解しましたよ。 #vbox #docker
2022.10.03
おはようございます、月曜日の朝はテンション低めな方も多いはず😇。
さて、今日は先週の木曜日と金曜日にふと今後のためにDockerをもう少し触ってみようと思い作業終了後触ってみました、触れて気づいた事は開発環境を作るのがとても楽だということ(気づくの遅い?🫠)。自分は昔の人間なのでvisualboxばかり触っていたのですがDockerは素晴らしい。サーバー周りが得意な人にイメージを作ってもらってそれを共有すれば皆、同じ環境下で開発が出来るので良いという事に今頃気づいた・・・。
docker run -it -d -v C:\var\www\html\:/var/www/html --privileged -p 80:80 --name こんてな命名 イメージid /sbin/init
※Visualboxでも可能ですけどね。Dockerのだとそこが楽だしマウント(フォルダ共有)もスムーズに行くので自分は良いなと感じました。
ちょっと残念だった点は自宅で作業している中、バッファローのNAS🍆に作業ファイルを入れているのですが、それとは共有出来なかった点です、対応として実PCをrobocopyしてNASと同期を取るという形にしました。これで問題はなくテスト環境下で開発ができます。尚、高級なNASではそういう問題なく上手くいくそうですよ。※NASはバックアップデータになりました。
robocopy <コピー元> <コピー先> /E /DCOPY:DAT
尚、mirのオプションにしなかったのには理由があります。コピー元のファイルが消えたり、ディレクトリが破損した場合、コピー先のファイルやディレクトリが消えて無くなるらしいので・・・。完璧なミラーリングは辞めました。
こんな感じで快適なテスト環境が作れます(上記のコマンド参考に)。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
--privileged, -p, -v, 80, D-, docker, html, ID, init, IT, name, run, sbin, var, vbox, Visualbox, www, イメージ, こと, こんてな, サーバー, スムーズ, そこ, それ, ため, テンション, パス, フォルダ, マウント, 事, 人, 人間, 今後, 今日, 今頃, 低め, 作業, 先週, 共有, 可能, 周り, 命名, 得意, 方, 昔, 月曜日, 朝, 木曜日, 理解, 環境, 皆, 終了, 自分, 行, 金曜日, 開発,

未来は不確定で予想がつかないけれどブレイクスルーは🤐
2022.09.05
こんにちは、基本情報処理の動画を垂れ流しながらコードを書いています。
さて、今日は未来の話です。未来は不確定で予想がつかないけれどブレイクスルーは必ず起きる。これはどんな分野でもそうだと感じています。今、複雑なことは人でしか出来ないけれど、いづれ複雑な組み合わせも仕事も人工知能が出来るようになると思っています。
つい最近、アートの分野で自然言語(言葉)を入力するだけで絵を描いてくれる。優秀なAI(Midjourney(ミッドジャーニー))が登場して話題になりました。これから先、AI(人工知能)の民主化は続くと思います、人々はスマホをデジタルな道具として使うように人工知能のツールもツール(道具)して使うでしょう。
徐々に仕事は人工知能に奪われていくと思います、今、その転換期の始まりに立っていると自分は感じていて数十年後には一般の人にもそう感じる日が来ると思います。
これからは、人によって起こるブレイクスルーと人工知能によって起こるブレイクスルー。この2つの相乗効果によってブレイクスルーが頻繁に起きるようになると思います。そうなった時、古代人が見ると魔法の世界が広がっているかも知れません。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
AI, Google, Midjourney, アート, コード, こと, これ, ジャーニー, スマホ, スルー, ツール, つい, デジタル, ブレイク, ミッド, ロボット, 一般, 不確定, 予想, 人, 人々, 人工, 今, 今日, 仕事, 優秀, 先, 入力, 分野, 動画, 基本, 情報処理, 数十, 日, 最近, 未来, 民主化, 登場, 知能, 組み合わせ, 絵, 自分, 自然, 複雑, 言葉, 言語, 話, 話題, 転換期, 道具, 開発,

Picture-in-Pictureっていう拡張機能が良いです😍
2022.09.03
こんにちは、収益化が出来ても収入が少なかったらやっぱ悩ましいものですね。
今日はPicture-in-Pictureっていうグーグル公式が開発したChromeの拡張(Edgeでも似たような物があります)。ピクチャー・イン・ピクチャー(拡張)はYOUTUBEの他にネットフリックス、アマゾン・プライムなどもピクチャ・イン・ピクチャに対応していてとても良いです。

映画を観ながら、ネットサーフィンは勿論のこと、プログラムコード(他のアプリ起動)もながら書くことが出来てしまいます。YOUTUBEは右クリック*2回でピクチャー・イン・ピクチャーになることは知っていましたが、この拡張を使用すると拡張のアイコン・ボタンを押すか、ALT+Pでその機能を使用することが出来ます。
今まで公式が出してきた拡張機能の中でダントツ良いですねぇ~。本当に快適です。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2, ALT, Chrome, com, edge, https, LxCw-vvmIiI, Picture-in-Picture, watch, www, youtube, アイコン, アプリ, アマゾン, いん, グーグル, クリック, コード, こと, サーフィン, ダント, ネット, ネットフリックス, ピクチャ, ピクチャー, プライム, プログラム, ボタン, もの, 中, 今日, 他, 使用, 公式, 収入, 収益, 右, 対応, 拡張, 映画, 機能, 物, 起動, 開発,

土日祝はお休みを取っているそれ以外は無償開発?
2022.08.20
おはようございます、お仕事となかなか自分がマッチしません。
今、自分の肩書はなんだろうか。名も無い開発エンジニアか?それとも単なる無職でお仕事お探し中の身、これはどちらとも言える。でも、自分としては無収入でも毎日コードを書いて、それが役に立ったり楽しんでもらえたりすると、それはそれで嬉しいことです。
少しずつだけど広告収入は上がっている事を付け加えときます。
一つのサービスを世に出しても自分の場合、まだ広告収益だけでは生活することは出来なくて金銭的には投資信託や株式投資、仮想通貨を頼らず終えないのが今の現状です。その頼みの綱も景気が悪化すればどうなるか分からない。その為にも安定した収益を得れることをしなくてはならない。
そういう理由で、転職活動しながら空いた時間はサービスの開発をしている。開発したサービスは完成すればポートフォリオに追加することが出来るので一石二鳥だと思っています。
今はクラウドワークスとかランナーズでお仕事をするのを辞めていて依頼だけ受け付けている状態です。その理由は今年、働いた収入が120万超えるかどうかぐらいの所なので、そういう関係もあって自らの進んで仕事を取りには行っていないのが現状ですね。
こんな現状だけど、土日祝はコードもあまり書くことはなく、外出したり映画観たりして休みを過ごしています。フリーランスの人で土日祝、関係なくずっと仕事をしているという方もいると思うけど、メンタル的に自分はこの方が効率が良いのでこの方法を取っています。これは人それぞれなので何方が良いかは分からないですが。
因みに土日祝の投稿は予約投稿が多いです😌。トイウコトデ、今後とも応援よろしくお願い致します🙇。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
エンジニア, お仕事, お休み, お探し, クラウド, コード, こと, これ, サービス, それ, どちら, なん, ポートフォリオ, マッチ, らん, ワークス, 一つ, 一石二鳥, 事, 今, 仮想, 収入, 収益, 名, 土日, 場合, 安定, 完成, 広告, 役, 悪化, 投資, 投資信託, 時間, 景気, 株式, 毎日, 活動, 為, 無償, 無職, 現状, 理由, 生活, 祝, 綱, 肩書, 自分, 身, 転職, 追加, 通貨, 開発,

アディアの倉庫とアイディアの具現化の二本立て。
2022.08.17
おはようございます、お盆休み終わり今日から出社の人も多いかと思います。お疲れ様です😌。
AIはオープンソース化される流れが続いていますよね。これからの時代、アイディアとITリテラシー、そして自分でコードを書ける力が有る人は個人で何かしらサービスを作りだす事ができる様になってきている様に感じます🙄。
サービスを作るのに一番、必要なのは情熱。パッション無くして個人で開発は無理です。特に一年以上開発に時間をかけるサービスを開発する場合は情熱が大事になります。これは自分が体感した事なので分かるのですが、開発規模が大規模になれば成る程「本当に使ってくれる人がいるのだろうか」という不安な気持ちになり、その気持が増していくと開発が途中で止まってしまう事さえあります。
自分は作れる力はあるのに、その事で何度も開発を辞めた経緯があります。一つのサービスを個人で開発する場合、情熱がすごく大事になると痛感、折れない心(メンタル)大事です。なので、自分で自分に「大丈夫何とかなる」と暗示をかけるのも一つの手段なのかも知れません。
自分は3つのサービスのアイディアが浮かんでいます、1つ目のサービスは前から作ろうとして頓挫してしまったサービスです。後の2つは最近思い付いたサービスです。これらをLaravelを用いて開発を行います。出来れば今年中に一つのサービスはリリースしたい🔥🔥🔥。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
AI, IT, アイディア, アディア, オープン, コード, これ, サービス, ソース, パッション, メンタル, リテラシー, 一, 一つ, 不安, 事, 二本立て, 人, 今日, 体感, 何度, 倉庫, 個人, 具現, 出社, 力, 場合, 大事, 大規模, 心, 必要, 情熱, 時代, 時間, 本当, 気持, 気持ち, 痛感, 盆休み, 経緯, 自分, 規模, 途中, 開発,

先日からNASを導入しました🍆。良かったことしかない。
2022.08.15
こんにちは。音楽を聞きながらブログを書いています。
先日、NASを導入しました。これによって自宅で作業していた事を外出先でも出来るようになりました。まだ外出先から本当に作業できるかはわからないけど、ファイルのダウンロードしたりすることは出来るのでそれだけでも満足です。
自分の使い道としては共有フォルダ(NAS)にソースコードを入れて作業しています。共有フォルダはパスコードでロックしています、ゲストは入れないような感じにしています。その中にソースコードを入れてVScodeで開発作業をしているって感じですね。
今回のNASの導入はとっても良かったと思います。どこからでも使用できるのは快適です。本当はもっと良いNASを導入すれば良かったのですが、今のところこれが精一杯かな。いま収入もないのであまり出費は良くないなって。
そういう事もあってもなくてもですが…。安定した収入を得るため転職活動やフリーランスエンジニアで自分にあった案件があれば応募していきます。それと並行して開発も進めていくつもりです、ちょっとしたツールから半年以上かかりそうなWEBサービス開発までトライして行こうと。まぁ前と同じですね。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
NAS, VScode, いま, ゲスト, コード, こと, これ, スエ, ソース, それだけ, ダウンロード, ため, どこ, ところ, パスコード, ファイル, フォルダ, フリーラン, ブログ, ロック, 中, 事, 今, 今回, 作業, 使い道, 使用, 先日, 共有, 出費, 収入, 外出, 安定, 導入, 快適, 感じ, 本当, 活動, 精一杯, 自分, 自宅, 転職, 開発, 音楽,

ブログを書いていなかったので、今頃、日誌を書きます。
2022.08.11
※この記事は2022/08/12に書いた記事ですが投稿日は昨日の日付になっています。
こんにちは、昨日ブログを書いていなかったので埋め合わせの記事を今、書いています。
昨日はよさこい祭りの最終日でしたね。その頃、自分はLaravelで開発をしていました。昼からは体調不良だったので、仮眠を取ってたりして何とか夕方頃から復活して、続きのコードを書いたりしていました。全然、今日までブログを書いていたつもりになっていていました。
まだまだ暑い日が続きますが、熱中症やコロナには気をつけてお過ごしください。
あとこの頃、TikTokとか言うもののアカウントを作りました、一応開設して動画を投稿したりしています。YOUTUBEのショートに上げた内容を今後、TikTokにもUPするつもりでいます。あと、YOUTUBEも実名アカウントも併用しつつ今まで使っていたアカウントもたまに使用しながら活動していきます。
トイウコトデ、近況報告でした🙇。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
08, 12, 2022, Laravel, TikTok, UP, youtube, アカウント, コード, コロナ, ショート, たま, つもり, ド, ブログ, よさこい祭り, 不良, 今, 今後, 今日, 今頃, 仮眠, 体調, 併用, 使用, 内容, 動画, 夕方, 実名, 復活, 投稿, 日, 日付, 日誌, 昨日, 昼, 最終日, 気, 活動, 熱中症, 自分, 記事, 開発, 開設, 頃,

簡単で難しい事、いや難しい事なのかもな。
2022.08.01
おはよう、8月です。収益化は難しいけれどもアクセス数は意外にもある中の人です。
さて最初にTシャツ作りが頓挫した話から書きます。何故(・・?、毎日Tシャツ作りをすると言いながら途中で辞めたのかを話します。理由はデザインに割く時間よりもコードを書く時間や就職活動などを優先しているからです。なので中々、デザインにまで手が回らない。もう一つはスランプ気味なので、手抜きなデザインしか出来ないのが現状です。だからTシャツづくりは頓挫しています。
いま、一番力を入れているのはWEB開発の方です、人にも公開できるし自分にも結果が帰ってくるので、そちらの方を優先しています。Tシャツは売れないけどWEB開発はトントンになる確率がTシャツよりあるので、そちらを優先しています。そういう理由からなんですね。
そしてWEB開発はいろいろとアイディアがあってそれを自分の手を動かしてコードを書いて結果が見えないものは改善したり削除したりして、良いものに作り変える事がデザインよりも自分は得意な感じです。そして何よりデータが取れるので改善しやすいのです。
まとめ、収益化はまだまだ道半ばですが頑張ります。尚、就職先が決まってもアクセス数のあるWEBサービスは停止する事はないと思います。人気の無いサービスは廃止しますけどね…😌。
追伸:Tシャツサイトはアクセス解析が未だに機能しないのは困りもの。いいねが付かなくてもどんな物に興味があるのか分れば求めているものは作りやすいですけどね。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
8, web, アイディア, アクセス, いま, いろいろ, コード, シャツ, スランプ, そちら, それ, デザイン, もう一つ, もの, 一, 中, 中々, 事, 人, 優先, 公開, 削除, 収益, 就職, 手, 手抜き, 改善, 方, 時間, 最初, 毎日, 活動, 現状, 理由, 確率, 簡単, 結果, 自分, 話, 途中, 開発, 頓挫,

自分用に短縮URLを作りました。自分以外短縮URLは登録できません。
2022.07.29
こんばんは、サービスの収益化はなかなかうまく行かない。
さて、今日は数分で開発した自分用の短縮URLです。外出先やスマホで長々とURLを直打ちするのも面倒です、ググるのもめんどくさい。そういう時のためにこういう物を作ったわけです。
https://zip358.com/ | http://t2t.jp/z |
https://yahoo.co.jp | http://t2t.jp/y |
https://google.co.jp | http://t2t.jp/g |
https://www.youtube.com | http://t2t.jp/yt |
https://www.amazon.co.jp/ | http://t2t.jp/a |
https://www.rakuten.co.jp/ | http://t2t.jp/r |
https://newspicks.com/ | http://t2t.jp/n |
https://www.tohotheater.jp/ | http://t2t.jp/t |
考え方はこんな感じ短縮URLを叩く(入力すると)、ルート場所で処理を行います。そしてあらかじめ登録してあるURLをデータベースのテーブルから参照し、URLの対応表の中にあればダイレクト転送処理を行うという形です。尚、こういうサービスを行なっている。サイトは結構あります、一番老舗はbitly.comです。
因みに短縮URLを登録する画面もあるのですが、そちらのURLはシークレットです。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2, 358, ahttps, Amazon, co, com, comhttp, ghttps, Google, ht, http, https, jp, jphttp, newspicks, nhttps, rakuten, rhttps, tohotheater, url, www, Yahoo, yhttps, youtube, ythttps, zhttps, zip, サービス, スマホ, ため, わけ, 今日, 収益, 外出, 数分, 時, 物, 登録, 直打ち, 短縮, 自分, 開発, 面倒,

Chrome拡張の作り方という本は読む人を選ぶ本かも?
2022.07.27
おはようございます。今日は途轍(とてつ)もなく眠いですが、早朝ウォーキングしてきました😂。
さて、Chrome拡張の作り方という本のコードと解説をささっと流し読みしたので、感想を少しだけ書いていきます。まず、この本(電子書籍)はProが書いた本ではなく、書くことに関してはおそらく素人が書いた本だと思います(今では誰もが本を出版出来る時代ですから)。
ですが、ある一定の知識とプログラミング言語の知識がある人が読むと勘所を抑えていて良質な本だと思います、レビューではリンク先がないなどの意見もあるのですがそういうのは自分は気にしないし、Chrome拡張開発の勘所とManifest V3対応版にいち早く対応した本として良いなと感じました。
ググってもManifest V2対応のコードばかり出てくるので最新のManifest V3対応のサンプルコードが無いのでとても助かります。英語が分かる人ならChrome拡張開発の公式ドキュメントを読めば理解できると思うのですが、自分は英語が読めないに等しいのでとてもChrome拡張の作り方という本は役立ちました。
尚、自分が開発しているChrome拡張は来週にはリリース出来るかと思います、審査が通らなければ少し遅くなるかもですけどね。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2, 3, Chrome, Manifest, Pro, ウォーキング, コード, こと, サンプル, とき, とてつ, プログラミング, リンク, レビュー, 一定, 人, 今, 今日, 作り方, 公式, 出版, 勘所, 対応, 少し, 意見, 感想, 拡張, 早朝, 時代, 書籍, 最新, 本, 気, 知識, 素人, 自分, 良質, 英語, 解説, 言語, 誰, 途轍, 開発, 電子,