投稿

ラベル(生成AI)が付いた投稿を表示しています

SimpleLoggerをSPMに公開しました — コツコツ、ここからはじまる

SimpleLoggerをSPMに公開しました — コツコツ、ここからはじまる 勢いで作った小さなライブラリを、ついに Swift Package Manager (SPM) に公開しました。 名前は「 SimpleLogger 」。 その名の通り、ただログを出すだけの、とてもシンプルなロガーです。 なんで作ったのか 開発中、 print() でログを出すことが多いんですが、 「もう少しだけ使いやすく、ちょっと整った形で出したい」 そんな軽い気持ちで書き始めたのがきっかけです。 機能的にはとても単純。 ログレベルを分けたり、日付を出したり。 どれも“便利”と呼ぶにはまだまだなレベルですが、 「自分がよく使う形」に整えるのは意外と楽しい。 SPMに登録してみた 「せっかくだし公開してみよう」と思い、勢いでSPM対応にしました。 手順自体は簡単なんですが、 実際に「パッケージ名で検索して出てくる」のは、なんだか少し嬉しい瞬間ですね。 これから 正直、今のSimpleLoggerは 本当にシンプル です。 でも、こういう“ちょっとした自作ツール”が積み重なっていくと、 自分専用の開発環境がどんどん育っていく気がしています。 これが、コツコツ始める第一歩。 時間をかけて少しずつ、使える形に育てていきます。 📦 SimpleLogger on GitHub 👉 https://github.com/kixking/SimpleLogger ※AIに書いてもらいました。

Google Pixel紹介プログラム

  Pixel紹介プログラムで友だちと一緒にお得に!10%割引キャンペーン Google Pixel を購入するなら、今がチャンス! Google が実施している Pixel紹介プログラム を使えば、あなたも友だちもお得にPixelを手に入れられます。 Pixel紹介プログラムとは? Pixel紹介プログラムは、既にPixelを持っている人が紹介コードを友だちに伝えることで、 紹介された友だちは10%割引でPixelを購入 できる特典がもらえるキャンペーンです。 さらに、紹介した側も後日 Google ストアで使えるクレジットをゲットできます。 つまり、 お互いにメリットがあるWin-Winなキャンペーン なんです。 私の紹介コード(先着順) 👇以下の紹介コードのいずれかを購入画面で入力すると、あなたも10%オフでPixelを購入できます。 ※ お一人さま1コード限り で有効です。すでに使用済みのコードは利用できません。 REF-VJW48WWY8XVGN4FYLLCEYYQ REF-RO582HST4OW0MIXE04A6867 REF-5JP468T53JGW3TCWIQ6ET35 REF-3KICWALMM2CEKFBRCTYRS5Q REF-UCQAVRRPC1A1GRVI7MF8M8U REF-SF91P74N7SPRGWRFBGMA2OR REF-SK31IMQ8245Y32RJDGW1BJ6 REF-EV5PPVWG3BTZ5XWN0QP1165 REF-83ML3ERHXS8TWYGEQHXCCTI REF-J1L5TD2XBV5RTGTAA7BSQ1P 有効なコードがなくなる前にお早めにご利用ください! 利用方法はかんたん Google ストアにアクセス 欲しい Pixel をカートに追加 購入手続きの途中で「紹介コードを入力」の欄に、上記のいずれかのコードを入力 自動で10%割引が適用されます 注意点 紹介コードには有効期限があります コードは 先着順 で使用され、使用済みのコードは無効となります。 在庫状況によってはキャンペーンが早期終了する可能性があります。 まとめ Pixelはカメラ性能やGoogle独自のAI機能が魅力的なスマートフォンです。 ...

GinとGolangでPOST API

