ブログ内検索

プログラミング教材開発
大阪府高槻市原地区で肥料教室を開いています
検索キーワード:「SAM」
 

土が黒くなる要因は何だ?

/** Geminiが自動生成した概要 **/
本記事は、収量が多い田の土が黒く柔らかいにもかかわらず、土壌分析で腐植量が少ないという矛盾から「土が黒くなる要因」を考察しています。土の黒さの要因として、一般的に腐植の蓄積と、還元された鉄(酸化鉄(Ⅱ))の存在が挙げられます。特に水田のような還元環境では鉄の還元が頻繁に起こるため、冒頭事例の黒い土は、腐植が少ない代わりに還元鉄が多い可能性が示唆されます。しかし、土の「ふかふか感」との食い違いから、筆者はまだ見落としている要因があるとし、さらなる検討を促しています。

 

SOY CMSとSOY ShopでHTMLモジュールの見直しを行いました

/** Geminiが自動生成した概要 **/
SOY CMSとSOY ShopでHTMLモジュールの仕様を見直し、PHPファイルでHTMLモジュールを呼び出し可能に。HTMLモジュールの出し分けや複数出力、処理後のHTML出力などが可能になり、柔軟性が向上。詳細は公式サイト(saitodev.co/soycms/)で確認ください。

 

窒素を含む有機酸のムギネ酸の続き

/** Geminiが自動生成した概要 **/
ムギネ酸は、メチオニンからニコチアナミンを経て合成される。土壌中の鉄利用率を高め、高pHやリン酸過剰な環境でも効果を発揮する可能性があり、作物の生育に貢献する。ムギネ酸単体の資材化は難しいが、その恩恵を早期に受けるための活用法が重要となる。

 

軽石の化学的風化の内の水の作用について

/** Geminiが自動生成した概要 **/
庭の軽石の表面の茶色い部分は風化によってできた粘土鉱物ではないかと考え、軽石の風化を早める方法を模索している。軽石の主成分である火山ガラスは、化学的風化(加水分解)によって水と反応し、粘土鉱物に変化する。水に浸けるだけでは時間がかかりすぎるため、より効率的な風化方法を探している。

 

火山ガラスとは何か?

/** Geminiが自動生成した概要 **/
火山ガラスは、急速に冷えたマグマからできる非晶質な物質です。黒曜石や軽石などがあり、風化すると粘土鉱物であるアロフェンに変化します。軽石は風化すると茶色い粘土になり、これはアロフェンを含んでいます。このことから、軽石を堆肥に混ぜると、アロフェンが生成され団粒構造の形成を促進し、堆肥の質向上に役立つ可能性があります。軽石の有効活用として期待されます。

 

いろんな色の結晶片岩2

/** Geminiが自動生成した概要 **/
橘本神社の向かいの川原には、緑色の結晶片岩が多く見られる。しかし、近づいてみると薄茶色の結晶片岩も存在する。これは砂岩が変成作用を受けた砂岩片岩の可能性がある。濃い茶色の部分は、鉄の酸化または緑泥石の風化が考えられる。ルーペを使ってさらに詳しく観察することで、その正体に迫ることができるだろう。

 

SOY CMSでCMSタグチェックプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSのテンプレート編集で発生する、CMSタグの閉じタグ忘れによるエラーを防止するプラグイン「CMSタグチェックプラグイン」の紹介記事です。 記事では、CMSタグの閉じタグ忘れが原因で発生するエラーとその修正方法、タグが増えることによる確認作業の煩雑さを解説し、このプラグインによってタグの記述ミスをテンプレート更新時に検知できることを説明しています。 プラグインの導入により、製作時間の短縮などのメリットがあると期待されます。

 

必須脂肪酸の観点からゴマ油を考える

/** Geminiが自動生成した概要 **/
ゴマ油は、オレイン酸と必須脂肪酸のリノール酸を多く含む一方、必須脂肪酸のα-リノレン酸が少ない点が特徴です。α-リノレン酸不足が懸念されるものの、酸化しにくく風味が長持ちするため、食材として使いやすい油といえます。ゴマ油の風味を保つ立役者は、抗酸化作用を持つゴマリグナン(セサミン、セサモリンなど)です。これらの成分のおかげで、ゴマ油は長期間保存しても味が落ちにくく、良質な食用油として重宝されています。

 

SOY CMSとSOY ShopでPHP8.2系に対応しています

/** Geminiが自動生成した概要 **/
SOY CMSとSOY Shopは近日リリース予定のPHP8.2に対応します。主な修正点は、文字列中の変数展開における `${var}` の非推奨化と、未定義プロパティへの動的アクセスに関するものです。前者は `"sample_".$hoge` のように文字列を分割、後者はプロパティを事前に定義することで対応できます。これらの修正はPHP7系でも有効です。PHP8.2対応版は公式サイトからダウンロード可能です。PHP7系をご利用の方は、そのままでも動作に問題ありません。

 

田植え後の最初の難所のジャンボタニシをどうにかできないものか

/** Geminiが自動生成した概要 **/
## ジャンボタニシ被害と対策に関する記事の要約(250字) この記事では、田植え後のジャンボタニシ被害への対策について考察しています。筆者は、ジャンボタニシが稲をよじ登り損傷を与える様子を写真で示し、その深刻さを訴えています。 対策として、水深管理や冬の耕起による個体数抑制、捕獲などの方法が挙げられています。特に、田んぼに溝を掘り、ジャンボタニシを集めて一網打尽にする方法や、大きくなったジャンボタニシは冬を越せないため、田んぼの外からの侵入を防ぐ必要性が論じられています。 さらに、ジャンボタニシの生態や、過去に食用として輸入・養殖された歴史にも触れ、効果的な対策の必要性を訴えています。

 

プログラミング教育用のノートパソコンを探せ

/** Geminiが自動生成した概要 **/
Minecraft: Pi Editionを教材にプログラミング教育をしたいが、Raspberry Piは持ち運びに不便なため、代わりのノートパソコンを探している。Ubuntuが動作する中古PCでは性能不足が懸念される。そこで注目しているのが、QualcommのSnapdragonを搭載したSamsungの格安ノートPC「Galaxy Book Go」だ。ARMアーキテクチャを採用し、Ubuntuも動作する可能性があり、Raspberry Piの自由度とChromebookの価格帯の中間をいくマシンとして期待できる。

 

SOY CMS / SOY ShopでライブラリをCDN経由にする設定を追加しました

/** Geminiが自動生成した概要 **/
SOY CMS/Shopの管理画面で利用するjQueryやBootstrapをCDN経由で読み込む設定が追加されました。これにより、管理画面で読み込むファイル数を減らし、サーバー負荷を軽減します。設定方法は、`/CMSインストールディレクトリ/common/config/user.config.php`を作成し、`define("SOYCMS_READ_LIBRARY_VIA_CDN", true);`を有効にするだけです。リンク色の変更など、一部表示に影響が出る可能性がありますが、順次修正予定です。最新のパッケージはサイト(saitodev.co/soycms/)からダウンロードできます。

 

Micro:bitで二種類のサーボモータの動作を比較してみる

/** Geminiが自動生成した概要 **/
この記事では、Micro:bitを用いて二種類のサーボモーター(360°回転と270°回転)の動作比較を行っています。どちらもGeekservo 9gサーボですが、360°サーボは角度指定で回転速度が変化し、90°を基準にそれより大きい値で反時計回り、小さい値で時計回りに回転します。一方、270°サーボは指定角度で正確に停止します。同じコードでもサーボの仕様によって動作が異なることを実証し、LEGO Ninjagoのコールのミニフィグを使って動作の様子を動画で紹介しています。

 

SOY Shopでアクセス制限プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shopのアクセス制限プラグインが開発され、標準機能として同梱されました。このプラグインは、特定のブラウザからのみアクセス可能なページを作成し、IPアドレスと紐づけた固有の鍵をクッキーで管理することで実現しています。管理画面でブラウザを登録すると鍵が生成され、クッキーに保存。SOY Shop側は鍵とIPアドレスをデータベースに格納し、有効期限を設定します。これにより、鍵の偽装や不正アクセスを防ぎ、セキュリティを高めています。このプラグインは、タブレット等で特定機能を利用する際の利便性向上に役立ちます。最新版はsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