GinとGolangでPOST API 本記事では、GolangのWebフレームワークGinを用いて、HTTP POST APIを構築する方法を解説します。サンプルAPIの実装を通して、API開発の基礎を学びましょう。 はじめに API(Application Programming Interface)は、異なるソフトウェア同士が連携するためのインターフェースです。HTTP POST APIは、データをサーバーに送信し、処理を実行するための一般的なAPI形式です。Ginは、Golangで高速なWebアプリケーションやAPIを構築するための軽量なフレームワークです。シンプルなAPI開発に適しており、学習コストも低いのが特徴です。 GolangでHTTP POST APIを構築する準備 まず、Golangの開発環境を構築します。Golangの公式サイトから最新版をダウンロードし、インストールしてください。次に、Ginフレームワークをインストールします。ターミナルで以下のコマンドを実行します。 go get -u github.com/gin-gonic/gin これで、Ginを用いたAPI開発の準備が整いました。プロジェクトのディレクトリを作成し、適切なGoモジュールを設定することを推奨します。 HTTP POSTリクエストの受信と処理 Ginフレームワークを使用して、HTTP POSTリクエストを受信するためのルーティングを設定します。以下のコードは、 /api/data エンドポイントでPOSTリクエストを受信し、処理を行う例です。 package main import ( "github.com/gin-gonic/gin...

Swift最強プロンプト術

Swift最強プロンプト術 Swift開発を効率化するためのコード自動生成テクニックと、厳選したプロンプトパターン3選を紹介します。 はじめに SwiftはAppleプラットフォームでのアプリ開発に広く使用されている言語です。しかし、繰り返しのコーディングや設計パターンの実装は開発効率を下げる原因となります。本記事では、Swiftにおけるコード自動生成の技術と、最強の効率化を可能にするプロンプトパターン3選を紹介します。 Swiftにおけるコード自動生成の重要性 コード自動生成は、開発の一貫性を保ちながら、時間と労力を大幅に削減する手段です。特にSwiftでは、構造化されたコードを書く必要があり、テンプレート化・自動化の恩恵が大きくなります。この章では自動生成の意義と現在使われている手法の概要を説明します。 コード自動生成を活用するメリット 開発スピードの向上 ヒューマンエラーの削減 チーム間でのコーディングスタイル統一 これらのメリットを最大限に活かすには、適切なプロンプト設計が鍵となります。 プロンプトパターン1:基本構文生成 最初のパターンは「構造化された基本的なSwiftコードの自動生成」です。例えば、モデル定義やプロトコル準拠のテンプレートなど。以下のようなプロンプト例を紹介します: 「SwiftでCodable準拠の構造体を定義してください。プロパティは名前(String)、年齢(Int)、メール(String)です。」 このようなプロンプトで、迅速に正確な雛形コードを生成可能です。 プロンプトパターン2:機能特化型コード生成 このパターンでは、UIコンポーネントやAPI通信など、特定の機能に特化したコードの生成を目指します。例: 「SwiftUI...

【生成AI】LangChain×Ollamaでgemma3:27b活用

ローカル最強!LangChain×Ollamaでgemma3:27b活用 1. 導入 生成AIアプリ開発は、クラウド環境が主流でしたが、近年、ローカル環境での開発が注目を集めています。ローカル環境で開発するメリットは、プライバシーの保護、オフラインでの動作、そしてコスト削減などが挙げられます。特に、高性能なローカルPCと適切なツールを組み合わせることで、クラウド環境と同等のパフォーマンスを実現することも可能です。この記事では、高性能GPU RTX-3090を搭載したローカルPCで、LangChainとOllamaを用いてgemma3:27bモデルを活用した生成AIアプリ開発について解説します。 2. OllamaとRTX-3090のセットアップ Ollamaは、ローカルで大規模言語モデルを実行するためのツールです。RTX-3090のような高性能GPUを活用することで、高速な推論が可能になります。Ollamaのインストールは非常に簡単です。公式ドキュメントに従って、お使いのOSに合わせた手順でインストールしてください。インストール後、GPUが正しく認識されているか確認しましょう。確認方法は、OllamaのコマンドラインツールでGPU情報を表示することで確認できます。RTX-3090が認識されていれば、gemma3:27bのような大規模モデルの実行準備は完了です。 3. gemma3:27bの実行 Ollama上でgemma3:27bモデルを実行するには、以下のコマンドを実行します。 ollama run gemma3:27b 。初回実行時には、モデルのダウンロードが行われます。ダウンロード完了後、Ollamaの対話モードが起動し、gemma3:27bモデルと会話できるようになります。簡単な質問を投げかけて、正常に動作しているか確認しましょう。例えば、「今日の天気は?」と質問すると、gemma3:27bモデルが回答を生成します。GPUが正常に認識されていれば、高速な応答が期待できます。 4. LangChainによるアプリ開発 LangChainは、大規模言...

【iOS】UIStackViewでマージンを設定する方法

UIStackViewでマージンを設定する方法 UIStackViewは、iOSアプリ開発でUI要素を効率的に配置するための強力なツールです。しかし、デフォルトでは要素間のスペースやStackView自体の外側のマージンを設定するのに少し工夫が必要です。この記事では、UIStackViewでマージンを設定するさまざまな方法を紹介します。 1. layoutMarginsプロパティを使用する UIStackViewの layoutMargins プロパティを使用すると、StackView自体の外側にマージンを設定できます。これにより、StackViewを親ビューから一定の間隔で配置できます。 コード例 let stackView = UIStackView() stackView.layoutMargins = UIEdgeInsets(top: 10, left: 20, bottom: 10, right: 20) stackView.isLayoutMarginsRelativeArrangement = true isLayoutMarginsRelativeArrangement を true に設定することで、 layoutMargins がStackViewの配置に影響を与えるようになります。 2. spacingプロパティを使用する spacing プロパティを使用すると、UIStackView内の要素間のスペースを設定できます。これにより、要素間に均等なスペースを設けることができます。 コード例 let stackView = UIStackView() stackView.spacing = 10 上記の例では、StackView内の要素間に10ポイントのスペースが設定されます。 3. ダミービューを使用する UIStackViewの最初または最後にダミーのUIViewを追加することで、擬似的にマージンを設定できます。この方法は、より細かいマージン制御が必要な場合に便利です。 コード例 let stac...

【AI】ブロック崩し 作ってもらった

【生成AI】「一生ヘタレプログラマ」ブログの感想を聞いてみた

「一生ヘタレプログラマ」ブログの感想 「 一生ヘタレプログラマ 」は、技術的な話題や日記、雜記を中心に描いたブログです。 最新の記事では、AIを活用した小説や、大規模言語モデル (LLM)のローカル環境での動作に関する技術的な取り組みが紹介されています。 特に、 Ollama を使用してGemma3:27Bを動かす試みや、LLaMA-Factoryを使ったファインチューニングの方法など、最新の技術トピックに突っ込んでいることが伝わってきます。 また、SEO対策やHTMLのレイアウトに関する考察もあり、広い技術的関心を持っていることが伝わってくるコンテンツです。

【iOS】UILabel等でヒラギノフォント表示問題:文字が切れる原因と対策【sizeToFit()対策も】

iOS開発でヒラギノフォントを指定した場合、 UILabel や UIButton で文字が表示される際に、一部の文字が切れてしまう問題は、多くの開発者が遭遇する悩ましい問題です。特に sizeToFit() メソッドを使用すると、その傾向が顕著になります。 本記事では、この問題の原因を深堀りし、いくつかの対策方法を紹介します。 なぜ文字が切れてしまうのか? ヒラギノフォントは、他のフォントと比較して、文字の高さやベースラインの位置が微妙に異なる場合があります。iOSのレイアウトエンジンが、この差異を適切に処理できない場合に、文字が途中で切れてしまう現象が発生します。 特に、以下の文字で発生しやすいです。 ①gjpqyÄÖÜßĀĂĄąĆĈĊČĎŅ これらの文字は、文字の形状が複雑であったり、上付き文字や下付き文字を含むため、レイアウトエンジンが正しく処理できない場合があります。 対策方法 いくつかの対策方法を試してみましょう。 1. AttributedStringの調整 (ベースラインオフセット) 他のサイトで紹介されているように、 NSAttributedString の baselineOffset を調整する方法は有効な手段の一つです。 let attributedString = NSAttributedString(string: "問題のある文字列", attributes: [ .font: UIFont(name: "ヒラギノ角ゴシック W3", size: 16)!, .baselineOffset: 1.0 // 少し上にずらす ]) label.attributedText = attributedString しかし、この方法だけでは、ÄÖÜの「..」部分が切れてしまうケースがあります。 2. clipsToBounds = false そこで、意外と盲点になりがちなのが、 clipsToBounds プロパティです。 label.clipsToBounds = false この設定により、文字が切れる問題を回避できる場合があります。ただし、画面の上下にViewがピッタリと配置されている場合は、文字がはみ出てしまう可能性があるため、注意が必要です。 ...

【Swift】テストできない、純粋関数を意識しようよ。

はじめに SwiftUIでアプリを開発していると、 View の中にロジックを書いてしまい、いざ単体テストをしようとするとテストできない……そんな経験はありませんか? 「実装者がどこまで想定して動作確認をおこなったのか分からない」「テストがしにくく、バグが潜んでいても気付きにくい」など、テストのしづらさは品質の低下につながります。 そこで重要なのが 純粋関数(Pure Function) です。本記事では、純粋関数を活用して、テストしやすいコードを設計する方法について解説します。 SwiftUIのViewの中にロジックを書くと何が問題? SwiftUIでは、 View の中にロジックを書くと次のような問題が発生します。 1. テストが困難になる View はUIの描画を行うためのものであり、状態を持つことが多いため、 純粋に入力→出力の関係に基づいたテストができなくなる ことが多いです。 struct ContentView: View { @State private var count: Int = 0 var body: some View { VStack { Text("\(count)") Button("Increment") { count += 1 } } } } この例では、ボタンを押すたびに count が増えますが、 このロジックを単体テストしようとすると、UIのイベントをシミュレートする必要があります。 2. 動作確認の範囲が曖昧になる 実装者がどの条件を想定して動作確認を行ったのか分からないため、 バグが潜んでいても気付きにくくなります。 純粋関数を活用しよう 純粋関数とは、 副作用がない(外部の状態を変更しない) 同じ入力に対して常に同じ出力を返す という特性を持つ関数のことです。 純粋関数を用意すると、テストがしやすくなります。 例:ビジネスロジックを分離する 先ほどの count の更新を純粋関数に切り出してみましょう。 func increment(_ value: Int) ...

【LLM】生成AIのシステムプロンプトのサンプル

 システムプロンプトのサンプル 日本語指定

【AI小説】10年前の話 とある村に立ち寄った時に、老人から教わった家庭の魔法

 リュウは、埃っぽい古書を読み漁りながら、記憶を辿っていた。10年前、まだ幼かった彼は、師匠であるフリンの指示で、魔力調査のため、人里離れた小さな村を訪れていた。フリンは、稀に現れる特殊な魔力を持つ人間を探しており、リュウはその手伝いを任されていた。 村はずれの、苔むした石畳の道を歩いていると、古びた家屋の前に、腰の曲がった老人が座っているのを見つけた。老人は、庭で野菜を育てており、リュウは思わず声をかけた。 「こんにちは、おじいさん。何か手伝うことはありますか?」 老人は、顔を上げ、穏やかな笑顔でリュウを迎えた。 「おや、若い魔法使いじゃな。わしは、この村の庭師のゲンゾうじゃ。手伝うことは特にないが、もしよければ、わしの庭で少し休憩していきなさい」 リュウは、ゲンゾウの誘いに応じ、庭で休憩することにした。ゲンゾウは、リュウに庭で育てている野菜を振る舞い、畑仕事の合間に、様々な話をしてくれた。 「わしは、若い頃から、この畑で野菜を育ててきた。魔法の力は使えないが、土と対話するように育てれば、どんな野菜でも美味しく育つものじゃ」 リュウは、ゲンゾウの言葉に興味を持ち、畑仕事を手伝うことにした。ゲンゾウは、リュウに、野菜の育て方だけでなく、畑仕事に使う簡単な魔法を教えてくれた。 「これは、野菜の成長を促進する魔法じゃ。土に魔力を込めれば、野菜はぐんぐん育つ。ただし、魔力を込めすぎると、野菜は腐ってしまうから、注意が必要じゃ」 リュウは、ゲンゾウから教わった魔法を使い、野菜の成長を促進した。魔法の力で、野菜はみるみるうちに大きくなり、リュウは驚きを隠せなかった。 「すごい!本当に成長が早くなってる!」 ゲンゾウは、リュウの興奮した様子を見て、微笑んだ。 「魔法は、あくまで道具じゃ。大切なのは、土と対話し、野菜を慈しむ心じゃ」 ゲンゾウは、リュウに、他にも様々な魔法を教えてくれた。料理の味を良くする魔法、洗濯物を綺麗にする魔法、壊れた道具を一時的に修復する魔法など、どれも実用的な魔法ばかりだった。 「これらの魔法は、わしが若い頃に、旅先で出会った魔法使いから教わったものじゃ。生活を豊かにする魔法は、戦闘魔法ほど派手ではないが、人々の暮らしを支える大切な魔法じゃ」 リュウは、ゲンゾウから教わった魔法を、フリンに報告した。フリンは、リュウの報告に興味を示さなかったが、リ...

【LLM】Ollamaをつかってgemma3:27bを動かしてみた。

Gemma 3 動作環境と利用状況 Gemma 3 を動作させるための環境と、実際に利用してみた状況についてまとめました。 動作環境 GPU: RTX-3090 OS: Ubuntu 利用条件 Gemma 3 を利用するには、 Ollama 0.6 以上をインストールする必要があります。 実行コマンド 4Bモデル: ollama run gemma3:4b 12Bモデル: ollama run gemma3:12b 27Bモデル: ollama run gemma3:27b 利用感 個人または少人数での利用であれば、十分な性能を発揮できます。 GPU使用率は90%程度まで上昇しますが、それなりに利用可能です。 多人数での利用の場合、多少の待ち時間が発生する可能性があります。 GPUメモリが不足する場合は、量子化された軽量モデル、または12Bモデルなどを利用することを推奨します。

【C#】C#でuser32.dllを使用してマウスカーソルを消す

C#でuser32.dllを使用してマウスカーソルを消すには、 P/Invoke(Platform Invocation Services)を利用してWindows APIを呼び出します。 以下の手順で、マウスカーソルを非表示にする方法を説明します。 user32.dllのインポート:user32.dllのShowCursor関数を呼び出すために、P/Invokeを使います。 ShowCursor関数の呼び出し:ShowCursor関数は、カーソルの表示状態を変更するために使います。 関数の引数にfalseを渡すことでカーソルを非表示にできます。 以下に、C#コードの例を示します。 using System; using System.Runtime.InteropServices; class Program { // user32.dllのShowCursor関数をインポート [DllImport("user32.dll")] private static extern int ShowCursor(bool bShow); static void Main(string[] args) { // カーソルを非表示にする ShowCursor(false); Console.WriteLine("Press any key to show cursor again..."); Console.ReadKey(); // カーソルを表示する ShowCursor(true); } } ちょっと頑張ってかきなおした。 C#でマウスカーソルを非表示にする方法 (P/Invoke) マウスカーソルを非表示にすることで、特定のアプリケーション(ゲーム、全画面表示のアプリケーションなど)の操作性を向上させたり、より没入感のある体験を提供したりすることができます。C#では、P/Invoke(Platfrom Invocation Services)を利用してWindows APIの ShowCursor 関数を呼び出す...