SOY CMS / SOY ShopでファイルのアップロードをMIMEタイプで制限できる設定を追加しました

/** Geminiが自動生成した概要 **/
SOY CMS/SOY Shopで、ファイルアップロード時のMIMEタイプ制限設定が追加されました。ユーザー要望に応え、記事作成、テンプレート、elFinderからのアップロード時に、JavaScriptファイルの許可やPDFの禁止等が可能になります。従来のバージョンアップでカスタマイズが消える問題も解消。設定は、`/CMSインストールディレクトリ/common/config/upload.config.php.sample`を`upload.config.php`にリネームし、許可するMIMEタイプを`$mimetypes`配列に追加するだけです。最新パッケージはサイト(https://saitodev.co/soycms/)からダウンロード可能です。

 

ChromebookでPythonのmatplotlibを試してみた

/** Geminiが自動生成した概要 **/
ChromebookでPythonの数学ライブラリNumPyと可視化ライブラリmatplotlibの動作検証を行いました。ASUS Chromebook Detachable CM3で、Linux環境を利用し、`sudo apt install`コマンドで必要なパッケージをインストールしました。TkinterのGUI表示、及び以前作成したmatplotlibを使ったコードの実行に成功。Windows10のWSL2環境ではGUI表示ができなかった一方で、Chromebookでは問題なく動作しました。今後はデータサイエンス向けプラットフォームAnacondaのChromebookでの動作検証も検討しています。

 

SOY CMS / SOY ShopのクッキーやセッションでSameSiteの設定を行う

/** Geminiが自動生成した概要 **/
SOY CMS/SOY ShopでクッキーとセッションのSameSite属性を変更する方法について解説されています。標準ではLaxに設定されていますが、Strictに変更したり、SameSite=None; Secure=true;にすることができます。設定は /CMSインストールディレクトリ/common/config/session.config.php 内の $sessCnf["samesite"] の値を編集することで行います。例えば、Strictに変更する場合は "Strict" を設定します。この変更はSOY CMSとSOY Shop全体に反映されます。変更後のパッケージはsaitodev.co/soycms/からダウンロード可能です。

 

Android版のChromeでアクセスした時にPHPのセッションが突然切れる症状で苦戦した

/** Geminiが自動生成した概要 **/
SOY Shopのカートで、Android Chrome利用時にセッションが突然切れ、カートの中身が消える問題が発生した。原因はCSRF対策で毎回`session_regenerate_id()`を実行していたこと。モバイルネットワークは不安定なため、`session_regenerate_id()`実行でセッション消失が起こる可能性があることがPHPマニュアルに記載されていた。対処として、スマホからのアクセス時は`session_regenerate_id()`を実行しないように変更した。 関連記事「SOY CMSでSameSite cookiesの対応を追加しました」では、SameSite属性を設定することで、クロスサイトリクエストフォージェリ(CSRF)攻撃への対策を強化している。具体的には、CookieにSameSite=Lax属性を設定することで、クロスサイトでのCookie送信を制限し、セキュリティを向上させている。これにより、SOY CMSを利用するサイトのセキュリティが強化され、ユーザーの情報がより安全に保護される。

 

SOY CMSでSameSite cookiesの対応を追加しました

/** Geminiが自動生成した概要 **/
Android版ChromeでPHPセッションが突然切れる問題への対応についての記事を要約します。問題は、特定のAndroid版ChromeのバージョンでSameSite属性のないcookieがアクセス拒否されることに起因していました。解決策として、PHPで`session_set_cookie_params`関数を使用し、`SameSite=None`と`Secure`属性をcookieに設定することで、HTTPS通信時にのみcookieが送信されるようにしました。この変更により、Android版Chromeでのセッション維持が可能になりました。さらに、データベーススキーマの見直しやマイページの処理最適化を行い、表示速度の向上も実現しました。関連情報として、Webブラウザセキュリティに関する書籍の紹介や、cookie属性の詳細を解説するMDNのドキュメントへのリンクが掲載されています。

 

SQLインジェクションに対してプリペアードステートメントが有効であるかを試してみる

/** Geminiが自動生成した概要 **/
この記事では、PHPにおけるSQLインジェクション対策としてプリペアードステートメントの有効性を検証しています。まず、脆弱なコード例を示し、攻撃者がSQL文を操作して意図しないデータを取得できることを実演。次に、プリペアードステートメントを用いた修正版を紹介し、SQL文と入力データを分離することで攻撃を防ぐ仕組みを解説しています。具体的には、プレースホルダを用いてSQL文を準備し、executeメソッドでパラメータをバインドすることで、入力データがSQL文として解釈されることを防いでいます。結果、同じ攻撃を試みてもデータが取得できず、プリペアードステートメントの有効性が確認されました。関連記事として、SOY2DAOでのプリペアードステートメントの利用方法も紹介されています。

 

シイタケから抽出された二つの物質

/** Geminiが自動生成した概要 **/
シイタケ栽培後の廃培地は、栄養豊富で再利用価値が高いにも関わらず、現状では焼却処分されている。これは、廃培地のリグニン分解が不十分で、植物栽培に適さない土壌構造となるためである。また、線虫などの病害虫のリスク、有効な再利用方法の確立の遅れ、焼却施設の維持費用が廃培地処理費用に上乗せされていることなどが要因となっている。結果として、資源の有効活用が阻害され、環境負荷も増大している。シイタケの需要増加に伴い廃培地も増加するため、持続可能な農業に向けて、廃培地の再利用方法の確立が急務となっている。

 

SOY CMSで外部CSSファイルを自動でインライン化する

/** Geminiが自動生成した概要 **/
SOY CMSでWebサイトの高速化のため、外部CSSを自動インライン化・圧縮する方法を解説。`cms:module`でのCSS直接記述による修正の課題を解決すべく、`link`タグを介し、PHPモジュールが外部CSSを読み込み・圧縮した上で`<style>`タグとしてインライン出力する手法を提案しています。 これによりSOY CMS経由では圧縮・インライン化されたCSSが出力され、ブラウザとサーバー間の転送量削減とSEO(Core Web Vitals)に貢献。外部ファイルでの管理によりCSS修正が容易になり、ページごとのCSS制御も可能となる点が大きなメリットです。

 

SOY CMSのCumulative Layout Shiftプラグインにpicture要素設定を追加しました

/** Geminiが自動生成した概要 **/
SOY CMSのCore Web Vitals改善用プラグイン「Cumulative Layout Shift」にpicture要素設定が追加されました。 picture要素はレスポンシブ画像を実現するHTMLタグで、画面幅に応じて最適な画像を出力します。プラグインでは、imgタグにsize属性を自動挿入するか、pictureタグで囲うかを選択できます。ただし、既にHTMLテンプレートでpictureタグを使用している場合は正常に動作しないため注意が必要です。この機能はsaitodev.co/soycms/で提供されるパッケージに含まれています。画像のwidthが小さい場合はsize属性が自動挿入されます。

 

スペルミンとは何だろう?

/** Geminiが自動生成した概要 **/
スペルミンはポリアミンの一種で、老化抑制に関係する可能性がある物質です。摂取すると腸で分解されず血流に乗り、各器官へ運ばれます。ポリアミンは、特に高齢者で起こりやすい軽微な刺激による慢性炎症に対し、免疫細胞の過剰な活性化を抑制する働きがあります。また、糖や脂肪の代謝と蓄積を調整し、動脈硬化などを予防する効果も期待されます。ポリアミンの合成量は加齢と共に低下するため、食品からの摂取が重要になります。合成にはオルニチンというアミノ酸が関わっており、旨味成分の豊富な食品を摂取することで補給できます。免疫細胞の老化による活性化とポリアミン合成量の低下は、高齢者のウイルス感染重症化と関連付けられます。

 

SOY Shopで管理画面でSOY Shopらしさをなくす

/** Geminiが自動生成した概要 **/
SOY Shopでショップサイト以外を作成するケースが増加し、管理画面から「ショップ」の文字を削除したいというニーズに対応するため、管理画面のURLの「soyshop」部分を変更できる機能が追加されました。 設定方法は、`/CMSインストールディレクトリ/common/config/admin.uri.config.php.sample` を `.php` にリネームし、`define("SOYSHOP_ADMIN_URI", "soyshop");` の `soyshop` を任意の文字列に変更します。その後、ファイル内の指示に従って必要なディレクトリとファイルを作成し、キャッシュを削除すれば設定完了です。 この機能は最新のSOY CMSとSOY Shopのパッケージに含まれています。現状ではSOY Shopのみに対応しており、SOY CMS側は未対応です。

 

SOY CMS / Shopで別サイトのモジュールを読み込む

/** Geminiが自動生成した概要 **/
SOY CMS/Shopで、別サイトのHTMLモジュールを読み込む新機能が追加されました。サイトIDをプレフィックスとして`{siteId}.moduleName`のように指定することで、HTMLのみで構成されたモジュールを別サイトから呼び出せます。例えば、`{otherSite}.html.sample`と記述すれば、siteIdが"otherSite"のサイトにある"html.sample"モジュールが表示されます。ただし、SOY CMSとSOY Shop間でのモジュールの相互利用は不可で、データベースを参照するモジュールも使用できません。この機能は、最新版のSOY CMS/Shopパッケージで利用可能です。

 

水生植物であるイネの根腐れについて考える

/** Geminiが自動生成した概要 **/
イネの根腐れは、長雨による酸素不足ではなく、硫化水素の発生が原因である可能性が高い。硫化水素は、水田の嫌気環境下で、硫酸塩系肥料(硫安、キーゼライト、石膏、家畜糞堆肥など)が土壌微生物によって分解される際に発生する。生物は硫黄を再利用する進化を遂げているため、土壌に硫黄化合物が過剰に存在するのは不自然であり、肥料由来と考えられる。硫化水素は鉄と反応しやすく、イネの光合成や酸素運搬に必要な鉄の吸収を阻害する。水田は水漏れしにくいため、過去の肥料成分が蓄積しやすく、硫黄を抜く有効な手段がないため、田植え前の土壌管理が重要となる。ただし、長雨による日照不足や水位上昇も根への酸素供給を阻害する要因となりうる。

 

SOY ShopでAmazon Pay ワンタイムペイメント支払いモジュールを作成しました

/** Geminiが自動生成した概要 **/
Amazon Pay Widget Code Generatorは、Amazon Payボタンをウェブサイトに簡単に統合するためのツールです。ボタンの種類(ログイン、支払い)、サイズ、カラー、言語などのオプションを選択することで、必要なHTMLとJavaScriptコードを生成します。生成されたコードには、`createCheckoutSession`関数も含まれており、決済セッションの作成とAmazon Payウィジェットの表示を処理します。これにより、開発者は複雑な実装を気にすることなく、Amazon Payを迅速に導入できます。 ツールは様々なカスタマイズオプションを提供し、シームレスな顧客体験を実現するボタン作成を支援します。

 

いもち病の抵抗性を色素の観点から見てみるの続きでメチル化を見る

/** Geminiが自動生成した概要 **/
ヨトウガ対策には、植物ホルモンに着目したアプローチが有効です。ヨトウガはエチレンによって誘引されるため、エチレン合成を阻害するアミノエトキシビニルグリシン(AVG)が有効です。しかし、エチレンは植物の成長やストレス応答にも関与するため、安易な阻害は生育に悪影響を及ぼす可能性があります。一方、ジャスモン酸は食害ストレスへの防御機構を活性化させるため、メチルジャスモン酸(MeJA)処理による抵抗性向上も期待できます。ただし、高濃度では生育阻害を起こす可能性があるため、適切な濃度での使用が重要です。これらのホルモンの相互作用を理解し、適切に制御することで、ヨトウガの被害を軽減し、健全な植物生育を実現できます。

 

幻の黄色いアサガオに迫るためにキンギョソウを見る

/** Geminiが自動生成した概要 **/
アジサイの花の色はアントシアニジンという色素と補助色素、そしてアルミニウムイオンの有無によって決まる。アントシアニジン自体は赤色だが、補助色素が結合することで青色に変化する。さらに、土壌にアルミニウムイオンが豊富に存在すると、アジサイはアルミニウムイオンを吸収し、アントシアニジンと結合して青色の発色を強める。つまり、アジサイの青色は、アントシアニジン、補助色素、アルミニウムイオンの3つの要素が揃うことで現れる。逆に、アルミニウムイオンが少ない土壌では、アジサイはピンク色になる。

 

【SEO対策】HTMLの圧縮

/** Geminiが自動生成した概要 **/
HTMLの圧縮は、Webページの表示速度向上とデータ転送量削減に効果的なSEO対策です。HTMLソースコードには、可読性向上のために改行やタブが含まれていますが、これらは表示には不要なため、転送前に削除することでデータ量を減らせます。SOY CMSでは、HTML圧縮プラグインを利用することで、テンプレート編集時の可読性を維持しつつ、転送時には自動的にHTMLを圧縮できます。このプラグインは、HTMLキャッシュプラグインや静的化プラグインと併用することで、圧縮処理の負荷を軽減し、更なる高速化を実現します。HTML圧縮プラグインを含むパッケージはsaitodev.co/soycms/からダウンロード可能です。

 

免疫の向上にオリゴ糖や発酵食品が重要な訳を探る

/** Geminiが自動生成した概要 **/
記事は、ウイルス感染における糖鎖の役割と免疫の関係について解説しています。ウイルスは細胞表面の糖鎖を認識して感染しますが、糖鎖は免疫システムにも関与しています。特に、糖鎖末端のシアル酸は感染や免疫回避に影響を与えます。 ウェルシュ菌などの細菌はシアリダーゼという酵素でシアル酸を切り離し、毒素の受容体を露出させたり、遊離シアル酸を菌表面に纏うことで免疫を回避します。そのため、腸内細菌叢においてウェルシュ菌を優勢にさせないことが重要であり、オリゴ糖の摂取が有効です。 麹菌が生成する希少糖コージビオースは腸内細菌叢を改善する効果があり、発酵食品の摂取が免疫向上に繋がると考えられます。ただし、原料の大豆の品質や微量栄養素の含有量も重要であるため、発酵食品であれば何でも良いというわけではありません。

 

【SEO対策】CSSの読み込み方の変更で高速化

/** Geminiが自動生成した概要 **/
CSSの読み込み方を変えることでSEO対策とページ表示速度の高速化を実現する方法を紹介。従来headタグ内に記述していた外部CSSをbody閉じタグ後へ移動することでレンダリングブロックを回避し、表示速度を向上させる。さらに、HTTP/2環境下ではファイル数削減が有効となるため、CSSをHTML内に直接記述する方法も提示。ただし、保守性向上のためにCMSのモジュール機能を活用し、HTML末尾にCSSを挿入する手法を推奨。この際、モジュールファイルの読み込みによる速度低下を防ぐため、最終HTMLのキャッシュ機構を併用することが重要となる。

 

SOY InquiryでParsley.jsを利用する

/** Geminiが自動生成した概要 **/
SOY InquiryにParsley.jsを組み込むと、見栄えの良い入力内容チェックが利用できます。フォームテンプレートにParsley.jsのスクリプトを挿入し、SOY Inquiryのフォーム設定画面で各項目にdata-parsely-triggerとrequired属性を設定します。さらに、data-parsely-required-message属性を追加すると、エラーメッセージをカスタマイズできます。これにより、各項目に合わせたエラーメッセージが表示され、ユーザーフレンドリーなフォームが作成できます。

 

京葱SAMURAI株式会社さんで秀品率の向上の為に意識すべきことの話をしました

/** Geminiが自動生成した概要 **/
京葱SAMURAI株式会社の勉強会で、秀品率向上のための講義を行いました。近年、菌根菌研究の進展により、殺菌剤の使用が虫の食害を増やし、結果的に病気の感染リスクを高める可能性が示唆されています。講義では、殺菌剤を極力使わない方法や、使用せざるを得ない場合の作物ケア、ヨトウ虫対策における殺菌剤の影響について解説しました。 具体的には、殺菌剤が土壌の菌類生態系を乱し、植物の抵抗力を弱めることで害虫の増加につながる可能性、そして害虫による傷口から病原菌が侵入しやすくなる悪循環について説明しました。ヨトウ虫対策においても、殺菌剤の影響に着目することで新たな解決策が見つかる可能性を示唆しました。この講義が、生産者の秀品率向上に貢献することを願っています。

 

酵母の細胞壁でβ-グルカンの他に

/** Geminiが自動生成した概要 **/
酵母の細胞壁は、鉄筋構造のβ-グルカンに加えてキチンも含まれる。糸状菌のキチンとは異なり、酵母のキチン量は少なく、出芽痕周辺や隔壁形成に関与している。また、キチンは特定の作物に悪影響を与える可能性がある。この点で、酵母エキスはキチン含有量が低いことが利点となる。さらに、キチンの分解が活発な土壌では、酵母は影響を受けにくいと考えられ、土壌管理の一つの指標となり得る。

 

石灰岩の成り立ちから石灰性暗赤色土を考える

/** Geminiが自動生成した概要 **/
石灰性暗赤色土を理解するために、石灰岩の成り立ちから考察している。石灰岩はサンゴ礁の遺骸が堆積して形成されるが、海底のプレートテクトニクスによる地層の堆積順序を踏まえると、玄武岩質の火成岩層の上に形成される。滋賀県醒ヶ井宿や山口県秋吉台など、石灰岩地域周辺に玄武岩が存在することはこの堆積順序と一致する。つまり、石灰性暗赤色土は石灰岩だけでなく、周辺の玄武岩の影響も受けていると考えられる。玄武岩の影響は土壌の赤色や粘土質を説明する要素となる。暗赤色土に見られる色の違い(赤~黄)は玄武岩質成分の量の差と推測できる。

 

Google Analytics APIの承認で苦戦したので、承認されるまでの流れをまとめてみた

/** Geminiが自動生成した概要 **/
Google Analytics APIの承認取得に苦労した著者が、その過程を詳述。OAuth同意画面の設定から始まり、Googleからの度重なるメールでの指摘に対応していく。 ホームページ、プライバシーポリシーの設置、アプリ操作動画の提出を求められ、動画はクライアントIDの表示や言語設定など細かい指示に従い作成し直した。最終的に承認を得るまで、動画の翻訳やスコープ設定の不備など、多くの修正を余儀なくされた。

 

アレルギー反応の緩和には銅を含む金属酵素が重要?

/** Geminiが自動生成した概要 **/
アレルギー反応緩和には、ヒスタミン代謝が重要で、銅を含む酵素ジアミンオキシダーゼ(DAO)とSAMを補酵素とするヒスタミン-N-メチルトランスフェラーゼ(HNMT)が関与する。野菜の栄養価低下、特に微量要素の欠乏によりヒスタミン代謝が弱まっている可能性がある。連作や特定産地のブランド化による弊害で、野菜のミネラル不足が懸念されるため、サプリメント摂取が必要かもしれない。喉の腫れ等の症状改善のため、ミネラルサプリを試す予定。効果があれば、健康な野菜の重要性を裏付けることになる。また、花粉症と乳酸菌飲料の関係性や、腸内細菌によるトリプトファン代謝の違いがアレルギー緩和に繋がる可能性も示唆されている。

 

基肥で硫酸苦土肥料を仕込む前に

/** Geminiが自動生成した概要 **/
家畜糞堆肥は土壌改良に有効とされるが、過剰施用は土壌環境を悪化させる。堆肥中のリン酸過剰はリン酸固定を引き起こし、植物のリン酸吸収を阻害する。また、カリウムも過剰になりやすく、マグネシウム欠乏を誘発する。さらに、堆肥に含まれる硫酸イオンは土壌に蓄積し、高ECや硫化水素発生の原因となる。これらの問題は土壌の物理性、化学性、生物性を悪化させ、作物の生育に悪影響を及ぼす。持続可能な農業のためには、堆肥施用量を適切に管理し、土壌分析に基づいた施肥設計を行う必要がある。盲目的な堆肥施用ではなく、土壌の状態を理解した上での施肥管理が重要である。

 

丹波竜発見地周辺の地質の確認

/** Geminiが自動生成した概要 **/
丹波篠山の恐竜化石発掘地周辺の地質について調査した。発掘地は流紋岩質の山を侵食する川の堆積物にあり、白亜紀後期の有馬層群に属する。約9km離れた場所には、7千万年前の火山噴火による流紋岩にできた噴気孔化石が存在する。発掘地の東側は2億5000万年前より古い付加体で、その上に火山噴出物が覆っている構造が確認できた。これは篠山層群が古生代ペルム紀から中生代ジュラ紀の基盤岩類を覆うという地域の地質構造と一致する。これらの情報から、周辺の地層観察で新たな発見が期待できる。

 

SOY Inquiryの自動送信メールの多言語化

/** Geminiが自動生成した概要 **/
SOY Inquiryで多言語サイトを構築する際、問い合わせ番号や日時が日本語で送信される問題を解決する方法です。mail.user.phpをカスタマイズし、メール本文中の「問い合わせ番号」「問い合わせ日時」を各言語に置換します。コード例では、explodeで本文を分割し、strposで該当箇所を特定、str_replaceで置換後、implodeで再構築しています。この方法で各言語用のフォームを用意すれば、多言語対応の問い合わせメールを実現できます。

 

SOY Inqiuryでお問い合わせ内容をコンパクトにする

/** Geminiが自動生成した概要 **/
SOY Inquiryで長い項目名によってメール表示が崩れる問題を解決する方法です。フォームテンプレートディレクトリ(例:default)にmail.admin.phpを作成し、PHPでメール内容を整形します。 提供されたコードは、メール本文の各行を処理し、コロン以降の空白文字を削除して出力します。これにより、項目名と入力値の間のスペースが詰まり、コンパクトな表示になります。管理者宛メールのみ変更され、公開側の表示は変わりません。

 

ビタミンを理解する為に補酵素を知る

/** Geminiが自動生成した概要 **/
このブログ記事は、ビタミンの理解を深める上で不可欠な「補酵素」について解説します。まず、酵素は「鍵と鍵穴」のように特定の基質にのみ作用し、その形を変える働き(基質特異性)を持ちます。例えば、アミラーゼがデンプンを分解する仕組みを説明します。次に、補酵素は、酵素と基質だけでは反応が成立しない場合に登場し、酵素の隙間を埋めることで基質の変化を助ける物質です。電子を与えたり、メチル基を移行させたりして酵素の働きをサポートし、ビタミンCなどがその代表例です。補酵素の知識を得ることで、ビタミンの役割をより深く理解できると締めくくられています。

 

Go言語を使ってJSONから複数のデータを取得してみる

/** Geminiが自動生成した概要 **/
Go言語で複数のJSONデータを読み込む方法を解説しています。sample.jsonファイルには、配列[]とオブジェクト{}を用いて複数のデータが記述されています。main.goでは、`[]Sample`型の変数を定義し、`json.Unmarshal`でJSONデータをデコードします。配列の要素へはインデックスを指定してアクセスし、各キーの値はドット記法で取得できます。例えば、`samples[1].Name`は2番目のデータの"name"キーの値("kumata")を取得します。

 

Go言語でJSON

/** Geminiが自動生成した概要 **/
Go言語でJSONを扱う方法について解説されています。 `sample.json`ファイルにID、名前、読み仮名などのデータを保存し、`main.go`でそのデータを読み込んで利用する方法が示されています。 `ioutil.ReadFile`でJSONファイルを読み込み、`json.Unmarshal`でGoの構造体`Sample`に変換します。`Sample`構造体はJSONデータのキーに対応するフィールドを持ちます。変換後、`sample.Name`のようにアクセスすることで、JSONデータの値を取得できます。

 

SOY CMSで記事一覧をカレンダー形式で表示する

/** Geminiが自動生成した概要 **/
SOY CMS用の「記事カレンダー」プラグインが開発されました。ブログ記事をカレンダー形式で表示し、投稿日を視覚的に把握できます。記事タイトルだけでなく、カスタムフィールドの内容も出力可能で、サムネイルプラグインと組み合わせることで画像表示も可能です。これにより、記事一覧をカレンダー上にサムネイル付きで表示するなど、柔軟な表示を実現できます。予約サイト構築など、従来のカレンダー機能とは異なる点が特徴です。サンプルは「毅と亮子のサラメシ」サイトで確認できます。パッケージはsaitodev.co/soycms/からダウンロード可能です。

 

Go言語とSQLiteでプリペアドステートメント

/** Geminiが自動生成した概要 **/
SOY2DAOでプリペアドステートメントを利用するには、SOY2::Queryクラスを使用します。SQL文中の値をプレースホルダ(?)で置き換え、bindメソッドで値をバインドします。これによりSQLインジェクションを防ぎます。 例えば、`SELECT * FROM user WHERE id = ?`というSQLに対し、`$query->bind(':id', 1);`のように値をバインドします。プレースホルダ名はコロン(:)で始めます。複数の値をバインドする場合は、配列で渡すことも可能です。 プリペアドステートメントは、同じSQLを繰り返し実行する場合にパフォーマンス向上に繋がります。SOY2DAOは内部でキャッシュ機構を持ち、一度パースしたSQLを再利用するためです。 また、SQL文を簡潔に記述できるメリットもあります。

 

Go言語とSQLiteでトランザクション

/** Geminiが自動生成した概要 **/
Go言語とSQLiteでトランザクションを実装する方法を示すコード例です。user_id=1の金額から1000円減算し、user_id=2に1000円加算する処理を、db.Begin()でトランザクション開始、tx.Commit()で終了させています。途中のエラー発生時は、それ以前の変更もデータベースに反映されません。各処理はtxオブジェクトを使ってSQLを実行し、エラーチェックを行っています。これにより、一連の操作が原子的に実行され、データの整合性が保たれます。

 

Go言語とSQLでランダムの顧客10人の注文を10000件登録してみる

/** Geminiが自動生成した概要 **/
Go言語とSQLiteを用いて、ランダムな顧客データ10,000件を生成・登録するコード例です。`orders`テーブル(id, user_id, price)を作成後、ループ処理で10,000回データ挿入を行います。顧客ID(user_id)は1から10の乱数、金額(price)は1,000から10,000の乱数を`rand.Intn()`で生成し、`strconv.Itoa()`で文字列に変換しています。SQL挿入文はプレースホルダを用いず、文字列連結で生成しています。ループ内で都度乱数シードを設定し、変数tとkをループ内で宣言することでデータ生成と挿入を繰り返します。

 

JavaScriptのWeb Audio APIで録音してみる

/** Geminiが自動生成した概要 **/
Web Audio APIを用いて録音機能を実装した。navigator.getUserMediaでマイクアクセス権を取得し、MediaRecorderで録音、10秒後に停止しsample.wavとしてダウンロードさせる。 現状は問答無用で録音開始・停止する仕様だが、将来的には取得した音の周波数を解析し、音に合わせた処理を実現したい。

 

Go言語とSQLite3でデータを取得する

/** Geminiが自動生成した概要 **/
Go言語とSQLite3を用いて、`sample.db`内の`orders`テーブルから3件のデータを取得するプログラムです。`db.Query`でSQLクエリを実行し、`rows.Next()`で各行を処理、`rows.Scan()`でid、user_id、priceの各列の値を変数に格納します。最後に`fmt.Print`と`fmt.Println`を用いて取得したデータを表示します。出力はid、user_id、priceがそれぞれ一行ずつ表示され、各レコードごとに空行で区切られます。

 

Go言語のSQLiteドライバでデータを挿入してみる

/** Geminiが自動生成した概要 **/
Go言語でSQLiteを操作し、データを挿入する手順を説明しています。まず、MSYS2を用いてSQLiteドライバをインストールします。次に、`sql.Open`でデータベースを開き、`db.Exec`でSQL文を実行します。テーブル作成の例では、`CREATE TABLE`文を変数`s`に格納し、`db.Exec(s)`で実行します。データ挿入の例では、`INSERT INTO`文を変数`t`に格納し、`db.Exec(t)`で実行します。`_ "github.com/mattn/go-sqlite3"`は必須で、手動で追記する必要があります。

 

SQLiteでデータを入れて取り出してみる

/** Geminiが自動生成した概要 **/
Windows 10 で SQLite を使い、データを操作する方法を解説しています。SQLite をダウンロード、インストールし、環境変数を設定後、コマンドプロンプトでデータベースファイル(sample.db)を作成します。SQL文を用いて、テーブル作成、データ挿入、削除、並び替え、表示など基本操作を例示しています。`CREATE TABLE` でテーブルを作り、`INSERT INTO` でデータ挿入、`SELECT * FROM` で全データ表示、`DELETE FROM` でデータ削除、`ORDER BY` で並び替え、`LIMIT` で表示件数制限を行います。DB Browser for SQLite での確認方法にも触れています。

 

SOY CMSを介さずにSOY2DAOを使ってみる2

/** Geminiが自動生成した概要 **/
SOY CMSを使わずにSOY2DAOでSQLを実行し、オブジェクトで結果を取得する方法を解説しています。 独自SQLの実行には`executeQuery()`ではなく`executeObjectQuery()`を使用します。`executeObjectQuery()`の第一引数にSQL文、第二引数にDAOクラス名を指定します。戻り値は指定したクラスのオブジェクト、もしくはオブジェクトの配列となります。記事では、`SOY2Sample`クラスと対応するテーブル`soy2_sample`を例に、`id`と`text`を取得するSQLを実行し、結果を`SOY2Sample`オブジェクトの配列として受け取る方法をコード付きで示しています。これにより、データベースから取得したデータをオブジェクトとして扱いやすくなります。

 

SOY CMSを介さずにSOY2DAOを使ってみる1

/** Geminiが自動生成した概要 **/
SOY CMSを使わずにSOY2DAOを単体で利用する方法を紹介。SQLiteのインメモリデータベースを例に、テーブル作成、データ挿入、検索のコードを記述。WEBAPP_DIRの定義、SOY2のinclude、RootDir設定、SOY2DAOConfigによるDSN設定を行い、SOY2DAOでSQLを実行。結果として、挿入したデータが期待通りに取得できることを確認。次回はDAO本来の機能を探る。

 

SOY CMSで記事の見出し自動生成プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSのブログ機能拡張として、長文記事の見出し自動生成プラグインが開発されました。記事内のH1〜H3タグを解析し、階層構造を持つ目次をHTMLで生成、任意の場所に表示します。出力されるHTMLは、各見出しへのアンカーリンクを含み、見出しにも対応するID属性が付与されるため、スムーズなページ内ナビゲーションが可能です。このプラグインにより、WordPress等のブログ特化CMSに比べて弱かったSOY CMSのブログ機能が強化され、強力なEC機能との連携による販促ブログとしての活用が期待されます。開発者は、SOY CMSをブログとECを統合したプラットフォームとして捉え、今後もブログ機能の改善を進める方針です。関連情報として、SOY Shopとの連携による有料ブログ運営や、下書き自動保存機能の記事へのリンクが提供されています。

 

SOY Inquiryでお問い合わせがあった場合にチャットワークに通知したい

/** Geminiが自動生成した概要 **/
SOY Inquiryでお問い合わせがあった際にChatworkに通知する方法を紹介します。まず、フォーム設置ディレクトリ(例:default)にmail.admin.phpを作成します。このファイルに、Chatwork APIトークン、ルームID、お問い合わせ内容をPOSTするcURLコードを記述します。 APIトークンとルームIDは別途取得が必要です。コード内の`$mailBody[0]`にはお問い合わせ本文が入っています。 設置完了後、テスト送信すると、指定のChatworkルームに「【saitodev.co】お問合わせがありました。」に続いてお問い合わせ内容が通知されます。

 

複合機とGoogleドライブを連携して、出先でFAXの内容を確認する

/** Geminiが自動生成した概要 **/
複合機のFAX受信をGoogleドライブと連携し、ChatWorkで通知する仕組みを紹介。複合機がFAXをPDFでGoogleドライブに共有する機能を活用し、Google Apps ScriptでPDFを特定フォルダに移動、ファイル名と共にChatWorkへ通知する。これにより、外出先でもFAX内容を即時確認でき、紙の無駄や転送の手間を省ける。5分間隔でスクリプトを実行することで、ほぼリアルタイムな通知を実現。設定には、複合機側のGoogleドライブ連携と、スクリプト内のChatWork API設定が必要。

 

Go言語でWebサイトから画像のデータを取得

/** Geminiが自動生成した概要 **/
Go言語でWebサイトから画像を取得し、ローカルに保存する方法を解説しています。`http.Get`で指定URLの画像データを取得し、`ioutil.ReadAll`でレスポンスボディをバイトスライスとして読み込みます。`os.Create`で新規ファイルを作成し、`file.Write`で取得したバイトデータを書き込むことで、画像ファイルを保存します。サンプルコードでは"植物のミカタ"の画像URLを使用し、"sample.jpg"として保存しています。記事では、HTTP GETリクエストとファイル作成の基本についても触れており、関連する記事へのリンクも提供しています。

 

Go言語でファイル作成

/** Geminiが自動生成した概要 **/
Go言語でファイルを作成する方法を解説しています。まず、`os.Stat`でファイルの存在確認を行い、存在しなければ`os.Create`で作成、存在すれば`os.Open`で開きます。`defer file.Close()`で確実にファイルを閉じ、`[]byte`に変換した文字列を`file.Write`で書き込みます。 次に、`os.Stat`でディレクトリの存在確認を行い、なければ`os.Mkdir`で作成します。`filepath.Abs(".")`で現在のディレクトリを取得し、`os.Chdir`で作成したディレクトリに移動してから、上記と同様にファイルを作成・書き込みます。結果として、指定したディレクトリにファイルが作成されます。

 

Go言語で構造体のメソッド

/** Geminiが自動生成した概要 **/
Go言語のメソッドは、特定の型に紐づく関数です。`sample.go`で`Person`構造体を定義し、`Greet()`メソッドを実装します。`Greet()`メソッドは`Person`型のポインタ`*Person`をレシーバーとして受け取ります。`main.go`で`Person`型の変数`ryoko`を作成し、`ryoko.Greet()`と呼び出すことでメソッドを実行します。メソッド内では、レシーバー`p`を通して`Person`のフィールド(例:`p.Name`)にアクセスできます。初期実装では「こんにちは」と表示されますが、`fmt.Println(p.Name + "さん、こんにちは")`と変更することで「りょうこさん、こんにちは」と表示できます。

 

Go言語で構造体

/** Geminiが自動生成した概要 **/
Go言語では、`type`キーワードで構造体(`struct`)を定義できる。構造体は複数の型の値をまとめたもので、例えば`Person`構造体に`id`、`name`、`reading`フィールドを持つ。`main`関数で`Person`型の変数`ryoko`を宣言し、値を代入して出力できる。構造体のフィールドへは`.`でアクセスする。また、構造体はパッケージに含めることができ、`sample`パッケージに`Person`構造体を定義し、`main`関数で`import`して`sample.Person`として利用できる。パッケージ内の構造体を利用する場合、フィールド名の最初の文字は大文字にする必要がある。

 

Google Apps Scriptからチャットワークに投稿してみる

/** Geminiが自動生成した概要 **/
Google Apps Script (GAS)を使ってChatWorkに投稿する方法を紹介。ChatWorkClient for Google Apps Scriptライブラリを利用し、APIトークンとルームIDを指定することで簡単にメッセージを送信できる。GASのトリガー機能と組み合わせれば、Gmail受信やGoogleカレンダーの予定に基づいて自動投稿するなど、業務効率化に役立つアプリを簡単に作成可能。ChatWorkとG Suiteの連携で業務改善を実現できる。

 

PHPでチャットワークAPIを介してメッセージを投稿してみる

/** Geminiが自動生成した概要 **/
ChatWork APIを使用してPHPからマイチャットに投稿するスクリプトを作成。投稿は成功し、マイチャットに「PHPからテスト投稿」のメッセージが送信された。 また、ChatWorkでは電話代行サービスを開始しており、電話対応を減らす取り組みが進んでいる。仕事における電話が嫌煙される傾向が高まっている。

 

Google Apps ScriptでJPEGの画像からOCRで画像内の文字列を取得してみた

/** Geminiが自動生成した概要 **/
Google Apps ScriptでJPEG画像からOCRで文字列を取得する方法を検証。GoogleドキュメントでのOCRをGASで自動化する方法を紹介している。 Drive APIを有効化し、画像URLを指定して`Drive.Files.insert`メソッドでGoogleドライブに挿入、`ocr:true`オプションでOCRを実行。 生成されたGoogleドキュメントには画像とOCR結果のテキストが含まれる。日付や画像中の文字認識は難しいが、本文は高精度で取得できた。以前試したGoogleドキュメント直接OCRより精度は高い。

 

Node.js、Socket.IOとLet's Encryptでチャットアプリの常時SSL化

/** Geminiが自動生成した概要 **/
記事では、インターネット上のパケットを傍受して中身を確認する方法を解説しています。使用ツールはWiresharkで、無線LANに接続するPCと、傍受対象のスマホを同じネットワークに接続します。スマホと通信するパケットはPCも受信するため、Wiresharkでフィルタリングしてスマホの通信のみを抽出します。HTTP通信の場合は、パスワードなどの重要な情報が平文で送信されていることが確認できます。HTTPS通信の場合は暗号化されているため、傍受しても内容は解読できません。この実験を通して、HTTP通信の危険性とHTTPS通信の重要性を示しています。

 

php-webdriverでtarget="_blank"付きのアンカータグ対策

/** Geminiが自動生成した概要 **/
php-webdriverで`target="_blank"`のリンクをクリックした際、新しいタブにフォーカスを移すには`$driver->switchTo()->window(end($driver->getWindowHandles()));`ではなく、`$wins = $driver->getWindowHandles(); $driver->switchTo()->window(end($wins));`のように書く。 また、テスト終了時に単に`close()`を使うとセッションが残ってしまうため、タブが一つの場合は`quit()`を使う必要がある。これを考慮した`close()`関数を定義することで、複数タブでも単一タブでも適切にブラウザを閉じ、テストを終了できる。

 

Node.js製のアプリをforeverで永続化する

/** Geminiが自動生成した概要 **/
Node.jsアプリをサーバ再起動後も自動的に起動し、かつ実行中にエラーで停止しないようにする方法。foreverライブラリを利用し、`npm install -g forever`でインストール。`forever start /path/to/app.js`でアプリを起動・永続化。`@reboot /usr/local/bin/forever start /path/to/app.js`をcronに登録することで、サーバ再起動時に自動的にアプリが起動するようになる。

 

UbuntuサーバでNode.jsのアプリの再起動に苦戦した時のメモ

/** Geminiが自動生成した概要 **/
UbuntuサーバーでNode.jsアプリを再起動する際、cronで@reboot時に実行するとデータベースファイルのパスがずれる問題が発生した。相対パス指定では実行ディレクトリが変わるため、`./_module/db.js` や `./db/sqlite.db` のような記述は`index.js`からの相対パスではなく、実行時のカレントディレクトリからの相対パスとして解釈されていた。これを解決するために、`__dirname` を使用して `index.js` のあるディレクトリを確実に取得し、`__dirname + '/_module/db.js'`、`__dirname + '/db/sqlite.db'` のように絶対パスを指定することで、どのディレクトリから実行してもデータベースに接続できるように修正した。

 

Socket.IOのチャットアプリでXSS対策

/** Geminiが自動生成した概要 **/
Socket.IOで作成したチャットアプリでXSS脆弱性対策を実施した。HTMLタグを入力するとエスケープされずに表示されてしまうため、`xss-filters`ライブラリを導入。`npm install xss-filters`でインストール後、サーバーサイドのメッセージ送信部分で`xssFilters.inHTMLData()`を用いて送信メッセージをフィルターした。その結果、HTMLタグがエスケープされて表示されるようになり、XSS攻撃を防ぐことができた。

 

Socket.IOで個別チャットを作りたい後編

/** Geminiが自動生成した概要 **/
Socket.IOで個別チャットを実現するため、namespacesを利用した検証が行われた。サーバー側では"hoge"と"huga"二つのnamespacesを作成し、クライアント側ではランダムにどちらかに接続するよう変更。結果、同じnamespaceに接続したクライアント間でリアルタイムなチャットが可能になった。namespacesによる個別チャットの可能性が示されたが、roomによる実現方法や動的なグループチャット作成機能の課題が残されている。

 

SOYCMS同一カテゴリーの記事一覧ブロックプラグイン

/** Geminiが自動生成した概要 **/
SOY CMSの記事詳細ページで、同じカテゴリの記事一覧を表示する「同一カテゴリーの記事一覧ブロックプラグイン」が開発されました。このプラグインは、SOY CMSのプラグインブロック上で動作し、ブログページの記事ページでのみ機能します。プラグインブロックの使い方については、別記事「SOY CMSでプラグインブロックを追加してみた」を参照ください。ダウンロードはsaitodev.co/soycms/ から可能です。

 

醒井渓谷に行ってきた

/** Geminiが自動生成した概要 **/
醒ヶ井宿の湧水地帯の地質である玄武岩と石灰岩を踏まえ、近くの醒井渓谷を探索。渓谷では鋭利に割れたチャートと思われる岩石を発見し、地質図とも一致した。また、醒ヶ井宿の武蔵川でも見かけた赤い石が渓谷の川にもあり、鉄分が多いのではないかと推測。近くに現役の石灰岩鉱山があることも確認した。

 

醒ヶ井宿の居醒の清水

/** Geminiが自動生成した概要 **/
滋賀県米原市の醒ヶ井宿は、名水百選「居醒の清水」で有名な湧水地。この清冽な水で育つ梅花藻は、水温15℃前後の澄んだ湧水を好む希少種。湧水周辺の地質は玄武岩質やチャートの付加体だが、近隣の霊仙山は石灰岩のカルスト地形を形成している。梅花藻の生育には、安定した水温に加え、玄武岩や石灰岩の成分も影響している可能性がある。醒井渓谷など更なる調査が必要。

 

PHPExcelを使ってみた

/** Geminiが自動生成した概要 **/
PHPExcelライブラリを使ってExcelファイルからデータ抽出する方法を紹介。Ubuntu 17.04、PHP 7.1.5環境で、php7.1-xml、php7.1-gd、php7.1-zipをインストール後、PHPExcelをダウンロード。サンプルxlsファイルからデータを読み込むPHPコードを掲載し、セル番号と値を出力する例を示している。コードは拡張子による読み込み方法の切り替え、複数シートへの対応、行とセルのイテレータによる値の取得を実装。出力結果の画像も掲載。

 

NW.jsを試す

/** Geminiが自動生成した概要 **/
中学生向けプログラミング教室で、JavaScriptでアプリ制作をする生徒が出てきたため、デスクトップアプリ作成の選択肢としてNW.jsをUbuntuで試した。npmでnw.jsをインストール後、index.htmlとpackage.jsonを作成し、`npm start`で実行した結果、"Hello World!"とNode.jsのバージョンが表示された。ランチャーに登録したNW.jsアイコンからも同じ画面が起動できた。しかし、端末操作が必要なため、中学生には敷居が高いと判断し、他の方法を検討することにした。

 

SOY Shopの商品詳細ページで登録されている商品をランダムで表示する

/** Geminiが自動生成した概要 **/
SOY Shopの商品詳細ページで登録商品をランダム表示するPHPモジュールを作成する方法です。まず、管理画面でモジュールID「item.random」のPHPモジュールを作成し、指定のコードを記述します。このコードはSOY2DAOを使い、全商品、または指定カテゴリの商品をランダムに取得し、表示件数を制限するSQLを実行します。商品詳細ページテンプレートに`<!-- shop:module="item.random" -->`と`<!-- block:id="random_item_list" -->`を記述することで、ランダムに選ばれた商品が表示されます。カテゴリを指定するには、`$categoryId`変数にカテゴリIDを代入します。

 

SOY CMSのブログでプレビュー用のページを作成してみる

/** Geminiが自動生成した概要 **/
SOY CMSのブログにはプレビュー機能がないが、記事を任意の場所に貼り付けられる機能を利用してプレビューページを作成できる。まず、プレビュー用のページ(例:/preview)を作成し、「プレビュー」ラベルを設定、Basic認証で保護する。記事投稿時に「プレビュー」ラベルのみを選択すれば、プレビューページにのみ記事が表示される。確認後、「ブログ」ラベルを追加すれば本番公開となる。実際には、ダイナミック編集で非公開記事も確認できるため、プレビュー機能の代替として活用可能。

 

SOY Shopで即日配送モジュールを追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの即日配送モジュールは、注文後すぐに発送手続きを行うネットショップ向けに開発されました。カート画面で即日配送を選択可能にし、サイト全体に説明文を表示できます。営業時間外への対応として、営業日カレンダープラグインと連携し、定休日や営業時間の設定が可能です。さらに、午後の注文で翌日到着になる場合、到着予定日を自動的に調整する機能も備えています。このモジュールはGitHub上のinunosinsi/soycmsパッケージに含まれています。

 

SOY Mailの送信予約を使ってみよう

/** Geminiが自動生成した概要 **/
SOY Mailの送信予約機能はcronを用いて実現する。管理画面で送信日時を設定するが、cronの設定が必須。cronは「分 時 日 月 曜日 コマンド」の形式で記述し、コマンドはSOY Mail管理画面のヘルプを参照。送信日時とcron設定を一致させるとその時刻限定の送信となるため、10分おき等にSOY Mailのコマンドを実行し、予約日時を超えた未送信メールを送信するよう設定するのが効率的。ただし、サーバによっては短時間での大量送信でエラーとなる場合があるため、SOY Mailの分割配信機能を考慮し、最低でも20分間隔での実行が推奨される。

 

SOY CMS/Shopでクラス名と同名のメソッドでエラーになる件を修正

/** Geminiが自動生成した概要 **/
KAGOYAのマネージド専用サーバでPHP7にアップグレードした際、SOY CMS/Shopでクラス名と同名のメソッドがコンストラクタとして使われているためエラーが発生した。PHPの次期バージョンではこの記法が非推奨となるため、`__construct()`への変更が必要だった。`WebPage`クラスなどでも同様の問題があり、修正パッチを作成しGitHubに公開した。公式サイトにも反映されることを期待している。

 

SOY CMSの画像のリサイズ時にPNGの透過を無効にする

/** Geminiが自動生成した概要 **/
SOY CMSでPNG画像をリサイズすると、透過部分が黒くなる問題が発生。これはGDライブラリの画像リサイズ処理がPNGのアルファチャンネルを正しく扱わないためでした。 `/common/im.inc.php`内のPNG処理に`imagealphablending($dstImage, false);`と`imagesavealpha($dstImage, true);`を追加することで、透過を保持したままリサイズが可能になります。この修正はGDライブラリ使用時のみ有効です。

 

SOY CMS/ShopでPHPモジュールに使用の制限を設けました

/** Geminiが自動生成した概要 **/
SOY CMS/Shopのセキュリティ強化のため、テンプレートエディタとPHPモジュールでのPHP実行に制限が加わりました。PHPの使用は、`user.config.php`で`SOYCMS_ALLOW_PHP_SCRIPT`を`true`にすることで許可されます。 PHPモジュールはさらに`SOYCMS_ALLOW_PHP_MODULE`を`true`にすることで利用可能になります。これらの設定により、テンプレートやモジュールでPHPコードの実行を制御し、セキュリティリスクを軽減します。アップデートはGitHubから入手可能です。

 

Go言語でサーバのバックアップの仕組みを作ろう。SSH編

/** Geminiが自動生成した概要 **/
Go言語でサーバのバックアップを作成するため、SSH接続を用いたファイルコピーから、Zipファイルのダウンロード方式に変更された。 `golang.org/x/crypto/ssh` パッケージを利用し、SSH接続を確立、リモートでコマンドを実行するテストコードが作成された。このコードは、指定したサーバに接続し、空のファイル`empty.txt`を作成することに成功。今後の開発は、このSSH接続とコマンド実行機能をベースに、Zipファイルのダウンロード処理を実装する方向で進められる。

 

Go言語でサーバのバックアップの仕組みを作ろう。Walk編

/** Geminiが自動生成した概要 **/
Go言語でファイルサーバのバックアップを作成する過程の記録。今回は同一PC内でのディレクトリとファイルコピーを実装。`filepath.Walk`でディレクトリ構造を走査し、`os.Stat`でバックアップ先にディレクトリが存在しなければ`os.Mkdir`で作成。ファイルは`os.Open`、`os.Create`、`io.Copy`でコピー。`tree`コマンドでコピー結果を確認し、ディレクトリ構造とファイル内容が正しくコピーされたことを確認。ただし、ファイル更新日時を考慮したコピー処理は未実装。

 

SOY CMSでプラグインブロックを追加してみた

/** Geminiが自動生成した概要 **/
SOY CMSのスクリプトモジュールブロックをプラグイン化し、簡単に導入できる「プラグインブロック」機能が追加されました。サイト構築時に毎回スクリプトを設定する手間を省き、記事一覧表示の効率化を実現します。プラグインをインストール後、ブロック設定でプラグインブロックを選択し、プラグインIDを指定するだけで利用可能です。プラグインIDは各プラグインの詳細説明に記載されています。この機能はsoycms_1.8.12p7.2以降で使用可能で、GitHubからパッケージをダウンロードできます。バージョンアップ時はuser.config.phpにPluginBlockComponentの追加が必要となる場合があります。

 

SSHで外部のネットワークからログインできるようにする

/** Geminiが自動生成した概要 **/
Sambaサーバに外部からSSH接続できるよう設定した手順の記録。まずSambaサーバにSSHをインストールし、プライベートIPアドレス(192.168.11.8)を設定、ルーターのIPアドレスをゲートウェイに設定した。次に外部からのSSH接続のため、rootログインを禁止し、無線LANルーターでポートフォワーディング(外部ポート71823→内部ポート22)を設定。外部IPアドレス(例:127.0.0.1)へポート71823を指定してSSH接続を確認した。パスワード認証はセキュリティ的に不安なので、次回は鍵認証を設定予定。

 

使わなくなったパソコンにSambaを入れて、ファイル共有用のサーバを構築してみた

/** Geminiが自動生成した概要 **/
使わなくなったWindows7マシンにUbuntuをインストールし、Sambaでファイル共有サーバーを構築する方法。 手順は、Ubuntuインストール後、端末でSambaをインストールし、共有フォルダ`/home/share`を作成、パーミッションを設定。`/etc/samba/smb.conf`を編集し、ゲストアクセスを許可する設定を追加。Sambaを再起動し、ファイアウォールで必要なポートを開放。自動起動設定も実施。 Windowsからは、ネットワークドライブの割り当て機能を使い、`\\SambaサーバーのIPアドレス\Share`でアクセス可能。`Share`部分はsmb.confで設定した共有名。

 

Dockerの他コンテナにあるSOY CMSからMySQLのコンテナにアクセスしてみる

/** Geminiが自動生成した概要 **/
Docker Composeを用いて、PHP7/ApacheとMySQLのコンテナを連携させ、SOY CMSを動作させる方法を解説。MySQLコンテナでは`bind-address`を指定し、PHPコンテナでは`pdo_mysql`拡張をインストールする必要がある。データベース接続設定では、MySQLコンテナの内部IPアドレスとポート(3306)を指定。SOY CMSのデータベース設定ファイル(mysql.php)を適切に編集することで、コンテナ間のデータベースアクセスを実現。記事では、`docker-compose.yml`の設定例や、コンテナ内でのデータベース作成手順、SOY CMSの初期設定画面へのアクセス方法などを示している。また、PHP7環境でのSOY CMS動作に関する修正はGitHubで公開されている。

 

SOY Inquiryでアップロードフォームを設置した時、確認メールで画像を確認したい

/** Geminiが自動生成した概要 **/
SOY Inquiryでアップロードフォームを複数設置した場合、確認メールで全ての画像URLを確認する方法を紹介します。標準では管理画面でしか確認できませんが、メールテンプレートをカスタマイズすることで実現可能です。 `/インストールディレクトリ/app/webapp/inquiry/src/template/default/mail.admin.php` に記述を追加します。`$comments` から各コメントのコンテンツを取得し、正規表現で `<img src="">` タグ内のURLを抽出します。抽出したURLにサイトURLを付加して、確認メールの末尾に「添付ファイル」として表示します。複数画像に対応するため、ループ処理で全てのコメントをチェックし、画像URLを追記していきます。これにより、確認メールで全てのアップロード画像を直接確認できるようになります。

 

SOY Inquiryでコンバージョンタグを利用する

/** Geminiが自動生成した概要 **/
SOY Inquiryでコンバージョンタグを利用する方法を解説します。URLパラメータ`sample_conv`で渡された値をセッションに保存し、お問い合わせ完了画面でhiddenフィールドに表示、メール本文にも含めることができます。 `index.php`にセッション保存処理を追加し、新規テンプレート`soy`の`complete.php`にhiddenフィールド出力処理を追加します。`mail.admin.php`と`mail.user.php`にコンバージョンタグに関する表記を追加することで、管理者・ユーザー向けメールにも表示可能です。完了画面表示前にメールが送信されるため、完了画面で値を利用しない場合はセッションを破棄する処理のコメントアウトを外してください。

 

golangでテストを書いてみたのでメモ

/** Geminiが自動生成した概要 **/
Go言語のテスト方法についての記事です。`sample.go`に`MakeRandomString`(ランダム文字列生成)と`Convert`(MD5ハッシュ化)関数を定義し、`sample_test.go`にテストコードを書きます。`Test`+関数名でテスト関数を定義し、`t *testing.T`を引数に取ります。`Convert`関数のテストでは、空文字やハッシュ化前文字列と等しい場合に`t.Error("failed")`でエラーとします。`go test`コマンドでテストを実行し、`PASS`なら成功、`FAIL`なら失敗となります。`MakeRandomString`関数のテストでは、2回生成した文字列が同じであればエラーとしています。

 

SOY CMSであれば、管理画面のURLを特定したい

/** Geminiが自動生成した概要 **/
SOY CMSの管理画面URLは`/cms/admin/`が一般的だが、変更可能。そのため、攻撃者は`/soy/admin/`なども試す。管理画面URLを`/c!_m-s/admin/`のように複雑にするのが安全。既存サイトで`/cms/admin/`を使っている場合は、`cms`ディレクトリ名を変更し、`cms`フォルダ内、`index.php`、`shop/index.php`、`site/index.php`内のパスを修正することで変更できる。さらに、Basic認証やIP制限を追加すればより安全。

 

検索フォームと検索結果ページを作ってみた1

/** Geminiが自動生成した概要 **/
スクリプトモジュールブロックを使用して記事検索機能をSOY CMSに追加する方法について説明しています。まず、user.config.phpでスクリプトモジュールを許可し、次にブロックタイプリストにScriptModuleBlockComponentを追加します。記事中の特定の文字列を検索したり、記事をグループ化したりできるようになります。このモジュールを使用することにより、ブログに検索機能を追加し、ユーザーが記事をより簡単に検索できるようにすることができます。

 

スマホ対応のお問い合わせフォームを作ってみた

/** Geminiが自動生成した概要 **/
SOY Inquiryでスマホ対応のレスポンシブなお問い合わせフォームを作成する方法を紹介。標準のフォームはスマホで表示が崩れるため、新しいテンプレートを作成し、HTMLを`<dl>`タグに変更することで解決。`/cmsインストールディレクトリ/app/webapp/inquiry/src/template/`以下にresponsiveディレクトリを作成し、サンプルファイルをコピー。form.phpのテーブル表示を`<dl>`に変更。設定画面でデザインをresponsiveに変更することで、PC・スマホ両対応のフォームが完成。確認画面(confirm.php)と完了画面(complete.php)も同様に`<dl>`タグを用いて修正することで、一貫したデザインを実現。

おすすめの検索キーワード
おすすめの記事

Powered by SOY CMS   ↑トップへ