
/** Geminiが自動生成した概要 **/
ゼオライトは天然と人工があり、人工ゼオライトは高機能化が開発の主要因です。その機能は、ケイ素(Si)骨格にアルミニウム(Al)が入り込むことで負に荷電し、陽イオン交換能を持つことに起因します。この陽イオン交換能は肥料の保肥力(CEC)として土壌改良に貢献します。ゼオライトの機能は、骨格の形(骨格コードで分類)やSi/Al比によって異なり、例えばモルデナイトはMOR型に分類され、理想的なSi/Al比は5、実際は4.5〜5.5の範囲です。
/** Geminiが自動生成した概要 **/
ゼオライトは天然と人工があり、人工ゼオライトは高機能化が開発の主要因です。その機能は、ケイ素(Si)骨格にアルミニウム(Al)が入り込むことで負に荷電し、陽イオン交換能を持つことに起因します。この陽イオン交換能は肥料の保肥力(CEC)として土壌改良に貢献します。ゼオライトの機能は、骨格の形(骨格コードで分類)やSi/Al比によって異なり、例えばモルデナイトはMOR型に分類され、理想的なSi/Al比は5、実際は4.5〜5.5の範囲です。
/** Geminiが自動生成した概要 **/
やまどうぐレンタル屋の韓国語サイト制作で、1000件超の商品情報翻訳を担当。膨大な翻訳量を効率化するため、生成AI「Gemini」のAPIをCMSに組み込み、商品情報の自動翻訳・データベース挿入システムを開発しました。
「手ぶら割」など独特な言い回しの翻訳失敗を避けるため、文字列分割・再結合処理を導入。これにより翻訳成功率は約80%に達し、手動修正を含めても当初予定の1/20の作業時間で完了しました。
また、既存の英語・中国語サイトの管理画面におけるページ周りのUI改善も行いました。
/** Geminiが自動生成した概要 **/
WordPressで、ブログ記事を自動でX(旧Twitter)に紹介投稿するプラグインが開発されました。これは、以前SOY CMS向けに作成された同機能の移植版です。
このプラグインは、公開された記事の内容をGoogleの生成AI「Gemini」に読み込ませ、X投稿に適した紹介文を自動で作成させます。さらに、作成された紹介文はそのまま自動的にXへポストされる仕組みです。
現時点では、このブログに特化した汎用性の低いプラグインですが、使用を希望される場合は問い合わせを通じて個別の対応が可能とのことです。
/** Geminiが自動生成した概要 **/
SOY CMSでエディタ非表示プラグインを開発。記事投稿画面の本文と追記欄を非表示にできます。カスタムフィールドを多用し、本文欄が不要なサイト構築に便利です。プラグインは下記サイトからダウンロードできます。 [https://saitodev.co/soycms/]
/** Geminiが自動生成した概要 **/
福井県越前市武生地区の稲作地帯を視察。パイプラインで水を引くため、水田間で水のやり取りがないのが特徴。水質は不明だが、生活排水の流入がない点はメリット。土壌分析では、2:1型粘土鉱物と腐植が少ない傾向。砂岩地質のため、鉄分の自然増加も期待薄。水質と土壌の特性から、光合成促進には工夫が必要と感じた。
/** Geminiが自動生成した概要 **/
SOY CMSで、記事の更新日と作成日が異なる場合に更新日を出力する機能を追加しました。SEO対策として更新日の表示が推奨される一方、作成日も残したいというニーズに応え、`cms:id="is_updated"`タグを実装。作成日と更新日が同じ場合は作成日のみ、異なる場合は両方を表示します。構造化データプラグインとの併用も想定。詳細・ダウンロードは[https://saitodev.co/soycms/](https://saitodev.co/soycms/) にて。
/** Geminiが自動生成した概要 **/
SOY CMSで構造化データプラグインを開発。AI進化でブログ訪問者が減少したため、SEO対策として記事リライト時の更新日を明記する仕組みを追加。構造化データでJSON形式の更新日時を自動挿入し、HTTPヘッダーにもLast-Modifiedを挿入(HTMLキャッシュプラグインとの併用時は構造化データに委託)。パッケージはサイトからダウンロード可能。
/** Geminiが自動生成した概要 **/
SOY CMSで記事紹介自動投稿プラグインを開発。Geminiで記事の紹介文を生成し、X(旧Twitter)へ自動投稿する機能です。背景には、AI概要でブログ閲覧数が減少している現状があり、Geminiを広報担当として活用する目的があります。現在は特定ブログ向けですが、利用希望者は問い合わせください。
/** Geminiが自動生成した概要 **/
フザリウム属は、硝酸塩利用能を持つ菌株が存在し、硝酸塩を利用できる。硝酸塩利用能欠損変異株の存在がその証拠。積極的に利用するかは不明だが、無機窒素を利用できない真菌との競合環境下では、フザリウム属が優位になる可能性が考えられる。
/** Geminiが自動生成した概要 **/
リョクトウとリョクトウもやしの栄養価を比較。リョクトウ100gあたり344kcal、たんぱく質24.3gに対し、もやしは15kcal、たんぱく質1.8gと大幅に減少。カリウムの減少が顕著。一方、リョクトウにはないビタミンCがもやしには13mg含まれる。発芽により栄養価は変化し、特にビタミンCの増加が特徴的。植物の成長過程における栄養変化を知る手がかりとなる。
/** Geminiが自動生成した概要 **/
SOY CMSの静的テンプレートプラグインは、HTMLファイルから直接テンプレートを読み込むことで、同じデザインの複数ページ管理を簡素化します。従来、URL構造の違い(例:/soycms/soycms/tutorial/1 と /soycms/soyshop/tutorial/1)により、同じデザインでも別ページとして管理が必要でした。このプラグインは静的テンプレートを利用することでこの問題を解決し、管理の手間を削減します。SOY Shopでは標準機能ですが、SOY CMSではプラグインとして提供されます。ダウンロードはsaitodev.co/soycms/ から可能です。
/** Geminiが自動生成した概要 **/
園芸資材として赤玉土や軽石につづき、スコリアの存在が気になった。ホームセンターで販売されているのを確認し、その多様性に驚いた。スコリアは多孔質で赤や黒っぽい岩石だが、軽石とは異なる。軽石が流紋岩質や安山岩質のマグマ由来である一方、スコリアは玄武岩質マグマ由来で、鉄を多く含むため重い。玄武岩質の土は扱いやすいことから、価格次第ではスコリアも注目の土壌改良材となる可能性がある。
/** Geminiが自動生成した概要 **/
SOY CMSのキーワード自動抽出プラグインに、検索フォームへの入力補完機能が追加されました。プラグインは生成AIを利用し、サイト内のコンテンツからキーワードを抽出して検索性を向上させます。
この機能追加を含む最新版はsaitodev.co/soycms/からダウンロード可能です。
以前、生成AIによる記事概要自動生成機能も紹介されました。これは記事の内容をAIが解析し、指定文字数で概要を作成する機能です。これにより、SEO対策や記事一覧での魅力的な表示が容易になります。
/** Geminiが自動生成した概要 **/
軽石を落葉抽出液(おそらくタンニンを含む酸性)に浸したところ、黒い鉱物が脱落し、軽石に穴が空いた。軽石の主成分である無色鉱物(石英、長石)は酸に反応しないため、脱落した黒っぽい鉱物は有色鉱物(角閃石か磁鉄鉱と推測)と考えられる。これらの有色鉱物は酸に反応し溶解することで軽石から脱落した可能性がある。結果として軽石表面に穴が空き、水の浸透による風化が促進されると考えられる。
/** Geminiが自動生成した概要 **/
SOY CMS向け「キーワード自動抽出プラグイン」が開発されました。Google Gemini APIを利用し、記事内容からキーワードを自動抽出し、サイト内検索を強化します。特徴は、キーワードの読み仮名検索に対応している点です。例えば、「風化」を「ふうか」と入力しても記事がヒットします。MeCabのような形態素解析エンジンの導入・設定の手間を省き、生成AIの力で実現しました。将来的には入力補完や類義語検索も実装予定です。プラグインパッケージはsaitodev.co/soycms/からダウンロードできます。
/** Geminiが自動生成した概要 **/
SOY Shop用のカートページスキッププラグインが開発されました。このプラグインは、顧客情報入力や支払い・配送方法選択など、任意のカートページをスキップし、同時にスキップしたページの項目を事前に指定できます。ダウンロード販売やライセンス継続課金サイトで、支払い方法が一択の場合などに便利です。カートのカスタマイズを避けつつ、購入手続きを簡略化することでカゴ落ち率の減少が期待できます。プラグインは、SOY Shopの最新パッケージに含まれており、saitodev.co/soycms/soyshop/ からダウンロード可能です。
/** Geminiが自動生成した概要 **/
紫木蓮の花蕾は生薬「辛夷」として用いられ、有効成分はオイゲノールである。オイゲノールはカシワの葉にも含まれる成分。モクレンの生薬は冬芽ではなく花蕾が使われるが、オイゲノールは花弁形成段階で増加するのか、冬芽の葉に他の苦味成分が多いのかは不明。生薬研究は新たな知見につながる可能性がある。
/** Geminiが自動生成した概要 **/
水酸化物イオン(OH⁻)と塩素イオン(Cl⁻)は共に負電荷を持ち非共有電子対を持つため求核剤となるが、OH⁻の方が求核性が強い。これはOH⁻の方が電子密度が高いためである。電子密度は原子半径が小さいほど高くなり、酸素は塩素より原子半径が小さいため、OH⁻の電子密度はCl⁻より高く、求核性も高い。また、酸素の電気陰性度が塩素より高いことも関係する。腐植形成における求核置換反応では、このような求核剤の性質が重要となる。
/** Geminiが自動生成した概要 **/
土壌の重要な構成要素であるリグニンは、ベンゼン環を持つモノリグノール(p-クマリルアルコール、コニフェリルアルコール、シナピルアルコール)と、イネ科植物特有のO-メチル化フラボノイドであるトリシンが結合した複雑な高分子化合物である。一見複雑な構造だが、これらの構成要素の合成経路や重合方法を理解することで、土壌の理解を深めることができる。リグニンは木の幹の主要成分であり、その構造は一見複雑だが、基本構成要素を理解することで土壌への理解を深める鍵となる。
/** Geminiが自動生成した概要 **/
キレート作用を持つ有機酸について解説。アスコルビン酸(ビタミンC)のキレート能は限定的。キレート作用で有名なEDTAはカルボキシ基が金属イオンと結合する。キレート作用を持つ有機酸として、クエン酸、リンゴ酸、酒石酸、シュウ酸、フマル酸、コハク酸などが挙げられ、これらは複数個のカルボキシ基を持つ。アスコルビン酸も挙げられるが、キレート能は低い。比較的低分子で複数個のカルボキシ基を持つことがキレート作用を持つ有機酸の特徴と言える。
/** Geminiが自動生成した概要 **/
白榴石はカリウムを多く含むため肥料として使われるケイ酸塩鉱物です。輝石と同じケイ酸の形なのに、アルミニウムが入る隙間があるのが化学的に不思議です。白榴石はカリウム豊富でシリカが少ない火成岩にできますが、日本の火成岩分類では該当するものがなく、海外では異なる可能性があります。このことから、土壌を理解するには火成岩の知識がまだまだ必要だと感じます。
/** Geminiが自動生成した概要 **/
アロフェンは、外側にAl、内側にSiが配置する独特な構造を持つ粘土鉱物です。Alによる正電荷とSiによる負電荷が、特徴的なAECを示します。また、Si-O結合の不規則な切断(Broken-bond defects)により、高いCECを示します。アロフェンは火山ガラスだけでなく、長石の風化過程で生成されることもあります。
/** Geminiが自動生成した概要 **/
アロフェンは、土壌名「アロフェン質黒ボク土」に見られる重要な粘土鉱物です。非晶質で、中空球状の形態をしています。構造は、Al八面体シートとSi四面体シートが組み合わさり、球状に重なり合った形をしています。シートの重なりには小さな隙間が存在します。一般の粘土鉱物とは異なり、層状構造を持たない点が特徴です。
/** Geminiが自動生成した概要 **/
SOY CMS用プラグインを開発し、記事概要を自動生成する機能を追加しました。GoogleのGemini APIを使用して、記事本文から要約文を生成します。この機能により、記事一覧で表示される要約文が明確かつ読みやすくなりました。ただし、生成された要約文は必ずしもサイトの趣旨と一致するわけではありません。このプラグインは「記事概要自動生成プラグイン」として公開されており、「https://saitodev.co/soycms/」からダウンロードできます。
/** Geminiが自動生成した概要 **/
輝石はかんらん石よりもケイ酸の重合が進んだ構造を持っており、そのため風化しにくい。ケイ酸が一次元の直鎖状に並んでおり、その隙間に金属が配置されている。この構造では、金属が常に外側に露出しているように見えるが、ケイ酸塩鉱物では重合が進んだ構造ほど風化速度が遅くなることが知られている。つまり、輝石の金属溶脱はかんらん石よりも起こりにくい可能性がある。
/** Geminiが自動生成した概要 **/
ケイ酸は、ケイ素と酸素で構成され、自然界では主に二酸化ケイ素(SiO2)の形で存在する。水に極わずか溶け、モノケイ酸として植物の根から吸収される。
しかし、中性から弱酸性の溶液では、モノケイ酸同士が重合して大きな構造を形成する。この重合の仕方は、単鎖だけでなく複鎖など、多様な形をとる。
造岩鉱物は、岩石を構成する鉱物で、ケイ酸を含有するものが多い。熱水やアルカリ性の環境では、ケイ酸塩が溶けやすくなる。
/** Geminiが自動生成した概要 **/
コハク酸は、貝類や日本酒に多く含まれる酸味と旨味を持つ有機化合物です。クエン酸回路の中間体として、生体内エネルギー産生に重要な役割を果たします。構造的には、2つのカルボキシ基を持つジカルボン酸で、クエン酸から数段階を経て生成されます。
旨味成分として知られるグルタミン酸は、コハク酸の前駆体であるα-ケトグルタル酸と関連しており、コハク酸もグルタミン酸に似た旨味を持つと考えられます。貝類に多く含まれる理由は、エネルギー代謝経路の違いや、浸透圧調整に関与している可能性などが考えられています。
/** Geminiが自動生成した概要 **/
SOY CMSのカスタムフィールドで、誤ったフィールドIDをテンプレートに挿入してしまう問題を解決するプラグイン「カスタムフィールドチェッカー」に新機能が追加されました。
今回のアップデートでは、ページに存在するフィールドIDが正しく使用されているかをチェックする機能が実装されました。
これにより、フィールドIDの入力ミスによる予期せぬ表示を防ぎ、より安全にサイト運営を行えるようになります。
本プラグインは、「CMSタグチェックプラグイン」と併用することで、テンプレート編集時のミスを効果的に削減できます。
ダウンロードは下記URLから可能です。
https://saitodev.co/soycms/
/** Geminiが自動生成した概要 **/
湘南の砂浜で、キラキラと輝く雲母を見つけた筆者。白雲母か金雲母と思われるそれは、カリを含んだケイ酸塩鉱物で、元はと言えば岩石を構成していたものだ。遠く海まで流れ着くとは、自然の力は偉大だ。高校生による「相模湾の雲母の起源」という興味深い研究資料もある。
関連記事「バーミキュライトという名の薄板状粘土」では、バーミキュライトという鉱物が、熱を加えると層状に剥がれ、軽量で断熱性・保温性に優れた材料になることが紹介されている。バーミキュライトも雲母と同様に、自然の力によって生まれた不思議な鉱物である。
/** Geminiが自動生成した概要 **/
SOY Shopの顧客管理機能強化として、属性1〜3の項目名を自由に設定できるようになりました。これにより、顧客の詳細検索だけでなく、顧客一覧ページの簡易検索でも活用できます。
従来は「属性1」のような固定名称でしたが、例えば「郵便番号」「誕生日」「紹介者」など、自由に名称を設定できます。この変更により、顧客情報の管理と検索がより便利になります。
また、SOY2フレームワークではSOY Shopの顧客管理と連携できるライブラリを提供しており、ログイン機能などを簡単に実装できます。
/** Geminiが自動生成した概要 **/
SOY Shop用のモジュール版ブログ記事表示プラグインがリリースされました。このプラグインを使用すると、SOY Shopサイト内の任意のページに、SOY CMSで運営するブログの記事一覧を表示できます。
従来のブログ記事表示プラグインは、表示設定をしていないページでも処理が実行され、サイト全体のパフォーマンスに影響を与える可能性がありました。今回のアップデートでは、ブロックタグが記述されたページのみプラグインの処理が実行されるようになり、表示速度の改善が期待できます。
プラグインは下記URLからダウンロード可能です。
https://saitodev.co/soycms/soyshop/
/** Geminiが自動生成した概要 **/
SOY CMSとSOY Shopの多言語サイト構築方法を大幅に改修しました。
従来はテンプレート数増加による管理コスト増大が課題でしたが、今回は以下の改善を行いました。
* 日本語ページと英語ページで同じテンプレートを使用可能に
* 画像ファイル名に言語キーを付与することで自動切り替え
* 記事とラベルを他言語のものと紐付け可能に
これらの改善により、管理画面の簡素化、多言語サイト構築の効率化を実現しました。
新パッケージはサイトからダウンロード可能です。
/** Geminiが自動生成した概要 **/
黒曜石は、花崗岩質マグマが急冷してできたガラス質の岩石です。粘性が高く鉄が少ないため黒く見えます。鋭利に割れやすく、古代ではナイフ型石器の材料として重宝されました。
神津島産の黒曜石は、古代の人々にとって「海の彼方」と「先の尖ったもの」という二つの信仰対象を兼ね備えた特別な存在だったのかもしれません。
/** Geminiが自動生成した概要 **/
川崎重工業が開発した新型ジョークラッシャ「AUDIS JAW™」は、鉄鋼スラグ処理に特化した破砕機です。従来機に比べ処理能力が高く、大きなスラグも破砕できるのが特徴です。電気系統の省エネ化や摩耗部品の長寿命化など、環境性能と経済性に優れた設計となっています。鉄鋼スラグを有効活用する上で、破砕処理の効率化は重要な課題であり、AUDIS JAW™はその解決策として期待されています。
/** Geminiが自動生成した概要 **/
この記事は、コリンという栄養素が植物の発根に与える影響について考察しています。
著者はまず、リン酸欠乏状態の植物にホスホコリン(コリンを含む化合物)を与えると根の成長が回復するという研究結果を紹介し、植物がホスホコリンを直接吸収できる可能性を示唆しています。
さらに、ホスホコリンは大豆などに含まれるレシチンの構成成分であることから、大豆粕にホスホコリンが含まれている可能性に言及し、有機肥料としての活用に期待を寄せています。
/** Geminiが自動生成した概要 **/
魚粉肥料によく使われるイワシの成分表を見ると、旨味成分であるグルタミン酸、アスパラギン酸が多い一方で、苦味成分であるリジンも多い。もし、ネギがこれらの成分をそのまま吸収すると苦くなってしまうはずだが、実際はそうならない。つまり、魚粉肥料の効能には、単に成分が吸収される以上のメカニズムが隠されている可能性がある。
/** Geminiが自動生成した概要 **/
落葉樹の葉は、晩秋になるとタンニンを蓄積し、落葉とともに土壌へ還元されます。タンニンは植物にとって、食害から身を守る役割や、有害な微生物の活動を抑制する役割を担っています。落葉樹の葉に含まれるタンニンは、土壌中でゆっくりと分解され、植物の生育に必要な栄養分を供給するとともに、土壌の構造改善にも貢献します。このプロセスは、持続可能な森林生態系の維持に重要な役割を果たしています。
/** Geminiが自動生成した概要 **/
Ubuntu 23.04でaptのリポジトリ設定を誤って削除したため、apt updateができなくなった問題とその解決策を記述しています。
まず、ソフトウェアとアップデートのGUIツールを使ってリポジトリ設定をデフォルトに戻そうとしましたが、apt-key形式の廃止によりエラーが発生しました。
解決策として、従来の`/etc/apt/trusted.gpg`に格納されていたキーを`/etc/apt/trusted.gpg.d/`ディレクトリ以下に移動し、`/etc/apt/trusted.gpg`を削除することで、エラーを解消しました。
/** Geminiが自動生成した概要 **/
NGINX 1.25 で実験的に HTTP/3 がサポートされたことを受け、SOY CMS を NGINX で動かす手順が公開されました。手順は「NGINX 管理画面側の準備 - SOY CMSを使ってみよう」に記載されています。
SOY CMS 3.13.0 および SOY Shop 2.9.0 以降では、NGINX で SOY CMS を動かす際に必要な Apache 特有の環境変数を補完する機能が追加されました。これにより、NGINX 環境でも SOY CMS をスムーズに利用できるようになります。
/** Geminiが自動生成した概要 **/
本ブログは、埼玉・長瀞の「地球の窓」で見られる「青い石」こと緑泥石(緑色片岩)の成り立ちを解説します。この石は栽培にも重要とされ、良いミカンが育つ言い伝えもあります。緑色片岩は、海底火山の塩基性岩(玄武岩等)が変成作用を受けたものです。「緑泥石化作用」とは、熱水により黒雲母の層間構造が変化し緑泥石が形成される現象。その熱水は海底火山の噴火由来と考えられ、地質学的な側面から青い石の理解を深めるとともに、栽培との関連性を示唆しています。
/** Geminiが自動生成した概要 **/
アジサイの葉には毒があり、子供などが口にしないよう注意が必要です。中毒症状の報告はありますが、驚くべきことに、現時点で毒性成分は特定されていません。
厚生労働省によると、ヒドラシアノシドやフィブリフギンなどが候補として挙げられていますが、断定には至っていません。身近な植物でありながら、毒の正体が未解明というのは驚きです。
/** Geminiが自動生成した概要 **/
弥生時代、徳島県の加茂宮ノ前遺跡では、近畿地方との交易によって鉄器がもたらされていました。しかし、周辺で鉄鉱石を採掘した痕跡は見つかっておらず、どのように鉄を入手していたかは不明です。
記事では、鉄鉱石を探す手段として「天然磁石」の存在に着目しています。特に磁鉄鉱は、マグマが固まった後に落雷を受けると磁気を帯びるため、天然磁石として利用できます。
しかし、加茂宮ノ前遺跡周辺で磁鉄鉱の採掘跡は見つかっていません。弥生時代の徳島県の人々がどのように鉄鉱石を手に入れていたのかは、依然として謎のままです。
/** Geminiが自動生成した概要 **/
リン酸過剰な土壌に腐植酸を施用すると、土壌中の炭酸石灰とリン酸石灰を溶解し、植物が利用しやすい形に変えます。また、腐植酸はアルミニウムイオンと結合し、土壌中に留まりながらリン酸を可溶化します。さらに、腐植酸は団粒構造を促進し糸状菌を活性化、糸状菌が分泌するシュウ酸もリン酸の可溶化を助けます。そのため、腐植酸の施肥はリン酸過剰な土壌の改善に有効と考えられます。
/** Geminiが自動生成した概要 **/
ラムネ菓子に含まれるブドウ糖の製造方法について解説しています。ブドウ糖は砂糖と比べて甘味が少ないものの、脳が速やかに利用できるという利点があります。植物は貯蔵時にブドウ糖をショ糖に変換するため、菓子にブドウ糖を配合するには工業的な処理が必要です。
ブドウ糖は、デンプンを酵素で分解することで製造されます。具体的には、黒麹菌から抽出されたグルコアミラーゼという酵素を用いた酵素液化法が用いられます。かつてはサツマイモのデンプンが原料として使用されていました。
この記事では、ブドウ糖の製造がバイオテクノロジーに基づいたものであることを紹介しています。
/** Geminiが自動生成した概要 **/
ラニーニャ現象終息に伴い、今年の日本の気候はどうなるのか?を解説しています。
記事では、南米付近の海水温が日本の気候に与える影響の大きさを指摘し、気象庁のエルニーニョ/ラニーニャ現象解説ページを紹介しています。
これらのページでは、エルニーニョ/ラニーニャ現象発生時における日本の四季それぞれの天候の特徴を解説しており、今年の夏は西日本太平洋側で降水量・平均気温共に低くなる可能性が示唆されています。
栽培においては、事前に気候の予測を立てることで生産性や利益率向上に繋がるため、南米付近の海水温と日本の気候の関係性を把握しておくことが重要です。
/** Geminiが自動生成した概要 **/
SOY CMSのテンプレート編集で発生する、CMSタグの閉じタグ忘れによるエラーを防止するプラグイン「CMSタグチェックプラグイン」の紹介記事です。
記事では、CMSタグの閉じタグ忘れが原因で発生するエラーとその修正方法、タグが増えることによる確認作業の煩雑さを解説し、このプラグインによってタグの記述ミスをテンプレート更新時に検知できることを説明しています。
プラグインの導入により、製作時間の短縮などのメリットがあると期待されます。
/** Geminiが自動生成した概要 **/
SOY CMSで英語サイトを同じURLで運営したい方向けに、多言語ラベルプラグインを作成しました。
このプラグインにより、ラベルごとに日本語と英語の両方の表記を管理できます。
ただし、同一URLでの多言語サイト運営には、PHPモジュールや画像パス変換プラグインなど、追加の対応が必要です。
これらの対応が必要な方は、フォーラムからお問い合わせください。
プラグインを含むパッケージは、サイトからダウンロードできます。
/** Geminiが自動生成した概要 **/
著者は、Chromecast with Google TVでSteam Linkを使ってゲームができるか検証しました。しかし、ゲーム動作がカクカクしてしまい、原因を調査。ネットワーク速度を向上させるためにイーサネットアダプターを導入しましたが改善されず、Chromecastのスペック不足が原因と推測しました。そこでRaspberry Pi 4Bで試したところ、スムーズに動作。Chromecastのメモリ容量が影響している可能性を指摘し、他のスペックのマシンでの検証を希望しています。
追記として、Chromecastの後継機であるGoogle TV Streamerでも同様の検証を行った記事へのリンクが掲載されています。
/** Geminiが自動生成した概要 **/
この記事は、Bootstrapを用いてWebサイトのCore Web Vitalsスコアを向上させる方法を解説しています。具体的には、BootstrapのボタンコンポーネントのCSSのみを抽出し、ページHTMLにインライン挿入する方法を紹介しています。
手順としては、Bootstrapのソースファイルから必要なSCSSファイルをサイトディレクトリに配置し、SOY CMS側でSCSSコンパイルの設定を行います。これにより、ボタン用のCSSがページに直接記述され、外部ファイルの読み込みが不要になります。
さらに、生成されたCSSを圧縮してインライン化することで、ページ表示速度の向上を目指します。ただし、毎回SCSSをコンパイルするのは非効率なので、CSSやページ全体のキャッシュ化が推奨されています。
/** Geminiが自動生成した概要 **/
SOY CMSにSCSSコンパイラを実装する方法を解説した記事です。scssphpを用い、ページ出力時にSCSSファイルをコンパイルして表示するモジュールを作成します。具体的な手順としては、scssファイルを配置し、モジュールにコンパイル処理を記述します。記事ではサンプルコードも紹介されており、ダウンロード可能なパッケージも提供されています。@importの記述に誤りがなくstyle.cssが空の場合、pscssに実行権限を与える必要がある場合があります。
/** Geminiが自動生成した概要 **/
SOY CMS用のAVIF変換プラグインがリリースされました。このプラグインは、PHPのimageavif関数を利用し、ページ内のJPG/PNG画像をAVIF形式に変換、HTMLを書き換えます。AVIFは次世代の画像フォーマットで、高画質・低容量を実現します。プラグインはimageavif関数が使用可能なPHPバージョンで動作します。ダウンロードは公式サイトからどうぞ。なお、SOY Shopでは類似機能が「画像フォーマット変換プラグイン」に搭載済みです。
/** Geminiが自動生成した概要 **/
SOY CMS用WebP変換プラグインが登場!ページ内のJPG/PNG画像をWebPに変換し、HTMLを書き換えます。WebPは次世代画像フォーマットで、ファイルサイズを小さくしながら画質を維持します。PHPのimagewebp関数が使用可能な環境が必要です。ダウンロードは公式サイトからどうぞ。なお、SOY Shopには同様の機能を持つ「画像フォーマット変換プラグイン」が存在します。
/** Geminiが自動生成した概要 **/
記事では、PageSpeed Insightsのユーザー補助スコアを100点にするための取り組みが紹介されています。
具体的には、記事タイトル下のカテゴリ名のリンクで指摘されていた「背景色と前景色には十分なコントラスト比がありません」という問題を解決しています。
解決策としては、WebAIMのConstract Checkerを用いて、背景色と文字色のコントラスト比を調整しました。スライダーで色を調整し、Passになるまで繰り返した結果、問題を解消できました。
ただし、サムネイル画像の低解像度に関する指摘は未解決で、別の対応策を検討する必要があるとのことです。
/** Geminiが自動生成した概要 **/
SOY CMSの管理画面に、IPアドレス制限機能が追加されました。
従来の.htaccessによる制限だと、出張先などIPアドレスが異なる場所からアクセスする際に、都度設定変更が必要でした。
新機能では、管理画面から一時的に制限を解除する「アンロック」が可能になり、利便性が向上しました。
解除方法は、セキュリティに配慮し、URLを手動で作成する方式を採用しています。
今回のアップデートにより、柔軟かつ安全な管理画面へのアクセス制限が可能になりました。ダウンロードは公式サイトからどうぞ。
/** Geminiが自動生成した概要 **/
SOY CMS用のユーザー補助プラグインが開発されました。このプラグインは、画像のalt属性が空の場合に自動でファイル名を挿入することで、WebアクセシビリティとSEOを向上させます。PageSpeed Insightsで新たに導入されたユーザー補助項目に対応し、既存記事の修正や新規記事作成時の負担を軽減します。プラグインはサイト管理者の負担を軽減し、ウェブサイトのアクセシビリティ向上に貢献します。ダウンロードは[https://saitodev.co/soycms/](https://saitodev.co/soycms/)から可能です。
/** Geminiが自動生成した概要 **/
腸管上皮細胞の糖鎖は、そこに常駐する腸内細菌叢の組成に影響を与えます。母乳栄養児では、母乳オリゴ糖がビフィズス菌の増殖を促し、腸内環境を整えます。離乳後、多様な糖鎖を発現するようになり、複雑な腸内細菌叢が形成されます。腸内細菌叢は、宿主の免疫系や代謝、神経系にも影響を与え、健康維持に重要な役割を果たします。糖鎖と腸内細菌叢の相互作用は、宿主の健康に深く関わっています。
/** Geminiが自動生成した概要 **/
腐植酸は土壌中のリン酸固定を抑制する効果があります。腐植酸はアルミニウムイオンと結合し、土壌からリン酸と結合しやすいアルミニウムを減らすためです。ラッカセイ栽培では、腐植と石灰を施用することで、リン酸の有効性を高め、ラッカセイのポテンシャルを引き出す可能性があります。
/** Geminiが自動生成した概要 **/
SOY CMSで記事の文字列を一括置換できるプラグインが開発されました。
大量の記事の中から特定の誤字などを修正する際に、一記事ずつ修正するのは大変な作業です。このプラグインは、指定した文字列を別の文字列に一括で置換することができます。
例えば、「即効性」という誤字を「速効性」に一括で修正する場合などに役立ちます。
プラグインには、置換前に誤字を含む箇所を確認する機能も備わっています。
このプラグインは、開発元のサイトからダウンロードできます。
/** Geminiが自動生成した概要 **/
2007年リリースのSOY CMSには、あまり知られていない機能が存在します。それは、プラグイン管理画面に表示される各プラグインのアイコンをカスタマイズできる機能です。
初期状態ではすべてのプラグインのアイコンが豆蔵アイコンになっていますが、128x128ピクセルのGIF画像を「icon.gif」というファイル名でプラグインディレクトリに配置することで、任意のアイコンに変更できます。
これはリリース当初から存在する機能でしたが、当時のプラグイン数は少なく、あまり活用されませんでした。しかし、10年以上経過しプラグイン数が増加した現在、この機能を活用することで、目的のプラグインを見つけやすくなる可能性があります。
/** Geminiが自動生成した概要 **/
Raspberry PiにScratch3.0の開発環境を構築する方法を解説しています。
Node.jsのバージョンはScratch3.0との互換性のため14.20.1を使用し、パッケージ管理にはYarnを採用しています。
まずNode.jsとnpmをインストール後、nを使ってNode.jsのバージョンを管理します。次に、scratch-vmとscratch-guiのリポジトリをクローンし、yarn linkとyarn installコマンドで依存関係を解決します。
最後にyarn startコマンドでVMを起動し、ブラウザからhttp://localhost:8601/ にアクセスするとScratch3.0の画面が表示されます。
記事ではyarn installに時間がかかること、エラーが発生しても問題ない場合があることなど、注意点も解説されています。
/** Geminiが自動生成した概要 **/
SOY CMSのブログ記事JSON出力プラグインがアップデートされ、記事一覧の出力が容易になりました。
今回のアップデートにより、JSON出力に以下の値を含めることが可能になりました。
* 記事のパーマネントリンク
* 本文の一部または冒頭数文字
* サムネイル画像のパス
* カスタムフィールドの値
これらの値はGETパラメータで出力の有無を指定できます。これにより、JavaScriptでJSONを取得し、記事一覧を動的に生成することが可能になります。
例えば、記事のURL、本文の冒頭50文字、サムネイル画像のパスを含めたJSONを取得する場合は、以下のようなURLでアクセスします。
```
https://example/site/1.json?limit=1&content=50&is_url=1&thumbnail
```
アップデート版のプラグインは、以下のサイトからダウンロードできます。
https://saitodev.co/soycms/
/** Geminiが自動生成した概要 **/
この記事は、Minecraft: Pi Edition: Reborn (MCPI++) のSDKを使って、ゲームに「ゴールデンシャベル」を追加する方法を解説しています。
まず、MCreatorを使って16x16ピクセルのゴールデンシャベルのアイコン画像を作成し、既存のitems.pngに挿入します。次に、C++で書かれたgoldenshovel.cppを作成し、アイテムの追加、アイコンの設定、ゲーム内での表示名などを定義します。最後に、CMakeを使ってコードをコンパイルし、生成されたライブラリファイルをmodsディレクトリに配置することで、ゴールデンシャベルがゲームに追加されます。
記事では、コードの各部分がどのような役割を持っているか、また画像ファイルやCMakeLists.txtの設定方法などが詳しく解説されています。
/** Geminiが自動生成した概要 **/
Minecraft: Pi Edition: Reborn (MCPI) の拡張SDKを使い、ターミナルに"Helloworld"を出力する手順を紹介しています。
まずMCPI++ 2.4.3-3をインストールし、C++コンパイラなどの開発環境を整えます。
次に、"Helloworld"を出力するコードを記述した"hello.cpp"を作成し、共有ライブラリとしてコンパイル、MCPIのmodsディレクトリに配置します。
MCPIを実行すると、起動時に"Helloworld"が出力されます。これは、共有ライブラリ内の特定の関数がエントリポイントとして機能するためです。
記事では最後に、ゲーム画面に影響を与えるコードの作成に意欲を示しています。
/** Geminiが自動生成した概要 **/
SOY CMSユーザーからブログページ設定に説明文追加の要望があり、ページカスタムフィールドプラグインを作成しました。このプラグインは、ブログページ以外の標準ページにも項目を追加できます。
追加項目は公開側表示と管理画面メモ双方を想定し、公開側表示速度への影響を抑えるため、cms:moduleを介して出力します。
公開側での使用方法詳細はプラグイン詳細画面に記載しています。
対応パッケージは下記サイトからダウンロード可能です。
https://saitodev.co/soycms/
/** Geminiが自動生成した概要 **/
SOY CMSのブロック(ラベル、プラグイン)に、カスタムフィールドの拡張ポイント実行有無を設定する機能が追加されました。
従来、カスタムフィールドが増えるとブロックのパフォーマンスが低下する問題がありました。今回の更新により、不要なカスタムフィールドの値取得を抑制し、表示速度の改善が可能となります。
例えば、新着記事一覧でタイトルとリンクのみ表示する場合、カスタムフィールドの取得をオフにすることで効率化できます。
今回の更新は、長期間運用しているサイトでカスタムフィールドが肥大化している場合に特に有効です。ダウンロードはsaitodev.co/soycms/から可能です。
/** Geminiが自動生成した概要 **/
ChromebookのCrostiniでMicro:bitのフラッシングを行う際、Crostiniは仮想環境のためUSBを直接認識できない。そこで、Crostini上のMicro:bitの認識先である`/mnt/chromeos/removable/MICROBIT/`を`uflash`コマンドのターゲットとして指定することでフラッシングが可能になる。
/** Geminiが自動生成した概要 **/
SOY CMSでカテゴリを分類分けして出力したい場合に便利なモジュールが新たに開発されました。
このモジュールを使用すると、サイトの設定で「ラベルのカテゴリ分け」を有効化し、カテゴリを分類分けして作成することで、テンプレート上で分類名ごとにカテゴリ一覧を出力できます。
モジュールの設置は、テンプレート編集画面で所定のコードを記述するだけで完了します。標準ページに設置する場合はブログページIDの指定が必要です。
詳細な使用方法やダウンロードは、以下のサイトをご確認ください。
- SOY CMS公式サイト: https://saitodev.co/soycms/
/** Geminiが自動生成した概要 **/
SOY CMSのブログ記事にプレビュー機能を追加するプラグインが開発されました。記事投稿画面にプレビュー用のURL設定欄が追加され、確認ボタンを押すと、稼働中のブログページのデザインそのままに記事の内容を確認できます。プレビュー中はGoogle Analyticsのタグは出力されません。このプラグインにより、これまでプレビュー用の別ページを用意する必要があった手間が省けます。ダウンロードは開発元のサイトから可能です。
/** Geminiが自動生成した概要 **/
SOY CMSで、サイトを一つ深い階層に作成する方法を解説します。
まず、サイトIDを「hoge」として、/var/www/html/hogeにサイトを作成します。次に、/var/www/html/hoge/huga のように、hugaディレクトリを作成し、必要なファイルを配置します。
データベースのSiteテーブルを開き、サイトIDが「hoge」のレコードのurlとpathを、それぞれ `http://example.com/hoge/huga/` と `/var/www/html/hoge/huga/` に変更します。
最後に、/var/www/html/hoge/huga/.htaccess の RewriteBase を `/hoge/huga` に変更します。
稼働中のサイトのURLを変更する場合は、上記の手順に加えて、SOY CMS管理画面でサイトURLを変更する必要があります。
/** Geminiが自動生成した概要 **/
## プログラミング教育で注目すべきはARM + Debian + Pythonであるはずだ
**要約**
近年、プログラミング教育の重要性が高まる一方で、環境構築の難しさや高額な機材が課題となっています。そこで注目すべきは、安価で入手しやすい「Raspberry Pi」を教材として活用することです。
Raspberry PiはARMアーキテクチャを採用した小型コンピュータで、DebianベースのOSが動作します。Pythonは初学者にも扱いやすい言語として人気があり、Raspberry Piとの相性も抜群です。
Raspberry PiとPythonを組み合わせることで、電子工作やIoTなど、実用的で興味深い教材を開発できます。さらに、Linuxやオープンソースの文化に触れることで、生徒の技術的な興味関心をさらに広げることが期待できます。
/** Geminiが自動生成した概要 **/
SOY CMSのカノニカルURL挿入プラグインに、shortlinkメタタグを自動挿入する機能が追加されました。記事公開時に生成される長いURLと短いURLの混乱を避けるため、カノニカルURLに加えてshortlinkメタタグを自動で挿入します。
従来は記事タイトルをrawurlencodeした長いURLが生成されていましたが、記事IDを付与した短いURLも同時に生成されます。この場合、検索エンジンがどちらのURLを優先してインデックスするか不明瞭になるため、カノニカルURLとshortlinkメタタグで明示する必要があります。
今回のアップデートにより、カノニカルURLメタタグの下にshortlinkメタタグが自動挿入されるようになり、SEO対策が強化されます。アップデートパッケージはサイトからダウンロード可能です。
/** Geminiが自動生成した概要 **/
この記事は、Ubuntu 22.04 LXDE環境でデスクトップにFirefoxのアイコンを設置できない問題を解決する方法を解説しています。
問題はsnap版Firefoxをインストールした場合に発生し、デスクトップエントリを作成することで解決できます。
手順としては、
1. `/usr/share/applications/firefox.desktop` ファイルを作成し、必要な情報を記述します。
2. メニューからFirefoxを見つけて右クリックし、「デスクトップに追加」を選択します。
これにより、デスクトップにFirefoxのアイコンが設置されます。記事ではデスクトップエントリの詳細についても触れています。
/** Geminiが自動生成した概要 **/
土壌診断における腐植の測定は、かつては土色や化学反応を利用した方法が主流でしたが、現在では乾式燃焼法が一般的になりつつあります。
乾式燃焼法では、土壌サンプルを高温で完全燃焼させ、発生した二酸化炭素量を測定することで、土壌中の炭素量を算出します。さらに、同時に発生する窒素量も測定することで、土壌の炭素と窒素の比率を把握することができます。
この方法は、従来の方法に比べて迅速かつ簡便であるため、多くの土壌分析機関で採用されています。ただし、測定には専用の装置が必要となるため、コストがかかる点がデメリットとして挙げられます。
/** Geminiが自動生成した概要 **/
ChromebookでOpenVPN Connectを使ってVPN接続する手順のメモ。必要な証明書ファイル等をPlayファイル内のAndroidディレクトリに作成したフォルダに配置し、OpenVPN ConnectアプリでOVPNファイルを読み込むことで接続できた。Playファイルはアプリから参照できるディレクトリがダウンロードのみのため、誤操作防止のためAndroidディレクトリ内にフォルダを作成して証明書を配置した。
/** Geminiが自動生成した概要 **/
SOY CMS用ブログ記事JSON出力プラグインが登場!非同期で記事一覧を表示したいという要望に応え、軽量でサーバ負荷の少ないJSON出力を実現しました。ページャ機能もGETパラメータで簡単に実装できます。
例えば、10件ずつ記事を表示する場合、以下のURLでアクセスできます。
- https://saitodev.co/2.json?limit=10&offset=0
- https://saitodev.co/2.json?limit=10&offset=1
その他便利な機能も充実!詳細はSOY CMSプラグイン詳細画面をご覧ください。ダウンロードは https://saitodev.co/soycms/ からどうぞ。
/** Geminiが自動生成した概要 **/
SOY Shopの顧客情報入力画面で、番地を必須入力項目にするためのプラグインを作成しました。
従来は「町番地」項目が一体だったため、番地無しでも入力が完了してしまう問題がありました。
このプラグインでは、住所項目を「町名」と「番地」に分離し、それぞれを必須項目に設定できます。
これにより、番地入力を徹底し、住所情報の精度向上を実現します。
プラグインは下記URLからダウンロード可能です。
https://saitodev.co/soycms/soyshop/
/** Geminiが自動生成した概要 **/
「Soil & Geoロガー」がOpenStreetMap APIを使って改良されました。以前はGoogle Maps APIを使用していましたが、OpenStreetMap APIに切り替え、地図表示と位置情報の取得を簡素化しました。これにより、地図上の任意の場所をクリックするだけで、その地点の緯度経度を取得し、土壌情報と地質情報へのリンクを生成します。さらに、オフライン機能を提供していたIndexedDBとサービスワーカーAPIは、インターネット接続環境の向上により廃止されました。この改良により、土壌情報と地質情報へのアクセスが容易になり、施肥設計や地域資源の活用に役立ちます。
/** Geminiが自動生成した概要 **/
この記事は、AppImage形式になったMinecraft: Pi Edition: Rebornでスキンを変更する方法を解説しています。
まず、AppImageファイルを実行する準備として、`chmod`コマンドで実行権限を与え、`fuse`パッケージをインストールします。
スキンの変更は、`~/.minecraft-pi/overrides/images/mob/`ディレクトリに`char.png`という名前でスキンファイルを配置します。
ただし、このままだとスキンが崩れてしまうため、`minecraft_skin_fixer.py`というスクリプトを使って修正します。
最後に、AppImageファイルを`/usr/local/bin`に移動して`mcpi`というコマンド名で実行できるように設定しています。
/** Geminiが自動生成した概要 **/
この記事は、Minecraft: Pi Edition: Rebornでスキンを変更する方法を解説しています。
まず、好みのスキンをダウンロードします。次に、標準のスキンのPNGファイル(char.png)をバックアップし、ダウンロードしたスキンで置き換えます。この際、ファイルパスに注意が必要です。
スキンを変更後、デザイン崩れが発生する場合は、Pythonスクリプト(minecraft_skin_fixer.py)を使用して修正します。スクリプト内のファイルパスを自身の環境に合わせて変更する必要があります。
修正後、Minecraft: Pi Edition: Rebornを再起動すると、スキンが変更されているはずです。
/** Geminiが自動生成した概要 **/
この記事は、BBC Micro:bitのプルダウン抵抗の機能について解説しています。
最初に、`pin0.get_pull()`を使ってプルダウン抵抗の状態を取得しようとしますが、GPIOピンが未使用の状態ではエラーが発生します。
次に、`pin0.read_digital()`を実行すると、自動的にプルアップ抵抗が設定されることがわかります。
最後に、`pin0.set_pull(pin0.PULL_DOWN)`を使って明示的にプルダウン抵抗を設定し、外部のプルダウン抵抗なしでも動作することを確認しています。
記事では、プルアップ抵抗、プルダウン抵抗、ノー・プルそれぞれの状態に対応する`get_pull()`の戻り値 (0, 1, 2) も紹介されています。
/** Geminiが自動生成した概要 **/
マイクロビットのGPIOピンを安定させるにはプルダウン抵抗が有効です。スイッチOFF時はプルダウン抵抗によりGPIO 0はLOW状態を保ちます。スイッチON時はGPIO 0に電流が流れ、信号が送られます。プルダウン抵抗はショート(短絡)を防ぐため、一般的に10kΩの抵抗が使われます。プルアップ抵抗はスイッチと抵抗の位置が逆になり、スイッチOFF時はGPIO 0がHIGH、スイッチON時はLOWになります。
/** Geminiが自動生成した概要 **/
BBC Micro:bitのGPIOピンを使ってDCモーターを動かそうとしたが、電圧不足のため動かなかった。そこでトランジスタを使って電圧を上げることを試みた。書籍を参考に青色LEDをトランジスタで点灯させる回路を組んだところ、LEDは点灯したものの、DCモーターは動作しなかった。トランジスタについて更に学習する必要があると考えられる。
/** Geminiが自動生成した概要 **/
この記事は、ChromebookのScratchでBBC Micro:bitを動かす方法を解説しています。
まず、Google PlayからScratchをインストールし、Scratch用マイクロビットのHEXファイルをダウンロードしてマイクロビットに転送します。
次に、Scratchの拡張機能でmicro:bitを選択し、接続を確立します。
記事では、接続確認のため、マイクロビットのAボタンを押すと音が鳴るプログラムを作成・実行しています。
最後に、小学一年生には漢字が読めないため、ひらがなモードのScratchが必要だと述べています。
/** Geminiが自動生成した概要 **/
SPI通信のモードは、クロック極性(CPOL)とクロック位相(CPHA)の組み合わせで決まります。CPOLはクロックのアイドル状態(0か1)を、CPHAはデータ取得がクロックの立ち上がり edge か、立ち下がり edge かを示します。組み合わせは4種類あり、モード0(CPOL=0, CPHA=0)からモード3(CPOL=1, CPHA=1)まで存在します。
/** Geminiが自動生成した概要 **/
本稿では、SPI通信におけるSSとSCLKの役割を解説しています。SSはスレーブ選択信号で、LOWにすることで特定のスレーブとの通信を有効化します。SCLKはクロック信号であり、この規則的なHIGH/LOW変化を基準に同期してMOSI/MISOでのデータ送受信が行われます。
具体的には、SS1をLOWにし、SCLK信号に合わせてデータ送受信を行う例を図解で示しています。
今回のSPI通信解説により、以前の記事で扱ったESP8266,Raspberry Piを用いたソケット通信やUARTと合わせて、IoTにおけるセンサーデータ取得から遠隔地への送信までの仕組みの理解が深まります。
/** Geminiが自動生成した概要 **/
SPI通信について、マスタースレーブ構成、データ送受信の流れ、シフトレジスタによるデータの受け渡しなど、具体的な例を挙げながら解説しています。\
特に、8ビットデータ転送を図解で示し、LSB、MSB、MOSI、MISOといった用語を用いながら、マスターとスレーブ間におけるデータの移動を詳細に説明しています。\
最後に、Raspberry PiとAD変換器を用いたSPI通信のコード例を紹介し、次回の記事ではシフトレジスタの仕組みやSSの役割について解説することを予告しています。
/** Geminiが自動生成した概要 **/
SPIは、マスター機器が複数のスレーブ機器と通信する規格です。マスターはSCLK, MISO, MOSI, SSの4つの信号線でスレーブと接続します。SSはスレーブ選択線で、マスターはHIGH/LOWを切り替えることで、どのスレーブと通信するかを選びます。複数のスレーブを接続する場合、マスター側にスレーブ数分のSS(GPIOピン)が必要です。SSは通信開始と終了の合図にもなります。
/** Geminiが自動生成した概要 **/
Pythonではビット否定演算子~を使うと、整数のビット反転ではなく、**負数の表現**として用いられます。
記事中の例では、13 (~0b1101) のビット否定は、-14 (-0b1110) となります。これはPythonが整数を**符号付き2進数**で表現しているためです。符号付き2進数では、最上位ビットが符号を表し、残りのビットが数値を表します。
ビット反転を行うには、ビット演算とマスクを組み合わせる必要があります。単にビット反転を行うだけであれば、`~` 演算子ではなく、各ビットを反転する関数を定義する方が分かりやすいかもしれません。
/** Geminiが自動生成した概要 **/
この記事は、ESP8266をUARTの受信側としてRaspberry Piと通信する方法を解説しています。
前回の記事ではESP8266から送信したデータにREPLの情報が含まれていましたが、今回は受信側にすることでREPL情報を含まないデータを受信できることを確認しています。
具体的には、ESP8266側で受信したデータを少し変更してRaspberry Piに送り返すPythonコードを記述し、Raspberry Pi側では"send from pi."というメッセージを繰り返し送信するPythonコードを記述しています。
その結果、Raspberry Pi側で"received:send from pi."というメッセージが表示され、REPL情報を含まないデータが受信できていることが確認できました。
/** Geminiが自動生成した概要 **/
BBC Micro:bit (microbit) の UART 通信では、microbit から Raspberry Pi へのデータ送信と、その逆の受信が可能。microbit は `uart.any()` 関数を使用して受信データを待ち受け、Raspberry Pi はシリアルポートを介して通信する。データの送受信を確実に行うには、microbit と Raspberry Pi 間の TX/RX ピンの正しい接続と、双方で一致するボーレートの設定が重要。また、microbit では `uart.init(115200)` を使用してシステムを初期化することも推奨される。これらの手順に従うことで、microbit と Raspberry Pi 間の双方向 UART 通信を実現できる。
/** Geminiが自動生成した概要 **/
この記事は、二台のコンピュータ間でローカルネットワークを通じてソケット通信を行う方法を解説しています。
まず、Raspberry Piをサーバー側にして、そのローカルIPアドレスを調べます。次に、Pythonで記述したサーバープログラムを、調べたIPアドレスを使って修正します。クライアント側にはLinuxマシンを使用し、同様にローカルIPアドレスを調べます。
その後、クライアントプログラムを実行し、サーバープログラムが実行されているRaspberry PiのIPアドレスとポート番号を指定して接続します。
記事では、接続が成功したことを確認後、NodeMCUとRaspberry Piでのソケット通信に進むことを示唆しています。
/** Geminiが自動生成した概要 **/
NodeMCUを使ってHTTP GETリクエストを試行した記録です。
記事では、MicroPythonのソケット通信を使って"http://www.example.com/"にGETリクエストを送信し、"200 OK"レスポンスとHTMLを取得できました。
しかし、"https://saitodev.co/"のようにHTTPSのURLでは失敗しました。これは、HTTPS通信に対応するためにコードを修正する必要があるためです。
記事では、将来WiFi経由でデータ送信を行う際にHTTPS通信が必要になると述べています。
/** Geminiが自動生成した概要 **/
この記事は、NodeMCU(ESP8266)をWiFiのアクセスポイントにする方法を解説しています。
筆者は、サンプルコードを参考に、NodeMCUにWiFi接続とアクセスポイント設定のコードを記述し実行しました。
その結果、コードに記述した「ESP-AP」という名前のアクセスポイントが作成されたことを確認しました。
しかし、パスワードが設定されていないため、現時点では接続できない状態です。
記事では、引き続きWiFi用語の解説や接続方法について掘り下げていくことを示唆しています。
/** Geminiが自動生成した概要 **/
ESP8266 NodeMCUモジュールにMicroPythonファームウェアをインストールするには、esptoolツールを使用します。ファームウェアのbinファイルをダウンロードし、`esptool`コマンドを使用してフラッシュを消去してから、新しいファームウェアを書き込みます。
ファームウェアがインストールされたら、Thonny IDEを使用してLチカプログラムを作成します。ThonnyをESP8266に接続し、`main.py`という名前でプログラムを保存します。プログラムを実行すると、NodeMCUのLEDが点滅します。
/** Geminiが自動生成した概要 **/
この記事では、Raspberry PiにpHメーターPH4502Cを接続し、pHのアナログ値をデジタル値に変換して取得する方法を解説しています。
筆者は、MCP3208というAD変換器を用い、GPIO Zeroのライブラリを使ってRaspberry Piで値を読み取っています。
記事内では、回路図やコード例、実験中の問題点と解決策が詳しく説明されています。
最終的には、水道水のpHを測定し、約2.8Vの電圧値を得ることに成功しましたが、値のばらつきが課題として残りました。
筆者は、今後さらに知識を深め、GPIO Zeroを使わない方法やpH測定の精度向上に取り組む予定です。
/** Geminiが自動生成した概要 **/
施設栽培で鉄欠乏が起きると、収量低下や品質低下に繋がるため注意が必要です。鉄欠乏は初期症状の見落としが課題となります。本記事では、鉄欠乏の症状と対策、そして早期発見に役立つ簡易的な測定方法について解説しています。初期症状は葉脈間が黄化するクロロシスで、進行すると葉全体が白化し、枯死に至ることもあります。対策としては、pH調整や鉄資材の施用が有効です。早期発見には、葉緑素計を用いた測定が有効で、数値の低下は鉄欠乏の初期段階を示唆します。日々の観察と葉緑素計による測定を組み合わせることで、鉄欠乏を予防し、収量と品質を確保しましょう。
/** Geminiが自動生成した概要 **/
この記事では、Raspberry PiのPWM機能を使ってサーボモーターを制御する方法を解説しています。
サーボモーターは、パルス幅によって回転角度を制御することができます。この記事では、GeekServo 9G Servo-Grayというサーボモーターを使用し、GPIO 12に接続して制御しています。
コードでは、RPi.GPIOライブラリを使ってPWM信号を生成し、ChangeDutyCycle()関数でデューティ比を変更することで、サーボモーターの回転角度を制御しています。
具体的には、デューティ比2.5%で-45度、7.25%で90度、12%で225度回転するように設定されています。
/** Geminiが自動生成した概要 **/
記事では、Raspberry PiとLEDを用いて、PWM(パルス幅変調)による疑似アナログ信号の生成と、その効果について解説しています。PWMは、デジタル信号のパルス幅を調整することで、見かけ上アナログ信号のような出力を行う技術です。記事では、パルス幅を徐々に変化させることで、LEDの明るさが滑らかに変化する様子を「ホタルの光」に例えています。 具体的には、Pythonコードを用いてPWMのデューティ比を周期的に変化させることで、LEDの明るさを制御し、ホタルの点滅のような効果を実現しています。
/** Geminiが自動生成した概要 **/
この記事は、生物系出身でRaspberry Piに挑戦している筆者が、パルス幅変調(PWM)を学ぶ過程を記述しています。
まず、LEDの点灯と消灯を繰り返すLチカを通して、HIGH(電気が流れる状態)とLOW(電気が流れない状態)について学びます。次に、PWMの概念、周期、パルス幅、デューティ比について解説し、PWMを用いたLEDの明るさ制御に挑戦します。
具体的なコード例を示しながら、デューティ比を徐々に上げることでLEDが明るくなる様子を観察し、PWMによる制御を体感します。最後に、HIGHはデューティ比100%の状態であり、デューティ比が低くても実際には高速で点滅しているため暗く見えることを補足しています。
/** Geminiが自動生成した概要 **/
Fritzingというアプリを使えば、電子回路の回路図が簡単に作成できます。Raspberry Piなど、様々な電子部品がパーツとして用意されており、ドラッグ&ドロップで配置できます。標準パーツにない場合は、ネットから追加することも可能です。例えば、Raspberry Pi 4 Model Bのパーツは、フォーラムで共有されているfzpzファイルをダウンロードしてインポートすることで使用できます。
/** Geminiが自動生成した概要 **/
SOY CMS用のWordPress記事インポートプラグインが新しく開発され、WordPressの記事をSOY CMSに移行することが可能になりました。
このプラグインは、WordPressのデータベースからSQLiteまたはMySQLのSOY CMSデータベースに最大2500件の記事を移行できます。ただし、現時点ではWordPressの「記事の抜粋」フィールド(post_excerpt)の処理方法が確定していません。
このプラグインの使用を検討しており、「記事の抜粋」の取り扱いについて希望がある場合は、SOY Boardフォーラムにご連絡ください。プラグインを含むパッケージは、saitodev.coからダウンロードできます。
/** Geminiが自動生成した概要 **/
昔はたくさん見られた秋の七草のカワラナデシコが、最近はほとんど見られなくなったことを疑問視し、その理由を探っています。
かつては、人々が里山で草刈りや枝打ちなどを行い、カワラナデシコが生育しやすい日当たりの良い環境を維持していました。しかし、生活様式の変化とともに、そうした人為的な環境管理が行われなくなり、カワラナデシコの生育地が減ってしまったと考えられています。
記事では、過去の記事と比較して、知識の蓄積により物事の見方が変化したことを実感したと述べています。
/** Geminiが自動生成した概要 **/
く溶性苦土の水溶性化とは、土壌中の植物が吸収しにくい形の苦土(く溶性苦土)を、吸収しやすい形(水溶性苦土)に変えるプロセスです。このプロセスは、土壌の酸性度と密接に関係しています。土壌が酸性化すると、水素イオンが増加し、く溶性苦土と結合していたカルシウムやマグネシウムが土壌溶液中に溶け出す「交換反応」が起こります。これにより、く溶性苦土が水溶性化し、植物に吸収されやすくなるのです。
/** Geminiが自動生成した概要 **/
硫安などの化学肥料は土壌に悪影響を与えるという俗説がありますが、実際には土壌構造を直接破壊することはありません。
記事では、有機物が豊富な黒い土壌層が、化学肥料の使用によりやがて下の層のように有機物の少ない状態に戻るのかという疑問が提起されています。
そして、硫安のような強い酸性肥料が、土壌粒子と腐植酸の結合を断ち切り、腐植酸を土壌深くに流出させる可能性について考察しています。
しかし、化学肥料の多くは土壌構造を破壊するような直接的な作用を持たないことが補足されています。
結論としては、化学肥料が土壌に与える影響は複雑であり、一概に土壌を壊すと断言することはできません。
/** Geminiが自動生成した概要 **/
この記事では、Raspberry PiとI2C接続のLCDディスプレイを使って文字列を表示する方法を解説しています。
まず、Raspberry Piの設定でI2Cを有効化し、LCDのI2CモジュールをGPIOピンに接続します。接続が正しければ、「i2cdetect -y 1」コマンドでI2Cアドレスが表示されます。
次に、OSOYOOのライブラリ「i2clcda.py」を使ってPythonコードを作成し、LCDに文字列を表示します。コードでは、ライブラリをインポート後、「lcd_init()」でLCDを初期化し、「lcd_string()」関数で文字列と表示位置を指定して出力します。
表示されない場合は、I2Cモジュールのポテンショメータを調整してコントラストを調整する必要があります。
/** Geminiが自動生成した概要 **/
この記事では、Raspberry PiとBBC Micro:bit間でUSB経由のシリアル通信を行う方法を解説しています。
従来のUART通信と異なり、USB接続ではRaspberry Pi側のシリアルポート設定が不要です。Micro:bit側で温度データを送信するコードを作成し、Raspberry Pi側では"/dev/ttyACM0"をデバイス、"115200"をボーレートとしてシリアル通信を設定します。
これにより、Raspberry Pi側でMicro:bitから送信された温度データを受信し、コンソールに表示することができます。USB接続は、GPIOの使用状況に影響されず、より簡便な方法と言えます。
/** Geminiが自動生成した概要 **/
Micro:bitとサーボモーターを使って環境制御の基礎を学ぶ記事。サーボモーターの角度制御をMicro:bitのプログラムから行う方法を紹介。Muエディタを使用し、角度を指定するシンプルなコードから、連続的な動きや特定角度への移動、アナログ入力による制御まで段階的に解説。具体的な接続方法やコード例、ライブラリの活用法も示し、初心者にも分かりやすくサーボモーター制御の基礎を習得できる内容となっている。最終的には、植物育成ライトの角度調整といった具体的な応用例も示唆し、環境制御への応用を促している。
/** Geminiが自動生成した概要 **/
SOY Shopのタグクラウドプラグインに、タグ候補のカテゴリ分け機能が追加されました。タグ数増加に伴うユーザビリティ向上のため、候補をカテゴリで絞り込めるようになりました。アップデート版パッケージはsaitodev.co/soycms/soyshop/からダウンロード可能です。以前公開されたタグクラウドプラグイン(記事ID:4008)の機能拡張となります。
/** Geminiが自動生成した概要 **/
麦茶を煮出し、冷やしたものを容器に注ぐと泡立つことがある。これはサポニンによる界面活性作用だけでなく、麦茶に含まれるアルキルピラジン類の化合物も影響している。カゴメの研究によると、この化合物は焙煎時のメイラード反応で生成され、血液流動性向上作用を持つ。つまり、麦茶の泡立ちと香ばしさは、健康 benefits に繋がる成分によるものと言える。メーカーによって泡立ち具合が違うのは、アルキルピラジン類の含有量が違うためと考えられる。
/** Geminiが自動生成した概要 **/
SOY CMSの履歴自動削除プラグインが公開されました。記事とテンプレートの古い履歴を任意の日付で一括削除、または個別に残す履歴件数を指定できます。記事履歴のみ自動削除、テンプレートは保持といった個別設定も可能です。SQLite版ではSQLite VACUUMプラグインと併用でサーバー負荷軽減が期待できます。利用時はデータベースのバックアップ推奨(SQLite版は専用プラグインあり、MySQL版は無し)。パッケージはsaitodev.co/soycms/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
ヤシャブシの葉は、水田の肥料として古くから利用されてきた。その肥効は、葉に含まれる養分だけでなく、鉄分供給による窒素固定促進の可能性がある。水田土壌には鉄還元細菌が存在し、鉄を利用して窒素ガスをアンモニアに変換する。ヤシャブシの葉に含まれるタンニンは鉄とキレートを形成し、鉄還元細菌の働きを助ける。さらに、キレート鉄はイネにも吸収されやすく、光合成を活性化し、養分吸収を高める。結果として、窒素固定の促進と養分吸収の向上という相乗効果で、イネの生育が促進されると考えられる。この仮説は、ヤシャブシの葉の伝統的な利用方法を科学的に説明する可能性を秘めている。
/** Geminiが自動生成した概要 **/
トマトの摘葉は、果実への栄養供給を高め秀品率向上に繋がる。摘葉の目安として葉面積指数(LAI)を用いる。LAIは床面積1㎡あたりの葉の表面積で、理想値は4。LAI4を目指す摘葉で、利用可能な光を最大限活用できる。ただし、単に葉面積を増やすだけでなく、葉同士の重なりを減らし、下の葉にも光が当たるよう配置することが重要。LAI値の測定は複雑だが、宮城県農業・園芸総合研究所の資料が参考になる。実用上は、LAI値に対応した樹形を把握するのが有効と考えられる。
/** Geminiが自動生成した概要 **/
Google Maps APIのジオコーディングをOpenStreetMapのNominatimに書き換えた。エンドポイントとJSONレスポンスの差異に対応するだけで比較的容易に移行できた。NominatimはAPIキー不要で回数制限もない。しかし、Google Maps APIと比べて検索速度が遅く、曖昧な地名検索の精度や郵便番号検索の網羅性で劣る。Google Maps APIは検索速度と精度の面で優れているが、費用と回数制限が課題となる。Nominatimは無料だが、パフォーマンスに課題があるため、用途に応じて使い分ける必要がある。
/** Geminiが自動生成した概要 **/
トマトの秀品率向上のため、ある程度の段数で若い葉を摘葉する技術がある。摘葉により蒸散が抑えられ、下葉への日当たりが改善される。さらに、養分の分配先が変わり、果実への転流量が増加することで品質向上に繋がる。具体的には、摘葉前には葉と果実に分配されていた養分が、摘葉後には果実への分配比率が高まる。ただし、将来的な影響も懸念されるため、更なる指標を用いた考察が必要となる。
/** Geminiが自動生成した概要 **/
SOY Shop用のタグクラウドプラグインが新たに開発されました。カスタムサーチフィールドや関連商品プラグインと組み合わせることで、商品検索の利便性向上に貢献します。以前はカスタムサーチフィールドで代替可能でしたが、要望増加に伴いプラグイン化されました。ダウンロードはsaitodev.co/soycms/soyshop/ から可能です。このプラグインにより、ユーザーは視覚的にタグを選択し、関連商品を容易に見つけることができるようになります。
/** Geminiが自動生成した概要 **/
SOY CMSで公開期限付きcms:ignoreを実現するモジュールの作成方法を解説。指定期間内のみコンテンツを表示する機能で、`/ドキュメントルート/サイトID/.module/parts/ignore.php`にPHPコードを記述する。コードでは`mktime`と`time`関数で期間を指定し、`addModel`で表示条件を設定。テンプレートには`<!-- cms:module="parts.ignore" -->`等を記述して使用する。SOY Shopでは`soycms_ignore`を`soyshop_ignore`に、`cms:module`を`shop:module`に変更すれば利用可能。
/** Geminiが自動生成した概要 **/
SOY Shopのアクセス制限プラグインが開発され、標準機能として同梱されました。このプラグインは、特定のブラウザからのみアクセス可能なページを作成し、IPアドレスと紐づけた固有の鍵をクッキーで管理することで実現しています。管理画面でブラウザを登録すると鍵が生成され、クッキーに保存。SOY Shop側は鍵とIPアドレスをデータベースに格納し、有効期限を設定します。これにより、鍵の偽装や不正アクセスを防ぎ、セキュリティを高めています。このプラグインは、タブレット等で特定機能を利用する際の利便性向上に役立ちます。最新版はsaitodev.co/soycms/soyshop/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
トマト果実の割れ防止対策として、葉の気孔に着目。気孔はCO2吸収と蒸散のバランスを保つため開閉し、孔辺細胞のカリウムイオン濃度変化と膨圧が関与する。日中はCO2獲得と水損失のバランス調整が重要。気孔開閉機構の詳細は不明だが、カリウムイオンが孔辺細胞に出入りすることで水の移動が起こり、気孔が開閉する。トマト栽培ではカリウム不足が懸念され、これが気孔開閉に影響し、微量要素吸収阻害など品質低下につながる可能性が考えられる。
/** Geminiが自動生成した概要 **/
Micro:bitとサーボモーターを用いて環境制御学習の第一歩を踏み出した著者は、サーボモーターの動作原理を学ぶため、LEGOブロックとミニフィグを使った回転実験を行った。MakeCodeで作成したコードでMicro:bitからサーボモーターに角度指令を送ると、90度を基準に、大きい値では反時計回り、小さい値では時計回りに回転する。しかし、指定角度で停止せず、一回転し続けるという問題に直面。これは、指令値が目標角度ではなく、一定時間内の回転角度を表すためであった。 著者は、サーボモーターの停止方法について疑問を抱いている。
/** Geminiが自動生成した概要 **/
SOY Shopユーザーからの要望を受け、管理画面に概要欄を設置するプラグインを開発しました。ユーザーは2名で、ほぼ同時期に要望がありました。管理画面左下に、簡易編集可能な概要欄を追加することで、ショップ運営に関する情報を手軽に共有できます。
以前開発したメモウィジェットではテキストリンクの自動クリックに対応できないため、今回のプラグインではリンクテキストを自動でアンカータグに変換する機能を追加しました。これにより、例えば新人研修用の資料へのリンクを概要欄に記載し、参照を促すことで教育コスト削減に繋がります。
プラグインはサイト(/soycms/soyshop/)でダウンロード可能なパッケージに含まれており、有効化することで利用可能です。UIは現状改善の余地がありますが、ご容赦ください。
/** Geminiが自動生成した概要 **/
SOY CMSのカスタムフィールドアドバンスドで記事フィールドを拡張し、ラベルのみを選択して紐付いた記事一覧を出力する要望に応えるため、ラベルフィールドプラグインを開発。記事投稿画面にラベル選択項目を追加し、記事詳細画面で選択したラベルに関連する記事一覧を表示する機能を提供。当初はカスタムフィールドアドバンスドへの実装を試みたが、メモリ使用量の問題で断念し、プラグインとして独立させた。このプラグインを含むパッケージはsaitodev.co/soycms/からダウンロード可能。
/** Geminiが自動生成した概要 **/
ChromebookでPythonの数学ライブラリNumPyと可視化ライブラリmatplotlibの動作検証を行いました。ASUS Chromebook Detachable CM3で、Linux環境を利用し、`sudo apt install`コマンドで必要なパッケージをインストールしました。TkinterのGUI表示、及び以前作成したmatplotlibを使ったコードの実行に成功。Windows10のWSL2環境ではGUI表示ができなかった一方で、Chromebookでは問題なく動作しました。今後はデータサイエンス向けプラットフォームAnacondaのChromebookでの動作検証も検討しています。
/** Geminiが自動生成した概要 **/
ARM版ChromebookでLinuxアプリのDropboxを使うには、.debパッケージが使えないためDbxfsを利用する。pip3でDbxfsをインストール後、Dropboxフォルダを作成し、dbxfsコマンドを実行。表示されるURLにアクセスし、Dropboxにログインして認証コードを取得、端末に入力する。パスフレーズを設定すれば、Linuxファイル配下でDropboxのファイルが操作可能になる。Android版DropboxはChromebookのFilesのLinux共有に対応していないため、この方法が必要。
/** Geminiが自動生成した概要 **/
マテバシイとクリの開花が間近に迫っている。マテバシイは新しく展開した葉の付け根に花序を形成しており、数節分確認できた。一方、クリは枝先端から数えて5番目と6番目の節から新たな芽が伸び、その各節に花序をつけている。クリの花の数の多さに注目し、同じくブナ科で開花量の多いシイ属と比較している。マテバシイの開花量については未確認のため、判断は保留としている。追記として、これら3種は虫媒花であることが示されている。
/** Geminiが自動生成した概要 **/
SOY Shop向けプラグインを開発。予約注文型ネットショップで来店人数を制限するため、ネットショップと予約カレンダーを連携させる。一つ目のショップサイトで注文後、リンク経由で予約カレンダーを持つ二つ目のサイトへ遷移。この際、開発したプラグインにより顧客情報を一つ目のサイトから取得し、二つ目のサイトでシームレスに手続きを継続できる。設定は各サイトに「別サイト顧客情報引継ぎ用リンク設置プラグイン」「別サイト顧客情報引継ぎプラグイン」をインストールし、指示に従う。パッケージはsaitodev.co/soycms/soyshop/からダウンロード可能。
/** Geminiが自動生成した概要 **/
SOY Shopのパスワード自動生成プラグインがアップデートされ、管理画面で新規顧客を追加する際にもパスワード自動生成に対応しました。以前は顧客自身での登録時のみ自動生成でしたが、今回のアップデートで管理者による顧客追加時にも自動生成が可能となり、設定によりログイン方法の通知メールも自動送信されます。この機能追加により、管理者の手間を削減し、顧客へのスムーズなアカウント提供を実現します。アップデート版はsaitodev.co/soycms/soyshop/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY CMSのカスタムフィールドアドバンスドで画像フィールドを使用する際、alt属性を含めて複数箇所に表示したい場合の課題を解決するプラグインが開発されました。標準機能では、2回目以降の表示に`cms:id="img*"`を使用するとalt属性が出力されない問題がありました。このプラグインを使用すると、`cms:id="img_copy"`のように指定することで、alt属性を含めたimgタグを出力できます。`_copy`の部分は設定で変更可能です。このプラグインを含むパッケージはsaitodev.co/soycms/からダウンロードできます。
/** Geminiが自動生成した概要 **/
SOY CMSブログの記事ページからSOY Inquiryで作成したお問い合わせフォームへ遷移する際、記事名を引き継ぎたいという要望に応えるため、SOY CMSとSOY Inquiry双方に機能追加を行いました。
SOY CMS側では「SOY Inquiry連携プラグイン」を追加。記事ページにフォームへのリンクを設置し、クリックすると記事名を渡しつつフォームへ遷移します。SOY Inquiry側では「記事名 [SOY CMSブログ連携]」カラムを追加し、受信した記事名を表示します。
プラグインの設定方法はSOY CMS側のプラグイン詳細画面に記載されています。記事名以外の項目連携も要望に応じて対応可能です。利用にはSOY CMSとSOY Inquiry両方のアップデートが必要です。
/** Geminiが自動生成した概要 **/
SOY CMSの記事CSVインポート・エクスポート機能が拡張され、カスタムフィールドアドバンスドとカスタムサーチフィールドプラグインの項目が追加されました。これにより、記事データだけでなく、プラグインで追加した項目もCSVで一括管理できるようになりました。要望に応え、SOY Shopの商品CSV機能と同様に拡張ポイントが設けられました。カスタムフィールドプラグインには非対応です。他のプラグインへの対応は要望ベースで検討されます。最新版はsaitodev.co/soycms/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
`executeScript`は、ChromeDriverでJavaScriptを実行するメソッドです。第一引数に実行するスクリプト、第二引数にオプションの引数配列を取ります。このメソッドは、ブラウザコンテキストでJavaScriptを実行し、その結果を返します。Aceエディタへの入力は、エディタオブジェクトの`setValue`メソッドをJavaScript経由で呼び出すことで実現できます。上記例では、`$script`に`setValue`呼び出しを定義し、`$html`をエディタに設定しています。`executeScript`の第二引数配列は、`$script`内の`arguments`オブジェクトにマッピングされます。これにより、PHPからJavaScript関数をパラメータ付きで実行できます。
/** Geminiが自動生成した概要 **/
OpenStreetMapとLeafletを使って地図上にカスタムアイコンを表示する方法を紹介しています。 シンプルなマーカー設置では、L.icon()でアイコンオブジェクトを作成し、L.marker()のオプションで指定します。 L.geoJSONを使う場合は、GeoJSONデータのpropertiesにiconオブジェクトを追加し、pointToLayerオプションで条件分岐することで、特定のマーカーのみカスタムアイコンに変更できます。 記事では、摂津峡のマーカーにnature.pngというカスタムアイコンを設定する例を示しています。
/** Geminiが自動生成した概要 **/
SOY CMSのブログとOpenStreetMapで地図アプリを作る手順は以下の通り。カスタムサーチフィールドで緯度(lat)・経度(lng)フィールドを作成し、地図ラベルを設定。地図出力ページを作成し、OpenStreetMap + LeafletのHTMLを貼り付ける。JavaScript内のマーカー情報をSOY CMSのタグに置き換え、記事タイトル、URL、緯度経度を動的に表示。標準ページに地図ラベルの記事一覧を表示する設定を行い、緯度経度情報付きの記事を投稿すれば、記事の位置にマーカーが設置された地図が自動的に生成される。
/** Geminiが自動生成した概要 **/
OpenStreetMapとLeafletを用いて地図上にマーカーを設置し、クリックイベントを追加する方法について解説しています。
まず、Leafletで地図上にマーカーを設置する基本的なコードを示し、クリックイベントを追加するために`L.geoJSON`を使用する方法を説明しています。`L.geoJSON`の第二引数に`onEachFeature`オプションを渡すことで、マーカーごとにクリックイベントを設定できます。
記事では、クリックイベント発生時に任意のURLへ遷移する例を挙げており、PCとスマホそれぞれでクリックとタップイベントに対応するコードを記述しています。
/** Geminiが自動生成した概要 **/
SOY Shop用の簡易ショッピングモール運営プラグインが開発されました。従来、複数ショップでは顧客ポイントの共有化が課題でしたが、本プラグインは単一ショップに複数の「出店者」アカウントを追加することで解決。各出店者は自身の商品登録・注文情報・顧客情報(閲覧のみ)へのアクセスに制限され、他出店者の情報は見えません。これにより、顧客ポイントの共有が可能になります。現状、出店者用ページやカテゴリ管理機能は未実装。ショッピングモール運営希望者は問い合わせを推奨。プラグインはSOY Shopパッケージに同梱されています。
/** Geminiが自動生成した概要 **/
記事では、SOY2HTMLでセキュアなフォームを作成する方法を解説しています。具体的には、CSRF対策としてトークンを埋め込んだフォームを生成するHTMLFormクラスの使い方を紹介しています。 buildHiddenToken()でトークンを生成し、isValidToken()で検証することで、悪意のある外部サイトからのリクエストを無効化できます。また、トークンの有効期限を設定することでセキュリティを強化できます。記事では、具体的なコード例を交えながら、これらの機能の使い方を分かりやすく説明しています。 さらに、HTMLFormクラス以外の方法として、独自にトークンを生成・検証する方法についても触れています。
/** Geminiが自動生成した概要 **/
SOY CMSのページ切り替えプラグインは、指定期間中に特定のURLでアクセスされた際に、別のページコンテンツを表示する機能を提供します。 例えば、キャンペーン期間中のみトップページをキャンペーン専用のデザインに切り替えることができます。 管理画面で切り替え期間と対象ページ、表示ページを設定するだけで、URLを変更することなくコンテンツを切り替えられます。 さらに、意図しないアクセスを防ぐため、切り替え先ページへの直接アクセスはリダイレクトで元のページへ戻されます。 ダウンロードはsaitodev.co/soycms/ から可能です。
/** Geminiが自動生成した概要 **/
SOY Shop向け掲示板アプリプラグイン「SOY Board on SOY Shop」を開発中。顧客とマイページ機能を活用し、手軽に掲示板を設置できる。中小企業のWeb活用増加を背景に、古くからある掲示板の価値が見直されていると判断。既存のSOY Boardの改修が困難だったため、SOY Shop上に構築する形とした。PHP最新バージョンへの対応、多様なXML出力、HTML投稿を重視し、既存のOSSではなく独自開発を選択。特にXML出力は、サイトマップ登録や新着通知の細分化に活用予定。HTML許可によるXSS対策の難しさは課題。ローカル環境での動作確認推奨、試用時は新規ショップサイト作成必須。最新パッケージはsaitodev.co/soycms/soyshop/からダウンロード可能。
/** Geminiが自動生成した概要 **/
ブナ科の系統分類について、新刊のどんぐり図鑑と既存の研究を参考に考察。コナラ属はコナラ亜属とケリス亜属に分けられ、落葉性のコナラはコナラ亜属、常緑性のシラカシはケリス亜属に属する。興味深いのは、落葉性のクヌギとアベマキもケリス亜属に分類される点。クヌギ等はカシとは異なるケリス節に属するが、同じ亜属に常緑樹と落葉樹が含まれることは進化の謎を解く鍵となる可能性を秘めている。
/** Geminiが自動生成した概要 **/
おそらくシリブカガシと思われる木で、殻斗付きのドングリ(堅果)を拾った。一つの殻斗に様々な形と大きさの堅果が付いており、マテバシイより融合数が多い。このことから、ブナ科の進化において、シリブカガシのような大小様々な堅果から、マテバシイ属以降のように堅果の形が揃う方向へ進化したと推測できる。しかし、ブナの整った堅果を考えると、マテバシイ属の堅果の大きさのランダム性は日本の温帯では広まらなかったと考えられる。新たなドングリの発見は、既存のドングリへの理解を深める契機となる。
/** Geminiが自動生成した概要 **/
この記事では、SOY CMSで外部CSSを自動的にインライン化し、ページ表示速度を向上させる方法を紹介しています。通常、外部CSSファイルは別途リクエストが必要ですが、これをHTML内に直接埋め込むことでHTTPリクエスト数を減らし、レンダリング速度を改善します。
具体的には、cms:moduleタグとPHPを組み合わせた手法を用います。通常表示時は<link>タグで外部CSSを読み込みますが、SOY CMS経由での出力時は、PHPでCSSファイルの内容を読み込み、圧縮・整形した上で<style>タグ内に埋め込みます。これにより、SOY CMSを通さない場合は外部ファイル、SOY CMSを通す場合はインラインCSSと表示方法を自動で切り替えます。
この方法の利点は、CSSの管理を外部ファイルで行いつつ、出力時にはインライン化のメリットを享受できる点です。さらに、PHPでCSSの内容を操作できるため、ページごとに必要なCSSのみを出力するなど、転送量を最適化することも可能です。結果としてCore Web Vitalsの改善にも繋がります。
/** Geminiが自動生成した概要 **/
PHP 8.0への対応でSOY CMSとSOY Shopが高速化しました。主因はJITコンパイラですが、ビルドイン関数date、strlenの挙動変化に伴うコード修正も寄与しています。HTMLListのダミーオブジェクト処理で発生していたdate関数のエラーを修正。PHP7系でも動作します。プラグインの動作確認は順次実施予定。PHPのOPCache設定変更で更なる高速化も期待できます。OPcache.validate_timestampsを0にすると、PHPファイルのタイムスタンプ確認を無効化し、パフォーマンスが向上しますが、ファイル更新が反映されなくなるため、開発中は1、運用時は0にするのが推奨されます。opcache.revalidate_freqで更新頻度を設定できます。
/** Geminiが自動生成した概要 **/
SOY Shopのクレジットカード決済では、カード入力前に在庫を確保するため、入力を中断すると在庫が減ったまま注文が確定しない問題があった。これを解決するため、自動注文無効プラグインを作成。 設定した時間より前の仮登録注文を無効化し在庫を戻すことで、カード入力中断による在庫の減少を防ぐ。プラグインは仮登録から無効化までの時間を設定可能。クレジットカード決済特有の問題への対策として、在庫管理の精度向上に貢献する。
/** Geminiが自動生成した概要 **/
スペルミンはポリアミンの一種で、老化抑制に関係する可能性がある物質です。摂取すると腸で分解されず血流に乗り、各器官へ運ばれます。ポリアミンは、特に高齢者で起こりやすい軽微な刺激による慢性炎症に対し、免疫細胞の過剰な活性化を抑制する働きがあります。また、糖や脂肪の代謝と蓄積を調整し、動脈硬化などを予防する効果も期待されます。ポリアミンの合成量は加齢と共に低下するため、食品からの摂取が重要になります。合成にはオルニチンというアミノ酸が関わっており、旨味成分の豊富な食品を摂取することで補給できます。免疫細胞の老化による活性化とポリアミン合成量の低下は、高齢者のウイルス感染重症化と関連付けられます。
/** Geminiが自動生成した概要 **/
ブナ科樹木の風媒花と虫媒花に着目し、森林内での棲み分けと進化の過程について考察している。風媒花の樹木は林縁に、虫媒花は奥地に分布する傾向がある。コナラ属など一部は風媒花だが、シイ属やクリ属は虫媒花である。林縁は昆虫が多いにも関わらず風媒花が存在するのはなぜか、風媒花から虫媒花への進化、あるいはその逆の退化が起こっているのかを疑問として提示。さらに、風媒花による花粉散布が他の植物の生育に影響する可能性にも触れている。
/** Geminiが自動生成した概要 **/
SOY CMS向けWordPress記事インポートプラグインを開発しました。WordPress(3.3以降、現行5.5.3も対応)のMySQLデータベースから記事データを抽出し、SOY CMS用に変換・インポートします。開発時のWordPressバージョンは5.5.3ですが、データベーススキーマは3.3系から変わっていないため、3.3以降のバージョンに対応しています。実運用サイトでの移行実績はまだありません。実際に利用を希望される場合は、移行予定サイトでの最終調整にご協力ください(無償)。利用希望の方はお問い合わせください。
/** Geminiが自動生成した概要 **/
筆者はブナ科植物の進化に興味を持ち、殻斗と堅果の関係に着目している。クリは一つの殻斗に複数の堅果を持つ一方、コナラは小さな殻斗に一つの堅果を持つ。シイは大きな殻斗に一つの堅果だが、複数の堅果を持つ種も存在する。これらの観察から、進化の過程で殻斗と堅果の関係がどのように変化したのか疑問を抱いている。 最新の研究に基づくブナ科の系統樹を参照し、クリ属からシイ属、コナラ属、そして大きな堅果を持つ種へと進化した流れを考察。マテバシイ属の特異な形態に着目し、今後の研究で系統樹に変化が生じる可能性を示唆。最後に、ブナ科系統樹の基部に位置するブナ属への強い関心を表明し、ブナ林を訪れたいと考えている。
/** Geminiが自動生成した概要 **/
SOY ShopのPAY.JPクレジットカード支払いモジュールに、テストモード時の管理画面通知機能が追加されました。これは、テストモードのままサイトを公開してしまうミスを防ぐための強化です。 メンテナンス期間中にテストモードにしたままサイトを再オープンし、注文が無効になる事例が発生したことを受けての対応です。具体的には、管理画面の新着情報とメンテナンスページ解除操作時に、テストモードであることを強調表示します。 同様の機能は他の主要クレジットカード支払いモジュールにも展開予定です。 最新版はhttps://saitodev.co/soycms/soyshop/から入手可能です。
/** Geminiが自動生成した概要 **/
SOY CMS用ラベルカスタムフィールドプラグインが開発されました。ブログページのカテゴリごとに異なる説明文を表示する機能強化が目的です。従来のカテゴリー詳細表示プラグインではラベルのメモ欄しか利用できませんでしたが、このプラグインはラベル詳細画面にカスタムフィールドを追加し、入力した値をカテゴリページに出力できます。これにより、カテゴリページの表現力向上に貢献します。現在はテキスト系の項目のみですが、要望次第で画像項目の追加も検討されています。プラグインはsaitodev.co/soycms/から入手可能です。
/** 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側は未対応です。
/** Geminiが自動生成した概要 **/
SOY Shop用のメンテナンスページ設置プラグインが開発されました。このプラグインを使用すると、ショップサイトがメンテナンス中の際に簡単にメンテナンスページを表示できます。設定は、404NotFoundページと同様の方法でメンテナンスページを作成するだけで完了します。プラグインを有効化すると、管理画面のホームに設定の有無と設定画面へのリンクが表示され、メンテナンスページの表示を簡単に切り替えられます。現状は全ページがメンテナンスページに切り替わりますが、将来的にはカートやマイページのみの切り替えといった機能追加も検討されています。プラグインはsaitodev.co/soycms/soyshop/から入手可能です。
/** Geminiが自動生成した概要 **/
SOY Shopでキャンセル多発型の事業向け予約アプリを開発。予約受付と同時にキャンセル待ち受付も開始し、キャンセル発生時には自動でキャンセル待ちの先頭者にメールで通知、24時間以内に予約確定しなければ次の待機者に通知がいく仕組み。キャンセル待ちの順番はキャンセル発生時点ではなく、キャンセル待ち登録時点の順番を維持することで公平性を確保。また、二重予約防止のため、同一人物による複数アカウント作成のチェック機能や、予約時に電話番号認証を導入。これらの対策により、キャンセル発生時の迅速な対応と、キャンセル待ちユーザーの利便性向上、不正利用の抑制を実現した。
/** Geminiが自動生成した概要 **/
Core Web Vitalsは、ユーザーエクスペリエンスを測定する重要なSEO指標です。特にLargest Contentful Paint(LCP)はページの読み込み速度を、First Input Delay(FID)はインタラクティブ性、Cumulative Layout Shift(CLS)は視覚的な安定性を評価します。これらを改善することで、ユーザーの離脱率を減らし、SEOランキング向上に繋がります。画像最適化はCore Web Vitals改善の有効な手段で、Guetzliは高品質を維持しながらファイルサイズを大幅に削減できるツールです。Guetzliを用いることで、LCPの改善に大きく貢献し、結果としてWebサイトのパフォーマンス向上とSEO対策に繋がります。
/** Geminiが自動生成した概要 **/
Go言語のテスト方法を解説した記事の要約です。Goでは`*_test.go`ファイルにテスト関数を記述します。テスト関数は`Test*`という名前で、`*testing.T`を引数に取ります。`t.Error`や`t.Errorf`でテスト失敗を報告、`t.Log`でログ出力、`t.Run`でサブテストを実行できます。`go test`コマンドでテストを実行し、カバレッジは`go test -cover`で確認できます。記事では具体的な例として、加算関数`Add`のテストコードを`add_test.go`に記述し、正常系と異常系のテストケースを実行する方法を紹介しています。また、テーブル駆動テストを用いて複数のテストケースを簡潔に記述する方法も説明しています。
/** Geminiが自動生成した概要 **/
PHPのハッシュテーブルの実装であるチェイン法を、単方向連結リストを用いて再現した。ハッシュテーブルへの要素追加、検索、初期化、リサイズの関数をPHPで作成し、衝突が発生するケース(アズキとショウブ)で動作を確認した。結果、インデックス2にアズキとショウブが連結リストで格納され、検索関数も正しく動作することを確認できた。この実装はPHPのzvalや変数登録の仕組みを理解する上で役立つ。ただし、PHPのチェイン法は双方向連結リストを用いており、また、連結リストではなく配列を用いる実装もある。
/** Geminiが自動生成した概要 **/
PHPの関数はハッシュテーブルというデータ構造で管理される。ハッシュテーブルは高速な検索が可能だが、ハッシュ値の衝突という問題がある。この記事では、簡単なハッシュ関数とハッシュテーブル操作関数を作成し、文字列を登録する例を通してハッシュテーブルの基本的な動作を説明する。複数の文字列を登録する際に、ハッシュ値の衝突が発生し、一部の文字列が登録されないことを示し、衝突回避のための方法としてハッシュテーブルのリサイズやハッシュ関数の改良、そしてチェイン法の存在を示唆している。
/** Geminiが自動生成した概要 **/
PHPでクラス継承時のメモリ使用量を検証した。継承の有無にかかわらず、インスタンス作成によるメモリ増加量は同じだった。VLDを用いて継承時のメソッドを確認すると、子クラスは親クラスのメソッドを保持し、オーバーライドも可能であることが分かった。つまり、インスタンス生成時はオブジェクトとプロパティ値のみを保持し、メソッドはクラス定義に基づいて解決される。継承はメソッドの探索順序に影響するが、インスタンスのメモリ使用量には直接影響しない。
/** Geminiが自動生成した概要 **/
PHPの関数内変数のメモリ解放タイミングを検証。`xdebug_debug_zval()`を使い、関数にオブジェクトを渡すと、関数内変数の参照カウントが2になることを確認。関数を抜けると参照カウントが1に戻り、関数終了時に変数が解放されることが判明。つまり、PHPは関数内の変数を自動解放するため、小さな関数であればメモリ管理を過度に意識する必要はない。
/** Geminiが自動生成した概要 **/
SOY CMSのカノニカルURL挿入プラグインに、トライリングスラッシュとwwwの有無を設定する機能が追加されました。トライリングスラッシュとは、URL末尾にスラッシュを追加するかどうか(例: `/article/タイトル/`)の設定です。wwwの設定は、カノニカルURLで`www.example.com`を`example.com`のようにwwwを除外するかどうかを設定します。これらの設定により、SEO対策として重要なカノニカルURLをより柔軟に制御できるようになりました。新機能はsaitodev.co/soycms/で提供されるパッケージに含まれています。
/** Geminiが自動生成した概要 **/
PHPのガベージコレクション(GC)は参照カウント法を用いて不要なメモリ領域を解放する。`xdebug_debug_zval()`関数で確認できる`refcount`が参照数を示し、0になるとGC対象となる。オブジェクト型では、変数への代入で`refcount`が増減し、`unset`で`refcount`が減る。`refcount`が0になるとメモリが解放される。整数型などzvalに直接値を持つ型は`refcount`が0でも当てはまらない。`unset`は不要になったオブジェクトを明示的に解放し、メモリ効率を向上させるため有効。
/** Geminiが自動生成した概要 **/
PHPの変数はzval構造体とzend_value共用体で表現される。zvalは型情報を持ち、zend_valueは実際の値を保持する。整数、文字列、配列など、型の違いはzend_valueの異なるメンバを使用することで実現される。変数名とzvalの関連付けはシンボルテーブルを介して行われる。`$a = 1`のような代入では、zvalが初期化され、zend_valueの`lval`に1がセットされ、シンボルテーブルに"a"というキーでzvalへのポインタが登録される。これにより、変数名から対応する値にアクセスできるようになる。
/** Geminiが自動生成した概要 **/
サーバのDropbox容量圧迫問題をDropbox-Uploaderで解決する手順。
1. Dropbox-Uploaderをダウンロード&セットアップ(アクセストークン取得含む)。
2. 送信したいファイルをサーバに配置。
3. rootのcrontabで、`dropbox_uploader.sh upload`コマンドを使い、指定時間にDropboxへアップロードするよう設定。
4. 常駐Dropboxを停止(`dropbox stop`)し、`top`コマンドで停止確認。
これにより、常駐Dropboxが不要になり、サーバ負荷を軽減できる。
/** Geminiが自動生成した概要 **/
SOY CMS/Shopで、別サイトのHTMLモジュールを読み込む新機能が追加されました。サイトIDをプレフィックスとして`{siteId}.moduleName`のように指定することで、HTMLのみで構成されたモジュールを別サイトから呼び出せます。例えば、`{otherSite}.html.sample`と記述すれば、siteIdが"otherSite"のサイトにある"html.sample"モジュールが表示されます。ただし、SOY CMSとSOY Shop間でのモジュールの相互利用は不可で、データベースを参照するモジュールも使用できません。この機能は、最新版のSOY CMS/Shopパッケージで利用可能です。
/** Geminiが自動生成した概要 **/
PHPのforeach文でループ中にreturnで抜ける場合、メモリリークの懸念がある。VLDでforeachのオペコードを見ると、ループ終了時にFE_FREEで変数を解放している。しかし、ループ中のreturnでもFE_FREEが実行されるか検証した結果、return前にFE_FREEが挿入されていた。つまり、foreach中にreturnしてもメモリリークは発生せず、PHPが適切にメモリ管理を行っていることが確認できた。
/** Geminiが自動生成した概要 **/
PHPで変数に割り当てた無名関数は、unset()関数で解除できる。unset()は変数の割当を解除し、メモリを解放する。記事では、文字列を格納した変数と、無名関数を格納した変数でunset()の効果を検証している。どちらもunset()後にはメモリの使用量が減少し、変数自体のメモリ使用分(約32バイト)のみが残った。つまり、無名関数も他の変数と同様にunset()で解除でき、メモリ解放の対象となる。
/** Geminiが自動生成した概要 **/
PHPのVLDを使って無名関数のオペコードを確認した。無名関数は変数`$isEven`に格納され、if文で実行される。VLD出力では、通常の関数と異なり、function nameが`{closure}`と表示された。これはクロージャを示す。無名関数は関数自体を変数に格納し、後で実行できる。
/** Geminiが自動生成した概要 **/
Windows起動時にWSL上のApacheを自動起動させる方法。まず、sudoers.dディレクトリにmy-auto-startファイルを作成し、Apache起動コマンドをパスワードなしで実行できるように設定する。次に、.bashrcファイルにApache再起動コマンドを追加。最後に、スタートアップフォルダにmy-auto-start.vbsファイルを作成し、WSLを起動するVBScriptを記述する。Windows再起動後、Apacheが自動的に起動する。
/** Geminiが自動生成した概要 **/
SOY Shop用のLogin with Amazonプラグインが開発され、Amazonアカウントでのログインが可能になった。取得できるデータはAmazon ID、氏名、メールアドレスで、住所取得は今後の課題。このプラグインは、以前開発されたAmazon Payワンタイムペイメントモジュールと連携できる可能性がある。プラグインはsaitodev.coで提供されているSOY Shopパッケージに含まれる。
/** Geminiが自動生成した概要 **/
WSL2上のUbuntuにApache2とPHPで構築したSOY CMS環境に、VirtualHostを追加する方法を解説しています。`/etc/apache2/sites-available/`にある`000-default.conf`を`demo.conf`にコピーし、ポートを8080、DocumentRootを`/home/ryoko/workspace/demo`に変更、アクセス許可の設定を追加します。`a2ensite`コマンドで有効化し、Apache2を再起動後、`localhost:8080`でSOY CMSの管理画面が表示されれば成功です。
/** Geminiが自動生成した概要 **/
PHPの深層理解のため、オペコードを確認する方法を解説。VLD(Vulcan Logic Dumper)を用いて、PHPコードを中間コードに変換する様子を観察できる。Ubuntu 20.04、PHP 7.4.6環境で、vldをgit clone、phpize、configure、make、installし、php.iniにvld.soを追加。`php -d vld.active=1 -d vld.execute=0 /path/to/dir/a.php`で"Hello World"のオペコードを確認できる。これによりPHP内部の仕組みを理解する第一歩となる。
/** Geminiが自動生成した概要 **/
イネの生育過程で、古い葉は養分を新しい葉に送り枯れる。この養分転流には、古い葉でのオートファジーと新しい葉でのサイトカイニン蓄積が重要だ。オートファジーはタンパク質などを運搬しやすいアミノ酸や糖に変換する。サイトカイニンは養分を引き寄せる作用があり、新しい葉に蓄積することで、古い葉からアミノ酸や糖が移動する。成長盛んな葉のサイトカイニン濃度が高く、古い葉で低い状態が、効率的な養分転流を促す。
/** Geminiが自動生成した概要 **/
Amazon Pay Widget Code Generatorは、Amazon Payボタンをウェブサイトに簡単に統合するためのツールです。ボタンの種類(ログイン、支払い)、サイズ、カラー、言語などのオプションを選択することで、必要なHTMLとJavaScriptコードを生成します。生成されたコードには、`createCheckoutSession`関数も含まれており、決済セッションの作成とAmazon Payウィジェットの表示を処理します。これにより、開発者は複雑な実装を気にすることなく、Amazon Payを迅速に導入できます。 ツールは様々なカスタマイズオプションを提供し、シームレスな顧客体験を実現するボタン作成を支援します。
/** Geminiが自動生成した概要 **/
SOY CMS向け複数ページフォームプラグインが開発されました。このプラグインは、管理画面でページ構成と遷移を設定し、公開側でフォームを表示します。各ページの設定、完了ページでのSOY Inquiry連携、高度なページでのSOY2HTML利用、フォームデザイン変更といった機能を提供します。これにより、複雑な複数ページフォームの作成コストを大幅に削減できます。プラグインはsaitodev.co/soycms/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shopの管理画面用軽量版集計プラグインが開発されました。従来版との違いは、プラグイン独自の検索条件ではなく、管理画面の注文検索機能を利用するように変更された点です。これは、高度な注文検索を可能にする拡張ポイントが追加されたこと、そしてその検索結果を集計したいという要望に応えるための改良です。新プラグインは、管理画面の注文検索で絞り込んだ結果に基づいて集計を行います。この変更により、カスタムフィールド等の拡張検索条件にも対応した柔軟な集計が可能になりました。新プラグインはsaitodev.coのSOY Shopパッケージで提供されています。
/** Geminiが自動生成した概要 **/
SOY Shop 2にHTMLキャッシュプラグインが追加され、高速化が可能になった。カートウィジェットの問題は非同期通信で解決し、カート内商品数と合計金額をJSONで取得できる。ヤマトリップショップではこの機能とLazyLoadプラグイン、jpegoptimにより、ページ表示速度が3.3秒から1秒以下になり、PageSpeed InsightsのスコアもPCで90を超えた。スマホは90に届かなかったが、Gueztliによる画像最適化で改善が見込まれる。SOY Shop 2正式版は近日公開予定。
/** Geminiが自動生成した概要 **/
SOY CMSのLazy Loadプラグインは、記事中の画像3枚目以降に`loading="lazy"`属性を付与し、遅延読み込みを実現することでSEO対策とPageSpeed Insightsスコア向上に貢献します。リソース消費を軽減するため、HTMLキャッシュプラグインとの併用が推奨されます。
関連するHTML圧縮の記事では、HTML、CSS、JavaScriptの圧縮によりファイルサイズを削減し、ページの読み込み速度向上によるSEO対策、ユーザーエクスペリエンス向上、サーバー負荷軽減などのメリットが得られると説明されています。gzip圧縮、minifyツール、SOY CMSのHTML圧縮プラグインの利用方法などが紹介されています。
/** Geminiが自動生成した概要 **/
SEO対策として、画像の遅延読み込み(Lazy Load)はページ表示速度の改善に有効です。ファーストビュー以外の画像は、ページ全体が表示されてから読み込まれます。重い画像や動画を遅延させることで、表示速度が向上します。
実装は、imgタグに`loading="lazy"`属性を追加するだけです。Chrome 75以降で対応しており、他ブラウザではjQueryプラグインが必要ですが、当サイトではjQueryによる速度低下を避けて使用していません。
PC表示では効果が見られませんでしたが、スマホ表示ではファーストビュー外に画像が配置されるため、Lazy Loadの効果が大きいです。
関連記事として、SOY CMSとSOY Shop向けにLazy Loadプラグインが紹介されています。
/** Geminiが自動生成した概要 **/
SOY Shopがレンタルサービス事業者向けRFID在庫管理ツール「ZAIKA」とAPI連携できるプラグインを開発しました。ZAIKAはレンタル業務の発送・返却作業効率化と在庫単位での収益・稼働・状態管理を実現するツールです。プラグイン利用にはSOY Shopのオーダーカスタムフィールド(日付)との連携が必要ですが、現状未実装です。連携機能開発は需要に応じて対応予定。プラグイン利用希望者やレンタル業務用SOY Shop構築希望者は問い合わせください。
なお、顧客関連管理機能強化については言及されていません。
/** Geminiが自動生成した概要 **/
SOY Shop用のSMBC GMO PAYMENTクレジット決済モジュールが開発されました。このモジュールは標準機能には含まれておらず、希望者は問い合わせフォームから連絡が必要です。
また、GMOペイメントゲートウェイ用のクレジット決済モジュールも開発されています。どちらも、ECサイト構築プラットフォームであるSOY Shopで利用可能です。
/** Geminiが自動生成した概要 **/
SOY Shopで配送と店舗受け取りを同時選択できるよう、オーダーカスタムフィールドで対応する方法を紹介。標準機能にはないカレンダーを、jQuery Datepickerを用いて実装する手順を解説。オーダーカスタムフィールドを作成後、カートページテンプレートにjQueryを読み込み、Datepickerを適用するコードを追加。オプション設定で日付範囲も指定可能。複数フィールドへの適用方法や、直接入力を防ぐreadonly属性の追加についても触れている。
/** Geminiが自動生成した概要 **/
シロザの下葉が赤く変色していたことから、植物の色素について考察している。記事では、花の色素の基礎知識として、農研機構の情報を引用し、花の四大色素(カロテノイド、フラボノイド、ベタレイン、クロロフィル)について解説。カロテノイドは暖色系の色素で、フラボノイドは淡黄色から紫まで幅広い色を発現し、クロロフィルは緑色を呈する。これらの色素の配合比率によって花の色が決まる。また、花蜜や花粉に含まれる色素が蜂蜜の色や香りに影響を与え、機能性を高めていることにも触れ、色素の理解を深めることで、健康増進にも繋がる知見が得られると期待している。さらに、マメ科の植物を例に、フジの紫色、レンゲの赤紫、ミヤコグサの黄色、ジャケツイバラの黄色など、様々な花の色を紹介し、色素の多様性を示している。
/** Geminiが自動生成した概要 **/
SOY CMSの長年の利用者から、既存記事のユーザビリティ向上のため、カスタムフィールドのデータをカスタムサーチフィールドに移行したいという要望があり、対応プラグインを開発しました。カスタムサーチフィールドは、検索性向上のためデータ型を最適化しており、プラグインはデータ型の差異を考慮した移行を実現します。設定画面で双方のカラム対応を設定し、実行ボタンで移行完了。文字列型のみ対応の現時点でのパッケージはsaitodev.co/soycms/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY CMSユーザーからの要望に応え、ブログ記事に連番を表示するプラグインを開発しました。記事ごとに何番目の記事かを表示する機能は、SOY CMSの「記事とページの独立性」という仕様により、複雑な処理が必要となるため、パフォーマンスへの影響を考慮し、標準機能ではなくプラグインとして提供しています。ダウンロードはsaitodev.co/soycms/ から可能です。
/** Geminiが自動生成した概要 **/
SheetJSは、ブラウザ上でHTMLテーブルから簡単にExcelファイルを生成できるJavaScriptライブラリです。デモを改修し、テーブル要素を指定して`XLSX.utils.table_to_book`でブックオブジェクトを生成、`XLSX.writeFile`でExcelファイル(xlsx)として出力する簡単なコードで実装できます。 表示されたHTMLテーブルのダウンロードボタンをクリックするだけで、テーブル構造を保持したExcelファイルがダウンロードされます。著者は従来PHPのPhpSpreadSheetを使用していましたが、SheetJSも選択肢に加えるとのことです。
/** Geminiが自動生成した概要 **/
SOY Shop 2.0.0βでは、管理画面のUIをSOY CMS 3系に刷新。開発元の停滞を受け、非公式ながらバージョンアップを実施。拡張性向上のため、デザイン崩れを防ぐ3系テンプレートを採用した。標準機能のUI変更は完了し、プラグイン対応を進めている。現在はカスタムフィールド系、初期プラグイン、PAY.JP/Coiney決済プラグインが対応済み。今後、予約カレンダーや伝票管理プラグインへの対応を予定。データベース構造は変更なし。ダウンロードはsaitodev.co/soycms/soyshop/ から可能。管理画面のみ使用モードの追加により、ECサイト構築だけでなく、会員管理システムなど多様な用途にも対応できるようになった。
/** Geminiが自動生成した概要 **/
SOY CMSの記事毎に無制限に画像をアップロードできるプラグインを開発。カスタムフィールドでは複雑になる複数画像管理を、独立したプラグインで実現。記事投稿画面にアップロードフォームを設置し、公開側のブログ詳細ページで表示できる。SQLのTEXTカラム容量分まで画像パスを保存可能。操作性には改良の余地があるものの、即興で開発したパッケージはsaitodev.co/soycms/からダウンロードできる。
/** Geminiが自動生成した概要 **/
Google Ads APIを利用するにはMCCアカウントが必要で、キーワードプランナーを無料で使う方法を解説。MCCアカウント作成後、キーワードプランナーは有効な広告アカウントがないため使えない。そこで、エキスパートモードで「キャンペーンなしでアカウントを作成」し、生成されたお客様IDをメモ。MCCアカウントに戻り、サブアカウント設定で「既存のアカウントをリンク」し、お客様IDを入力してリクエストを送信、承認する。これでMCCアカウントでキーワードプランナーが無料で使えるようになる。
/** Geminiが自動生成した概要 **/
SOY CMSのブログ記事URLをカスタマイズできるカスタムエイリアスプラグインに新機能が追加されました。従来は任意の文字列でURLを書き換えられましたが、記事タイトルをハッシュ値やランダム文字列に変換するモードが追加。これにより、記事ごとにエイリアスを考える手間が省けます。記事タイトルはSEOに影響するため、任意の文字列でSEO対策したい、でも記事タイトルそのままは避けたい、というニーズに応えます。新機能追加版はサイト(https://saitodev.co/soycms/)からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shopの商品をFacebookページショップ/Instagramショッピングで販売する手順は以下の通り。
1. SOY ShopのFacebookページショップ用XMLプラグインを有効化し、XMLページを作成する。
2. Facebookページを作成し、ショップタブを追加。
3. 別のウェブサイトでチェックアウトを選択し、ダミー商品を登録。
4. カタログマネージャでXMLページのURLを登録。一括アップロードで「スケジュール設定したフィードを利用」を選択し、XMLページURLを設定。
5. エラーがなければ連携完了。Instagramショッピングは別途申請が必要。
最新版はサイト(https://saitodev.co/soycms/soyshop/)からダウンロード可能。
/** Geminiが自動生成した概要 **/
SOY Shopのカスタムフィールド値を注文受付メールなどに挿入するプラグインが開発されました。商品ごとに設定したカスタムフィールド値を、プラグインの詳細画面で設定したフォーマットに基づき、注文メールテンプレートに挿入できます。 複数商品注文時は、商品数分フォーマットが適用されます。この機能はメールビルダープラグインでも利用可能。合わせて、商品一覧の並び順設定を追加するアップデートも実施されました。パッケージはsaitodev.co/soycms/soyshop/ からダウンロードできます。
/** Geminiが自動生成した概要 **/
Google Mapsの遅延出力により、PageSpeed Insightsのスコアが80点台から100点に改善。iframeを隠して「地図を表示」ボタンを表示し、クリック後3秒後にGoogle Mapsをロードするコードを追加した。これにより、ページの読み込みが遅くなるGoogle Mapsの出力を遅らせ、ページのパフォーマンスを向上させた。
/** Geminiが自動生成した概要 **/
SQLiteを採用するSOY CMSでサイト表示を高速化するため、最終生成HTMLのキャッシュ化機能を導入した。データベースやファイル読み込みを省略することでPageSpeed Insightsのスコアが大幅に向上。この機能はHTMLキャッシュプラグインをインストール後、index.php内のexecute_site()をexecute_site_static_cache()に変更することで有効になる。ただし、カート内容の表示など動的なコンテンツはキャッシュ化できないため、リッチなサイト構成との両立は難しい。高速化とSEO対策には見栄えよりも内容重視の割り切りが必要となる。SOY Shopでも同様のキャッシュプラグインが開発されている。
/** Geminiが自動生成した概要 **/
この記事では、ウェブサイトのSEO対策として画像ファイルサイズの削減に焦点を当てています。GoogleのJPEGエンコーダGuetzliを導入することで、画像品質を維持しながらファイルサイズを大幅に削減できることを実例で示しています。具体的には、115.8kbの画像がGuetzliによって9.4kbまで圧縮され、80%以上の削減に成功しています。また、PageSpeed InsightsによるWebP等の次世代フォーマットの推奨についても触れつつ、Safari非対応やPageSpeed Module導入によるパフォーマンス低下を理由に現状では採用を見送っていることを説明しています。
/** Geminiが自動生成した概要 **/
SOY InquiryにParsley.jsを組み込むと、見栄えの良い入力内容チェックが利用できます。フォームテンプレートにParsley.jsのスクリプトを挿入し、SOY Inquiryのフォーム設定画面で各項目にdata-parsely-triggerとrequired属性を設定します。さらに、data-parsely-required-message属性を追加すると、エラーメッセージをカスタマイズできます。これにより、各項目に合わせたエラーメッセージが表示され、ユーザーフレンドリーなフォームが作成できます。
/** Geminiが自動生成した概要 **/
SOY CMSのページ毎表示制限プラグインは、サイト運営中に追加するページを、管理画面ログイン時のみ表示可能にする機能を提供します。CMS組み込み時の全ページ非表示機能を、個別のページに適用できる形にしたものです。設定したページは、管理画面ログイン中であれば、別タブでも表示制限が有効です。このプラグインを含むパッケージはsaitodev.co/soycms/からダウンロードできます。
/** Geminiが自動生成した概要 **/
SOY Shopを活用した買取管理アプリが人文と社会の書林様サイト(https://www.tetsugakukaitori.com/)に導入されました。従来のSOY Inquiryでの買取依頼フォームに加え、SOY Shopの顧客管理機能と連携し、買取依頼の一元管理を実現。管理画面には専用の買取管理ページが設けられ、SOY Inquiryからの申込情報と連携。顧客はマイページから査定手続き、身分証登録、問い合わせ、査定額承認などが行えます。運営側は手続き状況変更、状況に応じたメール送信、査定結果アップロード、集荷伝票自動作成が可能。顧客情報はSOY Shopの顧客データベースと連携し、2回目以降の買取依頼を簡略化。管理画面のみ使用モードも活用しています。
/** Geminiが自動生成した概要 **/
SOY CMSで異なるドメインの複数サイト(example.kyoto, other.example.kyoto)をさくらVPS上の単一サーバーで運用する手順を記述。Let's Encryptでワイルドカード証明書(*.example.kyoto)を取得し、既存証明書を削除後、お名前.comのDNS設定でTXTレコードを追加。SOY CMSでサイト毎にURLを設定し、Apacheのドキュメントルートにindex.phpと.htaccessを設置、ドメインに応じてサイトを切り替えるよう設定。ワイルドカード証明書の更新は、お名前.comでは自動化できないため手動、またはさくらのクラウドDNSへの移管が必要。
/** Geminiが自動生成した概要 **/
ハチミツの美味しさを探るには、ショ糖をブドウ糖と果糖に加水分解する酵素「インベルターゼ」が重要。ミツバチは花蜜のショ糖をインベルターゼで単糖に変換し貯蔵する。これにより糖濃度が上昇し、ジャムのように腐敗を防ぐ効果があると考えられる。しかし、ハチミツの糖組成はブドウ糖より果糖が多い。ショ糖の加水分解では等量のブドウ糖と果糖が生じるはずだが、果糖が多い理由は何か。ブドウ糖の消費、蜜源植物の種類などが影響している可能性があり、更なる探求が必要である。
/** Geminiが自動生成した概要 **/
蜂蜜の美味しさは、含まれる糖の種類と構成比に左右される。ショ糖を基準(甘味度1.00)とした場合、ブドウ糖は0.75、果糖は1.75と甘さが異なる。蜂蜜では主にこの3種が重要で、果糖が多いほど甘く感じられる。また、果糖は温度が低いほど甘味が増す特徴を持つ。つまり、果糖が多くブドウ糖が少ない蜂蜜は、より甘く感じる。しかし、この糖構成には疑問点があり、次回に議論される。
/** Geminiが自動生成した概要 **/
SOY Shopの商品詳細ページで商品ごとに異なる定型文を表示するプラグインが開発されました。 通常、プラグインで定型文を設定するところを、このプラグインはパーツモジュール内で他のパーツモジュールを呼び出すことで実現しています。商品情報に設定したモジュールIDに対応するパーツモジュールを`shop:module="common.fixed_form_module"`で呼び出すと、商品に応じた定型文が表示されます。HTMLだけでなくPHPのモジュールも使用可能なので、動的な表示にも対応できます。このプラグインを含むパッケージはsaitodev.co/soycms/soyshop/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shopに顧客宛メール送信機能が追加されました。従来は注文関連の連絡のみでしたが、今回のアップデートで任意の用件でメールを送信できるようになりました。これは、別途追加されたマイページお問い合わせフォームへの返信機能を補完するものです。顧客はフォームから問い合わせ、管理者は今回追加された機能で返信できます。これにより、マイページ上での円滑な顧客対応が可能になります。Bootstrapテンプレート利用時、お問い合わせフォームと今回のメール機能で、問い合わせから返信までをマイページ内で完結できます。最新版はsaitodev.coからダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shop管理画面に振込先情報編集機能を追加するプラグインを作成しました。このプラグインを使用すると、顧客の振込先情報を管理し、返金時の送金に利用できます。顧客はマイページからも振込先情報を登録可能です。
/** Geminiが自動生成した概要 **/
フルクトースは、グルコースの2位の炭素が異性化酵素等の作用で酸素と二重結合になった五員環構造の単糖である。スクロースはグルコースとフルクトースがグリコシド結合した二糖類だ。フルクトースはケトン基を持つが還元性が高く、グルコースよりメイラード反応を起こしやすい。前記事で触れた黒糖やショ糖(スクロース)の構成要素であるフルクトースは、グルコースの異性体で果糖とも呼ばれる。五員環構造を持つため、グルコースと化学的性質が異なり、メイラード反応を起こしやすい。これは、フルクトースの還元性がグルコースよりも高いためである。このため、フルクトースを含む糖蜜はメイラード反応により褐色を呈する。
/** Geminiが自動生成した概要 **/
植物は、傷つけられるとグルタミン酸を使って他の部位に危険を伝達する。グルタミン酸は動物の神経伝達物質としても知られるが、植物では防御機構の活性化シグナルとして機能する。実験では、蛍光タンパク質でグルタミン酸の移動を可視化し、毛虫にかじられた際にグルタミン酸が血管のような役割を持つ師管を通って全身に広がる様子が観察された。この伝達速度は秒速1ミリメートルに達し、グルタミン酸の増加に伴い防御ホルモンであるジャスモン酸の生成も確認された。このシステムにより、植物は局所的な攻撃から身を守るための全身的な防御反応を迅速に展開できる。
/** Geminiが自動生成した概要 **/
SOY ShopのPAY.JP定期課金モジュールに、カード情報変更機能が追加されました。現在はマイページログイン後からの変更ですが、将来的にはメール経由でログインなしでの変更も可能になる予定です。 このアップデートにより、ユーザーは定期課金のカード情報を更新できるようになり、期限切れ等による課金停止を防ぎます。 PAY.JP定期課金モジュールは、SOY Shopでクレジットカード決済の継続課金を行うためのプラグインです。最新版はsaitodev.co/soycms/soyshop/からダウンロードできます。
/** Geminiが自動生成した概要 **/
SOY CMS向けDropboxバックアッププラグイン(β版)を開発しました。CLI版不要で、Dropbox APIを利用しサーバからDropboxへ直接バックアップファイルを転送します。PHPのZipArchive、またはコマンドラインzip、サイトディレクトリへの圧縮権限、サーバの空き容量が必要です。詳細はサイト(saitodev.co/soycms/)で確認し、手動バックアップの上、利用ください。
/** Geminiが自動生成した概要 **/
SOY Shopで販売管理アプリ構築に挑戦中。仕入・入出金管理に注力し、既存の販売管理アプリの課題である価格バリエーションの不足に対応するため、SOY Shopのプラグインを活用し無制限登録を実現。商品規格を応用し、仕入値の異なる同一商品を管理。管理画面からの注文登録時に仕入値パターンを表示する機能も追加。ネットショップにおける仕入の概念の重要性も認識。販売管理機能強化により、ネットショップ機能全体の向上を目指す。
/** Geminiが自動生成した概要 **/
酸性土壌では、アルミニウムイオンが溶け出し、植物に有害となる。しかし、ある種の植物は、このアルミニウムを体内に取り込み無毒化したり、土壌中の有機酸とアルミニウムが結合することで無毒化する戦略を持つ。具体的には、クエン酸やリンゴ酸などの有機酸を根から分泌し、アルミニウムとキレート錯体を形成するか、アルミニウムイオンと腐植が結合し、植物への吸収を抑制する。これらのメカニズムにより、植物はアルミニウム毒性から身を守り、酸性土壌でも生育することが可能となる。
/** Geminiが自動生成した概要 **/
粘土鉱物を肥料として活用する目的は腐植蓄積だが、粘土鉱物と腐植の繋がりは疑問が残る。2:1型粘土鉱物は正電荷が少ないため、有機物とのイオン結合による蓄積モデルでは説明が不十分。しかし、現実には2:1型粘土鉱物投入で土壌改良効果が見られる。これはAl由来の正電荷以外の結合機構を示唆する。ヒントとして、カオリン鉱物と酢酸カリウムの水素結合、スメクタイトとアルキルアンモニウムの正電荷による結合が挙げられる。腐植蓄積にはこれら以外のメカニズムが関与していると考えられ、特定の肥料と現象がその鍵を握る可能性がある。
/** Geminiが自動生成した概要 **/
粘土鉱物は、岩石の風化によって生成される微粒で層状の珪酸塩鉱物です。風化には、物理的な破砕と、水や酸との化学反応による変質があります。カリ長石がカオリンに変化する過程は、化学的風化の例です。鉱物の風化しやすさは種類によって異なり、一般的に塩基性の強い火山岩ほど風化しやすいです。同じ珪酸含有量でも、急速に冷えて固まった火山岩は、深成岩より風化しやすい石基を多く含みます。そのため、玄武岩のような火山岩は斑れい岩のような深成岩よりも風化しやすく、結果として異なる種類の粘土鉱物が生成されます。
/** Geminiが自動生成した概要 **/
石灰性暗赤色土を理解するために、石灰岩の成り立ちから考察している。石灰岩はサンゴ礁の遺骸が堆積して形成されるが、海底のプレートテクトニクスによる地層の堆積順序を踏まえると、玄武岩質の火成岩層の上に形成される。滋賀県醒ヶ井宿や山口県秋吉台など、石灰岩地域周辺に玄武岩が存在することはこの堆積順序と一致する。つまり、石灰性暗赤色土は石灰岩だけでなく、周辺の玄武岩の影響も受けていると考えられる。玄武岩の影響は土壌の赤色や粘土質を説明する要素となる。暗赤色土に見られる色の違い(赤~黄)は玄武岩質成分の量の差と推測できる。
/** Geminiが自動生成した概要 **/
竹野海岸のグリーンタフ(緑色凝灰岩)は、日本海形成時の火山活動で噴出した火山灰が海底に堆積し、熱水作用で変質した岩石。その緑色は、含まれる鉱物中の鉄イオンが酸化第二鉄から酸化第一鉄に変化したため。風化すると褐色になる。
グリーンタフは、その形成過程から、当時の日本海の環境や地殻変動を知る上で重要な手がかりとなる。周辺には、グリーンタフが風化してできた粘土質の土壌が広がり、水はけが悪く、稲作には不向きだが、果樹栽培などに適している。
記事では、グリーンタフを観察しながら、岩石の風化と土壌形成のプロセス、そして地域の農業との関連について考察している。火山活動が生み出した岩石が、長い時間をかけて土壌へと変化し、地域の産業に影響を与えていることを示す好例と言える。
/** Geminiが自動生成した概要 **/
SOY Shopは2009年12月18日にベータ版公開、CSS Nite忘年会でお披露目された。開発当初はプログラミング未経験だったが、マニュアル作成やバグ報告、軽微な修正を担当。後に支払いモジュール開発でスキルアップし、構築サイトが情熱大陸で紹介されるなど貴重な経験を得た。中でも、多様な業種のネットショップ構築を通して商売事情を学べたことが、現在の商売の基礎となっている。開発元を去った後も、オープンソースとして非公式にメンテナンスを継続していく。
/** Geminiが自動生成した概要 **/
Ubuntu 19.10でSnap版Bracketsのライブプレビューが「ファイルへのアクセスが拒否されました」エラーで動作しない問題の対処法。Brackets 1.14 (snap経由)、Chromium 79.0.3945.79 (snap)環境で、GitHubのIssueを参考に解決。解決策は、Bracketsのメニュー「File」→「Enable Experimental Live Preview」を有効にすること。これにより、設定済みのブラウザ(ChromiumやFirefox)でライブプレビューが正常に動作するようになった。
/** Geminiが自動生成した概要 **/
SOY Shopのマイページログイン用パスワード自動生成プラグインがアップデートされ、管理画面から顧客を追加する際にもパスワードが自動生成されるようになりました。従来は顧客がマイページ登録時のみ自動生成でしたが、今回の更新で管理画面からの登録にも対応。これにより、顧客情報のCSVインポートや一括登録時にもパスワードが自動生成され、管理者の負担を軽減します。生成されたパスワードは登録完了メールに記載され、顧客はすぐにマイページにログインできます。この機能はプラグインの設定画面で有効/無効を切り替え可能です。
/** Geminiが自動生成した概要 **/
SOY Shopの商品名サブタイトルプラグインを追加しました。長い商品名が見切れてしまう問題を解消するため、サブタイトルを入力できるフォームを設けました。サブタイトルは別のHTMLタグで出力できるため、商品名と分けて表示できます。このプラグインに合わせて、カスタムサーチフィールド等の検索モジュールでは、商品名とサブタイトルの両方を検索対象に含めました。最新版はsaitodev.co/soycms/soyshop/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
Ubuntu 19.10上のsendmailの起動とメール送信が非常に遅く、1分以上かかっていた。テスト送信時に「Domain of sender address does not exist」エラーが発生し、送信元メールアドレスが見つからないことが原因と判明。/etc/hostsに`127.0.1.1 ex1-234-56789.vs.sakura.ne.jp ex1-234-56789` (ex1-234-56789はサーバ名)を追加し、sendmailを再起動したところ、送信が数秒で完了するようになった。
/** Geminiが自動生成した概要 **/
SOY Shop用出荷予定日通知プラグインが開発されました。注文から即時出荷を売りにするサイト向けに、サイト上で現在の注文の出荷予定日を表示できます。営業日カレンダーと連携し、定休日を考慮した正確な日付を表示。表示文言は営業日・定休日の午前・午後それぞれ設定可能です。通常版に加え、商品ごとに異なる出荷日・文言を設定できる商品毎出荷予定日通知プラグインも追加されました。パッケージはsaitodev.co/soycms/soyshop/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shopユーザー向けに、商品・カテゴリ・顧客ごとにメモを残せる「SOY Shopノートパッドプラグイン」を開発しました。管理画面の詳細画面にWYSIWYGエディタ付きのメモエリアを追加し、画像やリンクの挿入も可能です。メモ投稿後は詳細画面にリンクが表示されます。現在はタイトルと本文のみですが、検索性向上などの拡張も検討中です。ダウンロードはsaitodev.co/soycms/soyshop/ から可能です。顧客からの要望を元に、簡単な引継ぎ情報共有を目的として開発され、商品、カテゴリ、顧客の詳細画面にメモを残すことができます。
/** Geminiが自動生成した概要 **/
国産小麦はグルテン量が少ないとされ、土壌や気候、品種が影響する。子実タンパク質中のグリアジンとグルテニンがグルテン量を左右し、窒素肥料や土壌水分、登熟期の温度が影響するものの、詳細は不明瞭。興味深いのは、黒ボク土壌で麺用小麦を栽培するとタンパク質含有率が高くなりすぎる場合、リン酸施用で収量増加とタンパク質含有率低下を両立できる点。北海道の黒ボク土壌とリン酸施用の関係が、国産小麦パンの増加に繋がっている可能性がある。
/** Geminiが自動生成した概要 **/
Google Analytics APIの承認取得に苦労した著者が、その過程を詳述。OAuth同意画面の設定から始まり、Googleからの度重なるメールでの指摘に対応していく。 ホームページ、プライバシーポリシーの設置、アプリ操作動画の提出を求められ、動画はクライアントIDの表示や言語設定など細かい指示に従い作成し直した。最終的に承認を得るまで、動画の翻訳やスコープ設定の不備など、多くの修正を余儀なくされた。
/** Geminiが自動生成した概要 **/
SOY CMSの記事一覧表示を自由にカスタマイズできる「記事一覧選択表示ブロックプラグイン」の紹介です。 通常の記事一覧ブロックはカテゴリーや検索結果に基づいて表示されますが、このプラグインでは記事ごとにチェックボックスで表示/非表示を選択可能。 記事編集画面にチェックボックスが追加され、チェックを入れた記事のみがブロックに表示されます。 これにより、ラベルに関係なく任意の記事をピックアップした一覧を作成できます。ブロックの設定方法の詳細はプラグイン詳細画面に記載。プラグインを含むパッケージはsaitodev.co/soycms/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
黒ボク土は、火山灰土壌であり、保水性、通気性、排水性に優れ、リン酸固定が少ないため、肥沃な土壌として認識されている。しかし、窒素供給力が低いという欠点も持つ。黒ボク土壌で窒素飢餓を起こさないためには、堆肥などの有機物施用と適切な土壌管理が必要となる。
記事では、鳥取砂丘の砂質土壌に黒ボク土を客土した圃場での栽培事例を通して、黒ボク土の特性と砂質土壌との比較、土壌改良の難しさについて考察している。黒ボク土は砂質土壌に比べて保水性が高い一方で、窒素供給力が低いことから、窒素飢餓対策が必要となる。また、砂質土壌に黒ボク土を客土しても、水管理の難しさは解消されず、土壌改良は容易ではないことが示唆されている。
/** Geminiが自動生成した概要 **/
SOY Shopの納品書に軽減税率商品の区分記載機能が追加されました。従来の「印刷用納品書作成プラグイン」を改修し、軽減税率対象商品と標準税率商品が混在する注文において、各商品の税率区分を自動で明記するようになりました。現在はdefaultテンプレートのみ対応しています。新規プラグイン開発ではなく既存機能の改修による対応で、https://saitodev.co/soycms/soyshop/からダウンロード可能なパッケージに含まれています。詳細な設定方法は既存の納品書作成チュートリアルを参照ください。
/** Geminiが自動生成した概要 **/
この記事は、病害虫対策において先手を打つことの重要性を、畑A, B, C, Dを例に説明しています。畑Aが土壌微生物による虫忌避対策を行うと、害虫は他の畑B, C, Dに移動し、これらの畑は殺虫剤の増加による経費増、あるいは収率減に見舞われます。 Aの成功を見てCも対策を始めると、害虫はBとDに集中し、Dは経営悪化で倒産。最終的にAがDの土地を獲得します。これは、先見の明を持つ者が利益を独占するビジネスの典型的な勝ちパターンだと指摘。 最初に何をするべきかを見極めた者が、農業経営においても成功を収めると結論づけています。
関連の記事では、家畜糞堆肥の使用中止を推奨しています。理由は、堆肥の過剰な投入は土壌のバランスを崩し、病害虫の発生を招くため。堆肥に頼らず、土壌本来の力を活かすことが重要だと主張しています。
/** Geminiが自動生成した概要 **/
SEO対策として表示速度向上に取り組んでいるサイト運営者が、SOY CMSの記事詳細表示を高速化するプラグインを開発した。従来、柔軟性のため記事テーブルのエイリアスカラムにUNIQUEインデックスを貼っていなかったが、今回ユニーク制約を設けることで高速化を実現。同時に、記事の投稿時刻にもインデックスを追加し、アーカイブページの表示速度も向上させた。投稿時刻は同時刻投稿の場合、1秒ずらす仕様とした。このプラグインはダウンロード後、有効化することでデータベースに反映される。
/** Geminiが自動生成した概要 **/
PHPで並行処理を行う方法として、exec関数でジョブファイルを実行する方法が紹介されています。ジョブファイルはバックグラウンドで実行され、メインプロセスとは独立して動作します。ただし、ジョブファイルの結果をメインプロセスに返すことができないという欠点があります。
記事では、Google OAuthを使ったジョブで、メインプロセスのセッション情報をジョブファイルで利用する方法についても説明されています。ジョブファイルの引数にセッションIDを渡し、ジョブファイル内でセッションを復元することで、アクセストークンなどのセッション情報を共有できます。
最終的に、ジョブの結果をメインプロセスで扱う方法については触れられていませんが、Go言語やNode.jsのような並行処理に適した言語の使用が推奨されています。
/** Geminiが自動生成した概要 **/
本記事は、殺菌剤がブドウの品質に与える影響を考察。特にボルドー液が土壌の糸状菌に作用し、フェノール性化合物の重合を阻害する可能性を指摘します。これにより、ブドウの発根ストレスが増加し、銅などの微量要素の吸収が低下。結果としてブドウの品質が下がり、病虫害に弱くなる懸念を提示しています。ミカンの不調事例も交え、根の健全な成長と栄養吸収の重要性を強調。一度栽培を始めると土壌改良が難しい果樹栽培において、殺菌剤の使用が土壌環境に与える影響と、それへの配慮が不可欠だと締めくくります。
/** Geminiが自動生成した概要 **/
SOY CMSとSOY Shopで、キャッシュファイル生成の失敗時に自動的にファイルを削除し再生成する機能が追加されました。これにより、文字抜けなどのキャッシュ生成の不具合が回避され、ウェブサイトが常に正確に表示されるようになります。
/** Geminiが自動生成した概要 **/
SOY Shopの商品毎にメール文面に定型文を挿入できるプラグインが開発されました。特定商品の注文時にのみ必要な情報を伝えるため、ワインの管理方法など、商品に応じた定型文をメールに自動挿入できます。プラグイン設定画面で定型文を作成し、商品登録時に選択することで、注文受付メールに反映されます。これにより、不要な情報を含めずに商品固有の注意点を伝えられます。現在は注文受付メールのみ対応ですが、今後の要望に応じて対応範囲を拡大する可能性があります。プラグインはsaitodev.co/soycms/soyshop/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shop用のプラグインで、複数カテゴリの商品一覧を1ページに表示できる機能を追加しました。標準のナビゲーションページではカスタムサーチフィールド等のプラグインとの連携が難しいため、簡易的に商品ブロックと同等の機能を実現するプラグインを開発。管理画面で生成個数を指定すると、`<shop:module>`と`<block:id="item_list">`を使った記述が生成され、`category`属性にカテゴリIDを指定することで各カテゴリの商品一覧が表示されます。カテゴリIDはカテゴリ詳細画面のURL末尾の数字で確認できます。今後はカスタムサーチフィールドにも対応した商品ブロック作成プラグインを開発予定です。現在はカテゴリと表示件数、カスタムサーチフィールドに対応したプラグインを公開中です。
/** Geminiが自動生成した概要 **/
ビタミンB12は、動物性食品に多く含まれる必須栄養素で、植物や菌類にはほとんど存在しない。土壌中の細菌がビタミンB12を生成するが、現代の衛生環境では摂取は難しい。ビタミンB12はDNA合成や赤血球形成に関与し、不足すると悪性貧血や神経障害を引き起こす。
一部の藻類もビタミンB12を含むとされるが、種類や生育条件により含有量は大きく変動する。そのため、ベジタリアンやビーガンはサプリメントなどで補う必要がある。ビタミンB12は他のビタミンB群と異なり体内に蓄積されるため、欠乏症の発症は緩やかだが、定期的な摂取が重要となる。
/** Geminiが自動生成した概要 **/
福岡県糸島市の海岸沿いの畑の土壌分析結果で、苦土(マグネシウム)が異常に高く、カリウムも多いという不思議な現象が見られた。現地調査の結果、畑の土は近隣の森を切り崩した土で客土されており、周囲の地質は花崗岩主体だが、斑れい岩質の深成岩も存在する事がわかった。斑れい岩は苦土や鉄を多く含むため、客土された土に斑れい岩由来の成分が含まれていると推測される。この仮説は、畑の土から緑色の鉱物粒子が確認されたこと、土壌図で畑が森林土に分類されていることからも裏付けられる。通常の砂質土壌とは異なり、この畑では苦土による緩衝作用は期待できないため、腐植による緩衝に注力する必要がある。近隣の他の畑は通常の砂質土壌で、今回の畑は特殊な事例と言える。
/** Geminiが自動生成した概要 **/
SOY Shop用の商品毎メールアドレス追加プラグインがリリースされました。以前開発された商品ごと送料設定モジュールから、注文時に商品ごとに異なるメールアドレスへ自動送信する機能を抽出したものです。代理店販売などで活用できます。プラグインは、商品ごとに追加のメールアドレスを設定可能にし、注文時にそのアドレスへ自動送信されます。詳細はsaitodev.co/soycms/soyshop/ で公開されているパッケージからダウンロードできます。
/** Geminiが自動生成した概要 **/
SOY ShopにBootstrap 4ベースのカート・マイページテンプレートが追加されました。レスポンシブ対応はもちろん、予約カレンダー連携機能も強化されています。仕様の見直しにより、簡易予約カレンダープラグインとの連携で便利な機能が利用可能になりました。使用方法の詳細はプラグインページをご覧ください。ダウンロードはsaitodev.co/soycms/soyshop/から可能です。
/** Geminiが自動生成した概要 **/
SOY ShopのGoogle Sign-In for Websitesプラグインにボタン拡張設定が追加されました。従来のシンプルなログインボタンに加え、JavaScriptでカスタマイズ可能なボタンを実装できます。管理画面のサンプルコードを元に、大きさやデザインを自由に調整可能です。この拡張により、カートページ等のデザインとの調和が容易になり、より柔軟なサイト構築が可能になります。更新版プラグインはsaitodev.co/soycms/soyshop/からダウンロードできます。
/** Geminiが自動生成した概要 **/
紀伊半島南部の熊野灘沿岸には、付加体と海底火山の痕跡が見られる。付加体はプレートの沈み込みによって海洋プレート上の堆積物が陸側に押し付けられ、陸側のプレートに付加したもの。牟婁層群と呼ばれる地層は、砂岩や泥岩の層に玄武岩やチャートなどの岩塊が含まれており、典型的な付加体である。また、これらの地層には枕状溶岩や水中火山砕屑岩も含まれており、海底火山の噴火活動があったことを示している。特に、白浜町の海岸では、枕状溶岩が露出しており、海底火山の噴火の様子を鮮やかに物語っている。これらのことから、熊野灘沿岸地域は、かつて活発な海底火山活動があった海域だったことがわかる。
/** Geminiが自動生成した概要 **/
SOY Inquiryで日付入力にカレンダー形式を追加するには、jQuery UIのDatepickerを利用します。まず、フォーム設置ページのテンプレートにjQueryとjQuery UI、日本語化ファイルのCDNを読み込むscriptタグを追加します。次に、SOY Inquiryで日付のカラムを作成し、属性に`id="datepicker"`を設定します。これにより、フォームにフォーカスを当てるとカレンダーが表示され、日付を選択できるようになります。Datepickerは日付選択の制限等、高度な設定も可能です。詳細はjQuery UIの公式ドキュメントを参照ください。
/** Geminiが自動生成した概要 **/
SOY Inquiryで多言語サイトを構築する際、問い合わせ番号や日時が日本語で送信される問題を解決する方法です。mail.user.phpをカスタマイズし、メール本文中の「問い合わせ番号」「問い合わせ日時」を各言語に置換します。コード例では、explodeで本文を分割し、strposで該当箇所を特定、str_replaceで置換後、implodeで再構築しています。この方法で各言語用のフォームを用意すれば、多言語対応の問い合わせメールを実現できます。
/** Geminiが自動生成した概要 **/
画像データが容量の大部分を占めるサイト運営において、さくらのVPS 1Gプランのストレージ容量が逼迫し、バックアップ時の負荷でサイト表示に不調が生じていたため、追加ストレージ(NFS)の導入手順を解説。
まず、VPSコントロールパネルでスイッチを作成し、アプリケーションサーバとNFSのネットワークインターフェースに紐づける。次に、追加ストレージ(NFS)を契約し、IPアドレスとネットマスクを設定、同じくスイッチを紐づける。
その後、SSHでアプリケーションサーバに接続し、マウントポイントを作成、ネットワークインターフェースを設定、NFSをマウントするコマンドを実行。最終的に、再起動後も自動マウントされるようcrontabを設定する。
記事ではUbuntu 18.04.2での手順を記述。また、SOY CMSでNFSを利用するためのプラグイン開発中であり、問い合わせフォームへのリンクを掲載している。
/** Geminiが自動生成した概要 **/
SOY Shopの注文詳細画面に、商品毎の状態管理機能を追加するプラグインが開発された。これにより、例えば一部出荷や在庫不足といった状況を商品単位で管理し、担当者間での情報共有をスムーズにすることが可能になる。プラグイン導入後は、設定画面で任意の状態を追加できる。
開発の背景には、注文数と出荷可能数が異なる場合の状況管理の煩雑さを解消する目的がある。商品毎に「配送途中」などの状態を付与し、コメント欄に詳細を記録することで、配送状況の共有コスト削減が期待される。
このプラグインは、営業事務向けの機能強化の一環として開発され、管理画面の利便性向上に貢献する。ダウンロードはサイト(https://saitodev.co/soycms/soyshop/)から可能。
/** Geminiが自動生成した概要 **/
SOY Shopを顧客管理業務アプリとして活用する中で、顧客ごとに異なる価格設定が必要になったため、特別会員価格設定プラグインを導入。しかし管理画面からの注文登録時に商品ごとの価格一覧が確認できない問題が発生した。そこで、注文登録画面で商品に追加価格設定がある場合、価格一覧ボタンを表示し、ポップアップで確認できるように改良。これにより、商品編集画面を開かず価格を確認できるようになり、問屋業などでの利便性向上に繋がる。改良版はサイトからダウンロード可能。合わせて顧客管理機能強化、管理画面のみ使用モード、注文状態並び替え、商品確認済ステータス追加など関連記事も紹介。
/** Geminiが自動生成した概要 **/
SOY Shop用カテゴリ版まとめ買い割引プラグインが開発されました。従来の全商品対象ではなく、カテゴリ毎に割引設定が可能になります。指定カテゴリ商品の個数/金額による割引設定、特定価格以上の商品限定、割引適用個数上限設定など、柔軟な割引ルールを設定できます。例えば、カテゴリAの商品を3個以上、または合計金額が1万円以上で割引、カテゴリBの500円以上の商品を2個以上購入で割引、といった設定が可能です。ピザ2枚目半額のような割引も実現できます。ダウンロードはsaitodev.co/soycms/soyshop/ から。
/** Geminiが自動生成した概要 **/
SOY Inquiryにフォーム毎の通し番号を自動生成する機能が追加されました。この機能は、送信完了画面、自動返信メール、管理画面の受信一覧に表示可能です。通し番号は連番カラムで管理され、非表示設定も可能です。管理画面で連番カラムをフォームの最初に配置すれば、受信一覧での表示も実現できます。「次回お問い合わせ時に生成する番号」を設定することで、番号を飛ばすことも可能です。機能追加版はサイトからダウンロードできます。ただし、自作デザインのフォームを使用する場合は、PHPファイルの修正が必要です。修正方法の解説ページも用意されていますが、難しい場合はサイトから問い合わせも可能です。
/** Geminiが自動生成した概要 **/
SOY Shopで注文状態の並び順を設定できるプラグインが開発されました。 管理画面の注文一覧表示で、標準の状態遷移に沿わない並び順への変更ニーズに応えるものです。プラグインを有効化すると、設定画面で自由に注文状態の表示順をドラッグ&ドロップで変更できます。これにより、ショップ独自のワークフローや業務の優先順位に合わせた表示が可能になり、作業効率の向上が期待できます。例えば、「入金待ち」を「発送待ち」より前に表示するなど、柔軟なカスタマイズが可能です。設定は簡単で、直感的な操作で変更できます。このプラグインは、SOY Shopの標準機能では実現できなかった注文状態の表示順のカスタマイズを可能にし、より効率的な受注管理を実現するツールとなります。
/** Geminiが自動生成した概要 **/
SOY CMSでMySQL 8系に接続できない場合、認証方式の違いが原因です。MySQL 8系は`caching_sha2_password`がデフォルトですが、SOY CMSは`mysql_native_password`で接続します。解決策は、MySQLの設定ファイル`mysqld.cnf`の`[mysqld]`セクションに`default_authentication_plugin=mysql_native_password`を追加し、MySQLを再起動します。新規インストール時はインストール時に`mysql_native_password`を指定できます。既存ユーザの場合は、MySQLにログインし`ALTER USER 'ユーザ名'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスワード';`を実行し、`FLUSH PRIVILEGES;`で変更を適用します。
/** Geminiが自動生成した概要 **/
筆者はかつてSOY CMSの開発元で働いていたが、開発元が農業事業に転換する際に退職し、以来個人でSOY CMS/Shopの開発を続けている。開発継続の理由は、SOY Shopを利用するユーザーのビジネスを支える責任感と、カスタマイズ依頼による収入で生活が成り立っているため。一方で、開発元の権利所有により公式の場での活動が制限され、SOY CMSの衰退を危惧している。生活のため、新規ユーザー獲得よりも既存ユーザーの売上向上に注力し、新機能紹介プラグインなどを開発。自身のサイト運営を通してSOY CMSの魅力を伝えることで、間接的な普及も目指している。開発元にはGitHubでの公開とユーザー主体の運営への移行を希望し、ユーザーからの寄付や支援に感謝しつつ、非公式ながらも開発を継続する意思を表明している。
/** Geminiが自動生成した概要 **/
SOY CMSで現在開いているURLを出力する`cms:id="page_link"`タグが追加されました。これにより、OGPタグなどに動的なURLを挿入できます。また、カノニカルURL挿入プラグインも作成されました。サイト内に同じ内容のページがある場合、canonicalメタタグで重複を回避し、SEOペナルティを防ぎます。プラグインは</head>タグの上に`<link rel="canonical" href="ページURL">`を自動挿入します。ブログ記事では、エイリアス付きURLがカノニカルURLとして使用されます。新機能はhttps://saitodev.co/soycms/からダウンロードできます。
/** Geminiが自動生成した概要 **/
SOY Shopで注文番号をバーコード化できるプラグインを開発。CODE39規格を採用し、ハイフンを含む注文番号に対応。生成されたバーコードはCCDバーコードリーダーで読み取り可能だが、初期設定では長すぎて認識エラーが発生。リサイズで対応。プラグインはsaitodev.coからダウンロード可能。バーコード生成にはPHP Barcode Generatorを使用。現時点ではSOY Shop標準機能としての用途は未定だが、活用アイディア募集中。
/** Geminiが自動生成した概要 **/
SOY Shopで商品ごとにJANコードを登録・バーコード表示するプラグインが開発されました。管理画面の商品詳細画面にJANコード入力欄が追加され、入力するとバーコード画像が生成されます。生成されたバーコードは市販のバーコードリーダーで読み取り可能であることが確認されています。プラグインはsaitodev.coからダウンロードできます。バーコード生成にはPHP Barcode Generatorが使用されています。現状、SOY Shop標準機能でのこのプラグインの用途は未定ですが、活用アイデアは問い合わせフォームから募集中です。
/** Geminiが自動生成した概要 **/
SOY Shopの注文状態(ステータス)並び替えプラグインが開発されました。 管理画面で注文状態の並び順をカスタマイズでき、業務フローに合わせた表示が可能になります。 以前開発された「注文状態追加プラグイン」で追加したステータスも含め、標準ステータスと合わせて自由に並び替えられます。 発送済み前に梱包済みステータスを配置するなど、業務に合わせた並び順でミスの軽減、作業効率向上が期待できます。 パッケージはsaitodev.co/soycms/soyshop/ からダウンロード可能です。
/** Geminiが自動生成した概要 **/
この記事は、植物における葉酸の役割について考察しています。筆者は、ヒトではDNA合成に関わる葉酸が植物でも同様の働きをしていると仮定し、ホウレンソウにビタミンB12が含まれると予想しましたが、実際には含まれていませんでした。そこで、植物における葉酸の機能について論文を調べた結果、シロイヌナズナでは葉酸が光合成を行わない色素体において、スクロースからデンプンへの変換を抑制することを発見しました。つまり、葉酸は植物の成長と貯蔵のバランスを調節する役割を担っており、成長期には葉酸合成が盛んになる可能性が示唆されています。このことから、葉酸の存在は植物の活発な成長を示す指標となる可能性がある一方、乾燥ストレスのような環境変化時には貯蔵に切り替わるため、単純に葉酸が多い野菜が常に良いとは言えないと結論付けています。
/** Geminiが自動生成した概要 **/
SOY CMSのGravatar連携プラグインは、ブログ投稿者のプロフィール画像を簡単に表示できるツールです。Gravatarに登録されたメールアドレスと連携し、自動的に画像を取得・表示します。プラグイン設定画面でGravatarの画像サイズを指定でき、記事詳細ページやブログのサイドバーなど、任意の場所に設置可能です。 記事投稿時に投稿者のメールアドレスを入力するだけで、Gravatar画像が反映されるため、ユーザーの手間を省き、サイトの見栄えを向上させます。 画像がない場合はデフォルト画像が表示され、Gravatar未登録ユーザーにも対応しています。このプラグインで、手軽にブログに個性を加えることができます。
/** Geminiが自動生成した概要 **/
SOY CMSのカスタムフィールドアドバンスドプラグインに、記事を出力できる「記事フィールド」機能が追加されました。記事の投稿・編集画面で、ラベル設定済みの公開記事を選択し、任意の場所にその記事内容を出力できます。
現状は試作段階で、パフォーマンスへの影響を考慮し、選択可能な記事はラベル設定済みの公開記事20件までに制限されています。これは、長い定型文を記事によって出し分けたいというニーズに応えるための機能で、セレクトボックスから記事を選択する方式です。
制約事項として、記事の投稿・編集画面で指定できるのはラベル設定済みの記事のみ、ラベル指定時のセレクトボックスに表示される記事数は20件、選択できるのは公開記事のみとなっています。これらの制約は、今後の使用状況に応じて調整される予定です。
/** Geminiが自動生成した概要 **/
舞鶴でのグローバック栽培に関する勉強会をきっかけに、地域の土壌と水質について考察。グローバック栽培は初期費用が安く土壌病害のリスクも低い一方、水耕栽培のため原水のpH調整が重要となる。舞鶴のある施設では原水pHが7.5と高く、周辺の地質が斑れい岩であることを確認。斑れい岩は塩基性火成岩で、pHを高める鉱物を多く含むため、水質も高pHになると推測。さらに、塩基性火成岩はカリウム含有鉱物が少なく、土壌分析の結果もカリウム不足を示唆。カリウムは根の吸水に重要で、舞鶴の栽培ではカリウム肥料の施用が必須。土壌だけでなく、散水に使う川の水のミネラル組成も考慮する必要がある。
/** Geminiが自動生成した概要 **/
IT関連以外の方との共同作業で、Wordファイルの消失を恐れる相手にDropboxの活用を提案した体験談。Dropboxにファイルを置くことで自動保存・共有、バージョン管理による変更履歴の保持が可能となり、ファイル消失や変更差し戻しへの不安を解消できる。バージョン管理はGit利用者には必須の機能で、DropboxのWebサイト上で過去のバージョンに戻せる。Dropbox利用でファイル名の変更によるバージョン管理の手間も省ける。ただし、企業によってはセキュリティ上の懸念からDropboxのような外部サービス利用を禁止している場合もある。競合他社はこうしたサービスを活用し、事務コスト削減で商品開発に注力し、競争優位に立つ可能性があるため、時代遅れにならないようWebサービス導入と個人スキルの向上が重要。
/** Geminiが自動生成した概要 **/
SOY Shopの新機能紹介プラグインが開発されました。このプラグインは、SOY Shop管理画面の新着ページに、開発ブログで紹介されている新機能の記事一覧を表示します。開発者は、SOY Shopの豊富な機能をユーザーに最大限活用してほしいと考えていますが、新機能の情報が届きにくいことが課題でした。そこで、管理画面に新機能紹介記事を表示することで、ユーザーのオペレーション効率化や売上向上に繋がるヒントを提供することを目指しています。ただし、開発者寄りの情報になる可能性もあるため、掲載内容については、事例紹介なども含めて検討していく予定です。新機能紹介プラグインを含むパッケージはsaitodev.coからダウンロードできます。
/** Geminiが自動生成した概要 **/
SOY Shopは、9年の歴史の中で機能強化を重ね、ネットショップだけでなく業務アプリとしての需要が高まっている。今回、業務アプリ利用時のサンプルデータ削除の手間を省くため、「管理画面のみ使用モード」が追加された。サイト作成時にチェックを入れるだけで、サンプルデータなしで管理画面を利用できる。 業務アプリとして利用する場合はMySQLデータベース推奨。併せて、管理画面の使い始めのガイダンスも追加された。このアップデートにより、在庫管理や顧客管理など、SOY Shopを業務システム基盤として活用する際の初期設定が簡素化される。ダウンロードは公式サイトから可能。
/** Geminiが自動生成した概要 **/
SOY Shopの長年の運営でSQLiteからMySQLへのデータベース移行の需要が高まり、今回専用の移行プラグインが開発された。SQLiteはファイルベースでサーバーのスペックに依存する一方、MySQLはサーバーベースでリソース割り当てによるパフォーマンスチューニングが可能となる。ただし、MySQL移行自体が速度改善を保証するわけではなく、サーバー環境によっては逆効果になる場合もある。特に共有サーバーでは注意が必要。移行プラグインは、サーバー移転を伴うデータベース移行作業の簡素化を目的としており、チューニング可能なサーバーへの移転と合わせて検討することが推奨される。プラグインはsaitodev.coからダウンロード可能。
/** Geminiが自動生成した概要 **/
SOY CMSにBootstrap4ベースのブログページ用テンプレートを追加しました。ダウンロードURL(https://github.com/inunosinsi/soycms/raw/master/cms/common/logic/admin/Site/TemplatePack/bootstrap4.zip)からテンプレートzipファイルをダウンロードし、管理画面からアップロード・インストールすることで利用可能です。手順は添付画像を参照ください。新規サイト作成時にはこのテンプレートがデフォルトで含まれるようになりました。同梱パッケージはsaitodev.co/soycms/ からダウンロードできます。
/** Geminiが自動生成した概要 **/
ヘアリーベッチは、窒素固定に加え、アレロパシー作用で雑草を抑制する緑肥です。根から分泌されるシアナミドが雑草種子の休眠を打破し、時期外れの発芽を促して枯死させる効果があります。シアナミドは石灰窒素の成分であり、土壌消毒にも利用されます。裏作でヘアリーベッチを栽培すれば、土壌消毒と土壌改良を同時に行え、後作の秀品率向上に繋がると考えられます。さらに、ヘアリーベッチは木質資材の分解促進効果も期待できるため、播種前に安価な木質資材をすき込むことで、土壌改良効果とシアナミド分泌量の増加が期待できます。この手法は従来の太陽光と石灰窒素による土壌消毒より効果的かもしれません。今後の課題は、シアナミドの作用点と、効果のない土壌微生物の特定です。
/** Geminiが自動生成した概要 **/
SOY Shopユーザーから注文商品の一括割引操作の効率化要望を受け、「注文商品の単価一括変更プラグイン」を開発しました。 注文詳細画面に新設されたフォームで、割引率と増減、端数処理(四捨五入)を指定することで、複数商品の単価を一括変更できます。商品点数が多い場合の作業負担を軽減します。現在はバックアップ機能は未実装ですが、今後のアップデートで追加予定です。プラグインを含むパッケージはsaitodev.co/soycms/soyshop/ からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shopで商品登録時に商品コードを手動で入力するのは手間がかかる。特に、商品コードが見積書などに必要ない場合でも、システム上必須となるため、重複しないコードを考える負担が生じる。この問題を解決するため、商品コードの自動生成機能が追加された。管理画面で設定を有効にすると、ランダムなコード、もしくは指定した接頭語と連番を組み合わせたコードが自動で挿入される。これにより、商品登録作業の効率化と時間短縮を実現する。この機能を含むパッケージはsaitodev.coからダウンロード可能。
/** Geminiが自動生成した概要 **/
台風によるイネの倒伏被害を抑えるには、ケイ酸の吸収促進が有効である。イネはケイ酸を吸収し、細胞壁に蓄積することで茎葉を強化する。しかし、ケイ酸は土壌中で不溶化しやすく、吸収されにくい形態も多い。そこで、ケイ酸資材を施用することで吸収可能なケイ酸量を増やし、倒伏抵抗性を高める。さらに、ケイ酸吸収を促進する遺伝子の研究も進められており、品種改良による解決も期待されている。これらの取り組みによって、台風被害の軽減と安定した収穫量の確保を目指している。
/** Geminiが自動生成した概要 **/
SOY Shopでカテゴリごとに商品一覧の並び替え順を変える方法。カスタムフィールドで「使用人数」や「使用温度」などの項目を作成し、ソートに利用する設定にする。データベースのカラム型を数値に変更。soyshop.item.list拡張ポイントでプラグインを作成し、getSortメソッドでカテゴリごとに異なるソート条件を返す。テントなら使用人数の降順、シュラフなら使用温度の昇順など。標準設定は価格の昇順にする。URLを変えずに同一ページで並び替え順を変えられるため、SEOにも有効。
/** Geminiが自動生成した概要 **/
SOY Shopはネットショップだけでなく実店舗の販売管理にも利用されるようになり、複数店舗で「誰が注文を受け付けたのか」を把握するニーズが高まった。従来、各店舗のアカウントで管理すれば変更履歴に対応者IDが残るが、カート注文では意図したIDが記録されない問題があった。そこで、カート注文にはシステム側で特定の値を挿入する機能と、対応者IDで検索できるプラグインを追加。これにより、ネット注文と実店舗注文のどちらでも、対応者による注文の絞り込みが可能になった。このアップデートは地味ながらも、業務効率化に繋がる重要な改善である。
/** Geminiが自動生成した概要 **/
京都農販は、多様なニーズに対応するパイプハウス施工の実績を持つ。カタログでは、強度と耐久性に優れた単棟ハウスから、連棟ハウス、特殊ハウスまで幅広い施工事例を紹介。環境制御技術を駆使した温度・湿度管理、CO2施用、養液栽培システムなど、高品質な農作物生産を支援する設備も提案。 耐候性・耐食性に優れた資材を使用し、積雪や強風対策も万全。施工事例を通して、設計から施工、アフターサービスまで一貫体制によるサポートを提供することで、顧客の農業経営の成功に貢献する姿勢を示している。カタログは、パイプハウス導入を検討する農業者にとって、貴重な情報源となるだろう。
/** Geminiが自動生成した概要 **/
京都農販は、SOY Shopを活用し農業用パイプハウスの見積り作成システムを構築。従来のエクセル作業を1時間程度に短縮、大幅な効率化を実現した。しかし、見積り作成途中での保存・復元に関するUIの課題から、下書き通知プラグインを開発。管理画面の新着ページに下書きの有無を通知し、バックアップ復元へのアクセスを容易にしたことで、作業開始の遅延を解消。 この改善により、マニュアル作成の手間も削減。パイプハウス見積り作成の効率化をさらに促進している。詳細はsaitodev.coで公開されているパッケージから確認可能。京都農販のパイプハウス施工事例は別途PDFで公開されている。
/** Geminiが自動生成した概要 **/
NHK「サラメシ」への出演を夢見て、投稿するも取材が来ないため、自作のサラメシページを作成したという内容です。ページではカレンダー形式で毎日のお弁当写真が掲載されており、クリックすると詳細とコメントが見られます。 自ら毎日二人分のお弁当を作る作者にとって、このページ作成はモチベーション向上に繋がっています。サイトには11月分のサラメシ写真が掲載されており、クリックするとその日のメニューとコメントが確認できます。このカレンダー形式の記事一覧表示機能はSOY CMSを用いて実装しており、作り方解説記事へのリンクも紹介されています。
/** Geminiが自動生成した概要 **/
SOY CMS ASP版運営プラグインに続き、SOY AppのUIをSOY CMS 3系のレスポンシブウェブデザインに合わせました。これにより、SOY Shopサイトの新規作成画面、SOY Mail、SOY InquiryのUIがBootstrapベースのレスポンシブデザインで表示されます。SOY Appのバージョンアップ前にSOY CMSのバージョンアップが必要です。最新のパッケージはsaitodev.co/soycms/からダウンロードできます。
/** Geminiが自動生成した概要 **/
SOY CMSのASP版を提供するためのプラグインが開発されました。このプラグイン「SOY CMS ASP版運営プラグイン」は、SOY CMSのマルチサイト機能を活用し、利用登録フォームからアカウントと紐付いたサイトを自動作成します。ASP運営者はサーバーにSOY CMSとプラグインをインストールし、利用登録フォームを設置するサイトを作成。フォーム設置後、公開側からの登録でアカウントとサイトが作成されます。これにより、簡単にSOY CMSのASPサービスを提供可能になります。パッケージはsaitodev.co/soycms/からダウンロードできます。
/** Geminiが自動生成した概要 **/
Go言語でGoogle Search Console APIから検索クエリデータを取得する方法を解説しています。必要な手順として、Google Cloud ConsoleでSearch Console APIを有効化し、認証情報を作成、Search Console側でユーザー権限を設定します。Goのコードでは、`golang.org/x/oauth2`、`google.golang.org/api/webmasters/v3`ライブラリを使用し、認証情報`secret.json`を用いてSearch Console APIにクエリを送信、過去7日間の検索クエリデータを取得・表示します。
/** Geminiが自動生成した概要 **/
サナギタケは、昆虫に寄生する冬虫夏草の一種。その胞子の在り処を探るため、地面に接する部分に注目した。土壌に含まれる菌のコロニー形成を阻害する寒天培地を用いて、サナギタケ菌糸の生育と胞子形成を観察。結果、サナギタケの菌糸は培地上で伸長し、子実体を形成、胞子を放出した。これは、サナギタケの胞子が土壌中ではなく、空気中に存在し、宿主となる昆虫に付着することで感染することを示唆している。さらに、サナギタケが寄生する昆虫の生態を考慮すると、胞子は地表付近に多く存在する可能性が高いと考えられる。
/** Geminiが自動生成した概要 **/
Go言語でJSONを扱う方法について解説されています。 `sample.json`ファイルにID、名前、読み仮名などのデータを保存し、`main.go`でそのデータを読み込んで利用する方法が示されています。 `ioutil.ReadFile`でJSONファイルを読み込み、`json.Unmarshal`でGoの構造体`Sample`に変換します。`Sample`構造体はJSONデータのキーに対応するフィールドを持ちます。変換後、`sample.Name`のようにアクセスすることで、JSONデータの値を取得できます。
/** Geminiが自動生成した概要 **/
著者は、以前に撮影した椎茸の写真が本当に椎茸か確信が持てなかった。 通常イメージする椎茸と異なり、傘の縁が波打ち白い綿毛がなかったためだ。
その後、きのこ図鑑で「若い椎茸には白い綿毛があり、古くなるとなくなり、縁も波打つ」という記述を発見。 写真の椎茸は老菌だったことが判明した。
この発見は、著者が抱えていた疑問の解消に繋がり、廃菌床堆肥の質に関する重要な問題に関係しているという。 詳細は次回に持ち越される。
/** Geminiが自動生成した概要 **/
SOY CMSブログで表示速度低下に悩んでいたところ、MySQL版が遅い共有サーバ環境のため、SQLiteに移行するプラグインを開発しました。ベンチマークは1.3倍改善、表示速度は2秒以下に。MySQL→SQLite、SQLite→MySQLの切り替えが可能で内部SEO対策にも有効です。Gravatar連携など一部プラグインは未対応ですが、カスタムフィールド等は対応済み。使用前にバックアップと注意点記事の確認を推奨。ダウンロードはsaitodev.co/soycms/から。この開発を通して、MySQL専用CMSは共有サーバではSEO的に不利になりやすいと感じました。
/** Geminiが自動生成した概要 **/
Go言語でランダムな数字を出力するgenerate関数を作成する問題。generate()の実行結果を変数r(int型)に代入するため、generate関数はint型の値を返す。ランダムな数字を生成するには`rand`パッケージを使用し、`rand.Seed(time.Now().UnixNano())`でシード値を設定、`rand.Intn(10)`で0~9の乱数を生成する。`generate()`は引数を取らないため`()`内は空で、生成した乱数rを返すため`return r`が必要。
/** Geminiが自動生成した概要 **/
Go言語で、"こんにちはうさこさん"と出力するgreet関数を作成する練習問題。`greet(name)`に`name := "うさこさん"`を渡すと、指定の挨拶を出力する。greet関数は文字列型の引数`a`を受け取り、`fmt.Println`で挨拶を出力する。`greet()`の呼び出しで戻り値を変数に代入していないため、greet関数は返り値を持たない。よって、`return`文は不要。
/** Geminiが自動生成した概要 **/
Go言語で`f(x) = x + 2`を関数として実装し、x=3の結果を表示する例題。関数の定義は`func f(x int) int { y := x + 2; return y }`となる。`f(x int)`は整数型の引数xを受け取ることを、`int`は整数型の返り値を意味する。関数内では`x + 2`の結果をyに代入し、`return y`でyの値を返す。main関数では`f(3)`の結果をyに代入し、`fmt.Println(y)`で出力する。main関数とf関数では変数yのスコープが異なるため、f関数内のyは新規変数として扱われる。
/** Geminiが自動生成した概要 **/
SOY Shopの管理画面のロゴとアプリ名を変更できる設定が追加されました。これは、SOY Shopがネットショップだけでなく、在庫管理、顧客管理、見積り作成など多様な業務アプリとして利用されるケースが増えたためです。管理画面のロゴをカスタマイズすることで、納品時の説明の手間を省き、それぞれの用途に合わせた表示を実現します。
従来のネットショップとしての利用に加え、プラグインによる機能拡張で、顧客名簿管理や土壌分析アプリ、パイプハウス施工管理アプリなど、多様な業務システム構築が可能となっています。SOY Shopはネットショップ構築だけでなく、様々なビジネスニーズに対応できる柔軟性を備えたプラットフォームへと進化しています。
/** Geminiが自動生成した概要 **/
Go言語とQtでアルバイト給与計算フォームを作成。時給と時間を入力すると、合計金額が自動計算される。 QLineEditで入力値を取得し、strconv.Atoiで数値に変換、掛け算後、strconv.Itoaで文字列に戻し、goukeiInputに表示。入力値の変更を検知するために、jikanInputとjikyuuInputにConnectEditingFinishedを使い、calcAndInsert関数を呼び出している。 Clear()で以前の結果を消去してからInsert()で新しい結果を表示することで、値の更新を正しく行う工夫もされている。
/** Geminiが自動生成した概要 **/
SOY ShopにCoineyペイジ決済モジュールが追加されました。Coineyは、カードリーダー(Coineyターミナル)を用いた決済に加え、Coineyペイジを利用したオンライン決済にも対応しています。モジュール導入により、SOY Shop上でCoineyペイジへの遷移によるクレジットカード決済が可能になります。実店舗とネットショップ両方でCoineyを利用したい場合に最適です。設定方法はモジュール設定画面に記載されています。Coineyは交通系電子マネー決済にも対応しており、導入によりSuica等の電子マネー決済を簡便に導入できます。Coineyペイジは新機能のため、現時点ではテスト環境は未対応ですが、順次対応予定です。
/** Geminiが自動生成した概要 **/
Go言語でQtを用いて、アルバイト給与計算UIを作成するサンプルコードです。QGroupBoxで「時間」「時給」「給料1」「出勤日数」「交通費」「交通費合計」「給与合計」の入力欄をグループ化し、QGridLayoutで2x4のグリッドレイアウトに配置しています。各グループにはQLineEditとQLabelをQBoxLayoutで垂直配置し、グループ間には演算子を表示するQLabelを配置しています。
/** Geminiが自動生成した概要 **/
Go言語でQtのQLineEditを使い入力フォームを作成する方法を解説。QLineEditウィジェットを作成し、SetPlaceholderTextメソッドでプレースホルダーテキストを設定、AddWidgetメソッドでレイアウトに追加することで実現する。プレースホルダーは入力欄に初期表示されるヒントテキストで、"Please input number"のように設定することでユーザーへ入力内容を促す。 コード例では、ウィンドウ、レイアウト、QLineEditを生成し、プレースホルダーを設定後、レイアウトに追加、ウィンドウに表示する手順を示している。
/** Geminiが自動生成した概要 **/
Go言語でQtのQLabelを使い、「時間」と表示する例を紹介しています。QLabelは文字列を表示するウィジェットで、NewQLabel2関数で作成します。引数には表示テキスト、親ウィジェット、フラグを指定します。作成したQLabelはQBoxLayoutに追加しますが、AddWidgetメソッドを使用し、配置オプションを指定する必要があります。 サンプルコードでは、ウィンドウ、ウィジェット、ボックスレイアウトを作成し、QLabelをボックスレイアウトに追加して表示しています。 QLabelを使うことで、シンプルに文字列をGUIに表示できます。
/** Geminiが自動生成した概要 **/
Go言語の構造体について解説しています。大文字で始まるフィールドは外部パッケージからアクセスできますが、小文字で始まるフィールドはアクセスできません。小文字フィールドへのアクセスは、パッケージ内に`Set~`や`Get~`のようなメソッドを定義することで実現します。具体例として、`Person`構造体の`name`フィールド(小文字)へのアクセス方法を説明しています。`pac`パッケージ内で`SetName`メソッドを定義し、`main`パッケージから`person.SetName("ryoko")`のように呼び出すことで、`name`フィールドに値を設定できます。
/** Geminiが自動生成した概要 **/
Go言語のパッケージ内の関数と、構造体に紐づくメソッドの使い分けについて解説。`pac`パッケージ内の`Person`構造体を例に、`pac.GetName()`はパッケージ関数として`usako`を返し、`person.GetName()`は`Person`構造体のメソッドとして、`person`の`name`フィールド値を返す。パッケージ関数は構造体とは無関係だが、メソッドは構造体のフィールドにアクセスできる。`person := pac.NewPerson()`で構造体インスタンスを取得し、`person.SetName()`でフィールド値を設定する例も示している。
/** Geminiが自動生成した概要 **/
Go言語でQtのQGroupBoxを使って、フォームレイアウトとグリッドレイアウトをグループ化する方法を示す。QGroupBoxは、ウィジェットをグループ化し、タイトル付きのフレームで囲む。サンプルコードでは、QFormLayoutとQGridLayoutをそれぞれQGroupBoxで囲み、それらを新たなQGridLayoutに配置することで、整理されたUIを構築している。 `widgets.NewQGroupBox2("title",nil)`でタイトル付きのグループボックスを作成し、`SetLayout`メソッドでレイアウトをセットする。このようにQGroupBoxを使うことで、複雑なレイアウトも構造化しやすくなる。
/** Geminiが自動生成した概要 **/
SOY CMS用の「記事カレンダー」プラグインが開発されました。ブログ記事をカレンダー形式で表示し、投稿日を視覚的に把握できます。記事タイトルだけでなく、カスタムフィールドの内容も出力可能で、サムネイルプラグインと組み合わせることで画像表示も可能です。これにより、記事一覧をカレンダー上にサムネイル付きで表示するなど、柔軟な表示を実現できます。予約サイト構築など、従来のカレンダー機能とは異なる点が特徴です。サンプルは「毅と亮子のサラメシ」サイトで確認できます。パッケージはsaitodev.co/soycms/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
Go言語でQtのQFormLayoutを使用してラベルと入力フォームのレイアウトを作成する方法を解説。`widgets.NewQFormLayout`でレイアウトを作成し、`AddRow`メソッドでQLabel(ラベル)とQLineEdit(入力フォーム)をセットで追加できる。`AddRow3`ではラベルの文字列を直接指定可能。また、`AddWidget`でQPushButtonのような他のウィジェットも追加できる。`SetLayout`でウィジェットにレイアウトを適用し、`SetCentralWidget`でウィンドウに表示する。コード例では、名前、読書、メールアドレスの入力フォームとボタンを配置する方法を示している。
/** Geminiが自動生成した概要 **/
Go言語でQtのQMainWindowを用いて、シンプルなウィンドウアプリケーションを作成する方法を解説した記事です。Qtのメインウィンドウ構造を図解し、赤枠部分に相当する基本的なフレームワークを作成するコード例を提示しています。 `widgets.NewQMainWindow`でメインウィンドウを生成し、サイズやタイトルを設定、`widgets.NewQWidget`で空のウィジェットを作成して中央に配置しています。Go言語でのQt開発環境構築に関する記事へのリンクも含まれています。最終的に"Hello Ryoko"というタイトルの400x300ピクセルのウィンドウが表示されます。
/** Geminiが自動生成した概要 **/
かつて巨大だったスギナの祖先は、石炭紀にシダ植物として繁栄した。しかし、恐竜時代になると裸子植物が台頭し、シダ植物は日陰に追いやられたという説がある。スギナは胞子で繁殖するが、これは昆虫に食べられやすく、裸子植物のタネや花粉に比べて不利だったと考えられる。現代、畑でスギナが繁茂するのは、かつての繁栄を取り戻したと言えるかもしれない。人間による無茶な栽培が、皮肉にもスギナの祖先の念願を叶える手伝いをしたのだ。また、スギナが人体に有害なのも、胞子を食べられることに対する抵抗として獲得された形質かもしれない。
/** Geminiが自動生成した概要 **/
Ubuntu 18.04にGo言語とQtをインストールし、GoでQtアプリケーションを開発する手順を記録した記事です。Go 1.11、Qt 5.11.1をインストールし、QtのサンプルWebブラウザの実行を確認後、GoのQtバインディングパッケージ`github.com/therecipe/qt`をインストールしました。`qtsetup`コマンドでパッケージの準備中に問題が発生しましたが、`generate`終了時点で中断し、サンプルプログラムを実行したところ、正常に動作することを確認しました。
/** Geminiが自動生成した概要 **/
Web Audio APIのAnalyzerNodeを用いて、音声でアニメーションを制御する方法を紹介しています。 円が画面端で跳ね返る単純なアニメーションに、音声の周波数データ解析を組み込みました。 周波数データが一定閾値を超えると、円の進行方向がランダムに変化します。 音が途切れてもデータが残るため、setTimeoutを用いて一定時間反応しないように制御しています。 具体的には、`analyser.getByteFrequencyData(data)`で周波数データを取得し、`data[20]`の値が閾値を超えた場合に円の移動方向を反転させています。
/** Geminiが自動生成した概要 **/
この記事は、鉱泉に含まれる二価鉄の起源を探る後編です。前編では山の岩石が水質に影響を与えていることを示唆し、後編では岩石の中でも特にかんらん石に着目しています。かんらん石は鉄やマグネシウムを含む有色鉱物で、苦土やケイ酸の供給源となるだけでなく、二価鉄(Fe2+)を含む(Mg,Fe)2SO4という化学組成を持ちます。かんらん石は玄武岩に含まれ、風化しやすい性質のため、玄武岩質の山の川はかんらん石の影響を受け、二価鉄を含む水質になると考えられます。実際に、含鉄(Ⅱ)の鉱泉の上流は玄武岩質であることが地質図から確認できます。最後に、この考察に基づき、各地の調査結果を次回報告するとしています。
/** Geminiが自動生成した概要 **/
Web Audio APIを用いてマイク入力の音声の周波数を可視化するJavaScriptコード例を紹介している。AnalyzerNodeでFFTを行い、得られた周波数データをcanvasにグラフとして描画する。コードでは、マイクへのアクセス、AudioContextとAnalyserNodeの作成、周波数データの取得と描画処理を解説。実行すると音声入力に応じてリアルタイムに周波数グラフが変化するが、ハウリングが発生しやすい点についても言及している。
/** Geminiが自動生成した概要 **/
Go言語でExcelファイル(test.xlsx)のデータを取得するコードの説明です。`tealeg/xlsx`ライブラリを使用し、`OpenFile`でファイルを開き、シート、行、セルを順にループ処理します。`cell.String()`でセルの値を文字列として取得し、出力します。コードは、Excelファイルの全シートの全セル内容を文字列として表示するものです。
/** Geminiが自動生成した概要 **/
Go言語でExcelファイルを作成する方法を解説しています。`tealeg/xlsx`ライブラリを使用し、`xlsx.NewFile()`でファイル構造体を作成、`AddSheet("")`でシートを追加します。`sheet.Cell(行, 列).Value = "値"`でセルに値を入力します。行、列は0始まりで、(0,0)はA1セルを表します。`file.Save("ファイル名.xlsx")`でファイルを保存します。サンプルコードでは"kaeru.xlsx"に"usa"、"kuma"、"dora"、"pao"を書き込んでいます。
/** 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をループ内で宣言することでデータ生成と挿入を繰り返します。
/** Geminiが自動生成した概要 **/
Web Audio APIを用いて録音機能を実装した。navigator.getUserMediaでマイクアクセス権を取得し、MediaRecorderで録音、10秒後に停止しsample.wavとしてダウンロードさせる。 現状は問答無用で録音開始・停止する仕様だが、将来的には取得した音の周波数を解析し、音に合わせた処理を実現したい。
/** 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がそれぞれ一行ずつ表示され、各レコードごとに空行で区切られます。
/** Geminiが自動生成した概要 **/
オープンソースのネットショップパッケージは自由度が高い反面、軌道に乗った後に予期せぬ問題に直面することがある。記事ではSOY Shopを例に、月商1000万円を超えるとキャンセルや仮登録注文データの蓄積が処理速度に影響することを指摘。標準機能ではこれらのデータは削除されず残り続けるため、パフォーマンス低下を招く。解決策として、一定期間以前の不要な注文データを自動削除するプラグインを独自開発。管理画面を開く度に自動で削除を実行することで、データ量の増加を抑え、サイトのパフォーマンス維持を図る。この事例は、オープンソース利用における自由と引き換えに、独自対応が必要な場面が存在することを示している。
/** Geminiが自動生成した概要 **/
Android内蔵GPSのキャッシュ問題で、オフライン使用時に以前の緯度経度が返ってくる現象が発生。Geolocation APIのキャッシュ設定変更では解決せず、GPS StatusアプリでGPSキャッシュのリセットを試みた。一時的に改善するも、オフラインでの再発を確認。オンラインでGPS Statusアプリを使用する必要があると推測。Soil & Geoロガーのオフライン使用は5回程度が限度と考えられる。
/** 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"`は必須で、手動で追記する必要があります。
/** Geminiが自動生成した概要 **/
SQLiteのALTER文を使って既存のusersテーブルにcategoryフィールドを追加し、外部キー制約でcategoryテーブルと紐づけました。usersテーブルにはid、name、fname、genderに加え、categoryテーブルのidを示すcategoryフィールドが追加されました。その後、UPDATE文で各ユーザーにcategoryを割り当て、SELECT文とWHERE句で特定のcategoryを持つユーザーを抽出しました。さらに、INNER JOINを用いてusersテーブルとcategoryテーブルを結合し、category名で検索する方法も示しました。最終的に'tanpopo'に属するユーザーの情報が抽出されました。
/** Geminiが自動生成した概要 **/
SQLiteのWHERE句の使い方を解説した記事の要約です。
SELECT文で特定のデータを取得する方法を説明し、WHERE句で条件を指定する方法を示しています。
名前の取得、名前と苗字の両方の取得、特定の名前のデータ取得などを例に挙げ、WHERE句の基本的な使い方を解説しています。
さらに、LIKE演算子とワイルドカード%を使った部分一致検索、AND演算子による複数条件の指定、!=演算子による条件の否定、NOT LIKE演算子による否定一致検索などを紹介しています。
具体的なSQL文と実行結果を示しながら、それぞれの演算子の使い方を分かりやすく説明しています。
/** Geminiが自動生成した概要 **/
Windows 10 で SQLite を使い、データを操作する方法を解説しています。SQLite をダウンロード、インストールし、環境変数を設定後、コマンドプロンプトでデータベースファイル(sample.db)を作成します。SQL文を用いて、テーブル作成、データ挿入、削除、並び替え、表示など基本操作を例示しています。`CREATE TABLE` でテーブルを作り、`INSERT INTO` でデータ挿入、`SELECT * FROM` で全データ表示、`DELETE FROM` でデータ削除、`ORDER BY` で並び替え、`LIMIT` で表示件数制限を行います。DB Browser for SQLite での確認方法にも触れています。
/** Geminiが自動生成した概要 **/
SOY Shop管理画面の業務改善として、BtoC商売に不要な「勤務先名称」などの項目を非表示にする機能が実装されました。これは、特に電話注文時の入力ミスを減らし、オペレーターが入力に迷う状況を解消するためです。不要な項目を非表示にすることで、キーボード操作の時短、確認作業の効率化、新入社員向けマニュアル作成の手間削減など、多岐にわたる業務改善と間接的な経費削減が期待されます。本改修は、業務フローの見直しを促し、よりスムーズなショップ運営に貢献します。最新パッケージは公式サイトからダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY CMS/Shop開発元出身の筆者は、非IT系企業における会議資料作成の手間と時間の長さに衝撃を受けた。販売管理ソフトから出力されたデータはそのままでは会議で使えず、手作業での修正に半日かかることも。一方、筆者の前職では必要なデータはプログラミングで出力し、再利用可能なため資料作成は効率的だった。
最近、弥生販売ユーザー向けにExcelデータ整形用のWebアプリを作成したところ、月1回半日~1日かかっていた作業が20分に短縮されたという報告を受けた。事務員の負担軽減だけでなく、会議開催の柔軟性向上にも繋がり、事業主にとって大きな価値となる。
アメリカ企業ではプログラミング可能な人材を社内に置くことが多い一方、日本では外注依存が多く、これが日本企業の閉塞感に繋がっているのではないかと筆者は指摘する。会議資料作成に多大な時間をかける現状は、その象徴的な例と言える。
/** Geminiが自動生成した概要 **/
キノコ栽培後の廃培地は、リグニン分解が進み土壌有機物蓄積に重要なフェニルプロパノイドを含む貴重な資源だが、現状は産業廃棄物として焼却処分されている。これは、植物が固定した二酸化炭素を放出するだけでなく、土壌改良材としての活用機会も失う二重の損失となる。キノコ栽培の活性化と廃培地の有効活用は、地方創生に貢献し、大気中の温室効果ガス削減にも繋がる可能性を秘めている。ただし、廃培地を堆肥として利用するには、作物との窒素競合を防ぐため適切な処理が必要となる。
/** Geminiが自動生成した概要 **/
キノコ栽培は、資源に乏しい農村の経済活性化に貢献してきた。特に原木栽培は、山林資源を活用し、シイタケなどの乾燥保存できる高付加価値商品を生み出すことで、村外への販売による外貨獲得を可能にした。
さらに、現代では廃校を活用したキクラゲやシイタケの培地栽培も注目されている。この方法は食品廃棄物を再利用するため、焼却処分を減らし、温室効果ガス削減にも繋がる持続可能な取り組みと言える。
/** Geminiが自動生成した概要 **/
明日発売の現代農業9月号(農文協)で、京都農販が紹介されます。内容は廃菌床堆肥の効果に関するレポートで、土壌変化のデータや、私が作成した根拠資料が掲載されています。栽培のヒントになると思いますので、書店で見かけたらぜひご覧ください。特にキノコ好きの方にはオススメの内容です。
記事で紹介されている廃菌床堆肥「マッシュORG」は京都農販で販売しています。反響次第で更に詳しい情報も掲載されるかもしれませんので、出版社に感想を送っていただけると嬉しいです。
補足として、廃菌床堆肥利用の注意点を紹介した関連記事も合わせてご覧ください。
/** Geminiが自動生成した概要 **/
GIMP 2.10.4で電子書籍の表紙を作成する方法を解説。まず、GIMPをインストールし、新規画像(2500x4000px、背景白)を作成する。テキストツールで題名と著者名を入力、フォントやサイズを調整し配置する。次に、表紙用画像を開き、画像の拡大・縮小でサイズ調整後、表紙キャンバスにコピー&ペースト。新しいレイヤーを追加することで画像を表示させ、題名・画像・著者名が入った表紙が完成する。
/** Geminiが自動生成した概要 **/
SOY ShopのPAY.JPクレジットカード支払いモジュールがカード情報非通過化に対応しました。2018年8月1日以降、加盟店はカード情報を直接扱うことが禁止され、トークン化が必須となりました。 そのため、モジュールはカード情報をPAY.JPサーバーに送信し、トークンを受け取って処理するように改修されました。既存モジュール利用者は、サイトのセキュリティ維持のため早急にバージョンアップが必要です。最新版はサイト(https://saitodev.co/soycms/soyshop/)からダウンロード可能です。詳細は「SOY CMSのバージョンアップについて」を参照ください。
/** Geminiが自動生成した概要 **/
Sigilで電子書籍を作成する手順の解説。見出しはh1〜h3タグでサイズ変更、h1が最大。表紙はツールから追加、目次はツールからHTML目次作成でページとして挿入、目次生成はプレビュー用。メタデータ(タイトル、著者、言語など)はツールから編集。画像はファイル→追加で取り込み、imageフォルダに保存。挿入したい場所にカーソルを置き、ファイル挿入ボタンで画像を選択、本文に挿入できる。サンプル画像は400x300ピクセル。
/** Geminiが自動生成した概要 **/
Sigilは多プラットフォーム対応のEPUB電子書籍エディタ。公式サイトからOS対応版をダウンロード・インストール後、デスクトップにショートカットを作成する。Sigil起動後、初期画面に直接文字入力で文章作成が可能。新規記事追加は「ファイル」→「空のHTMLファイルを追加」から行う。保存は「ファイル」→「名前をつけて保存」を選択し、拡張子を.epubのまま保存する。再度開く際はSigilを起動し、「ファイル」→「開く」からepubファイルを選択する。
/** Geminiが自動生成した概要 **/
Go言語でkintoneとチャットワークを連携し、タスク自動登録アプリを作成する過程の3回目。今回はkintoneから取得したデータをチャットワークにタスク登録する処理を実装。kintoneアプリのラベルフィールド値をタスク名として登録するため、`RegisterTaskOnChatWork`関数を追加。この関数でチャットワークAPIを呼び出し、指定のルームにタスクを登録する。コード実行前にkintoneアプリにテストデータを追加し、実行後チャットワークでタスクが登録されていることを確認。データの絞り込みについては省略。
/** Geminiが自動生成した概要 **/
kintoneアプリで設定した日付にチャットワークへタスクを自動登録するアプリ開発の続き。今回はGo言語でkintone REST APIから取得したJSONデータを扱うための構造体を設計し、マッピングを行った。取得データは「レコード番号」「月」「ラベル」「日」等を含み、これをGoの構造体へ変換することでデータ操作を可能にした。具体的には`Field`構造体でフィールドの型と値を、`Record`構造体でレコード群を表現し、`json.NewDecoder`を用いてJSONをデコードした。これにより、ラベル名等の値をプログラムから参照できるようになった。次回は取得値を用いてチャットワークへのタスク登録を行う。
/** Geminiが自動生成した概要 **/
kintoneとチャットワークを連携し、タスクを自動登録するアプリをGo言語で開発する過程を説明。kintoneにアプリを作成し、Go言語でkintoneのREST APIを使用してデータを取得するコードを紹介。APIキー、ID、パスワードを用いて認証し、JSON形式のデータを取得することに成功。今後の課題として、取得したJSONデータをGo言語で扱うための構造体の作成が挙げられている。
/** Geminiが自動生成した概要 **/
`agouti`はGo言語用のAcceptance Testingフレームワークで、ブラウザの自動操作を可能にします。`ChromeDriver()`でChromeドライバーを起動し、`NewPage()`で新しいページを開きます。`Navigate()`で指定URLへ遷移し、`FindByID()`や`FindByButton()`で要素を取得。`Fill()`でフォーム入力、`Submit()`でボタン押下など、ブラウザ操作をコードで表現できます。`godoc`にはAPIの詳細が記載されており、`Selection`インタフェースが要素操作の中核を担い、様々な操作メソッドを提供しています。エラー処理も組み込まれており、`err != nil`で各操作の成否を確認できます。
/** Geminiが自動生成した概要 **/
Go言語でSeleniumとAgoutiを使ってChromeブラウザを自動操作する方法を解説しています。まずJavaとSelenium Serverをインストールし、起動確認を行います。次にChromeドライバーをインストールし、環境変数Pathにドライバのパスを追加します。Go言語のパッケージ管理ツールgo getでAgoutiパッケージを取得後、サンプルコードを作成・実行します。サンプルコードでは、AgoutiでChromeDriverを起動し、新しいページを開いてGoogleのトップページに遷移させる処理を行っています。実行結果として、Chromeブラウザが起動しGoogleのトップページが表示されます。
/** Geminiが自動生成した概要 **/
SOY CMSを使わずにSOY2DAOでSQLを実行し、オブジェクトで結果を取得する方法を解説しています。 独自SQLの実行には`executeQuery()`ではなく`executeObjectQuery()`を使用します。`executeObjectQuery()`の第一引数にSQL文、第二引数にDAOクラス名を指定します。戻り値は指定したクラスのオブジェクト、もしくはオブジェクトの配列となります。記事では、`SOY2Sample`クラスと対応するテーブル`soy2_sample`を例に、`id`と`text`を取得するSQLを実行し、結果を`SOY2Sample`オブジェクトの配列として受け取る方法をコード付きで示しています。これにより、データベースから取得したデータをオブジェクトとして扱いやすくなります。
/** Geminiが自動生成した概要 **/
SOY CMSを使わずにSOY2DAOを単体で利用する方法を紹介。SQLiteのインメモリデータベースを例に、テーブル作成、データ挿入、検索のコードを記述。WEBAPP_DIRの定義、SOY2のinclude、RootDir設定、SOY2DAOConfigによるDSN設定を行い、SOY2DAOでSQLを実行。結果として、挿入したデータが期待通りに取得できることを確認。次回はDAO本来の機能を探る。
/** Geminiが自動生成した概要 **/
SOY CMSのブログ機能拡張として、長文記事の見出し自動生成プラグインが開発されました。記事内のH1〜H3タグを解析し、階層構造を持つ目次をHTMLで生成、任意の場所に表示します。出力されるHTMLは、各見出しへのアンカーリンクを含み、見出しにも対応するID属性が付与されるため、スムーズなページ内ナビゲーションが可能です。このプラグインにより、WordPress等のブログ特化CMSに比べて弱かったSOY CMSのブログ機能が強化され、強力なEC機能との連携による販促ブログとしての活用が期待されます。開発者は、SOY CMSをブログとECを統合したプラットフォームとして捉え、今後もブログ機能の改善を進める方針です。関連情報として、SOY Shopとの連携による有料ブログ運営や、下書き自動保存機能の記事へのリンクが提供されています。
/** Geminiが自動生成した概要 **/
SOY2HTMLのIgnoreプラグインの使い方を解説。index.phpに`SOY2HTMLPlugin::addPlugin("ignore", "IgnorePlugin");`を追加することで、HTMLテンプレート内で`<!-- soy:ignore="***" --><!-- /soy:ignore="***" -->`で囲まれた部分がSOY2HTMLによるレンダリング時に無視される。ブラウザで直接HTMLファイルを開いた場合は、無視された部分がそのまま表示される。これにより、SOY CMSに組み込む前のテンプレートファイルにおいて、デザイナ向けの説明文などを記述し、CMS組み込み時には表示させないといった使い方ができる。
/** Geminiが自動生成した概要 **/
Go言語でHTTPクライアントを作成し、サーバーからのレスポンスを確認する方法を解説しています。`http.Get`でサーバーにリクエストを送信し、`httputil.DumpResponse`でレスポンス内容を人間が読める形式で取得します。サンプルコードでは、`localhost:8889`で動作するサーバーにアクセスし、レスポンスのヘッダーとボディを出力しています。出力例から、ステータスコード(200 OK)、コンテンツ長、コンテンツタイプ、日付、HTML本体などが確認できます。これにより、クライアントがサーバーからどのようなデータを受け取っているかを詳細に把握できます。
/** Geminiが自動生成した概要 **/
SOY CMSを使わずにそのテンプレートエンジンであるSOY2HTMLのみを利用する方法を解説。ルートディレクトリにindex.php、webappディレクトリ下に必要なファイルを設置する構成で、index.phpでSOY2ライブラリを読み込み、SOY2HTMLの設定を行う。HTMLファイル(TopPage.html)と対応するPHPファイル(TopPage.class.php)を作成し、soy:idを使った表示内容の変更例を示している。PHPファイルではWebPageクラスを継承し、コンストラクタでHTMLファイルを読み込み、addLabelでsoy:idに対応する値を設定することで、HTMLのsoy:id部分がPHPで指定した値に置き換わって表示される。
/** Geminiが自動生成した概要 **/
木質資材で堆肥を作るなら、キノコ栽培の知識が役立つ。キノコ栽培では、おがくずのような高C/N比資材に、さらにC/N比の高い米ぬかを加えてキノコを育てる。鶏糞のような窒素分の高い資材は使わない。にもかかわらず、キノコ栽培の副産物である廃培地は優れた堆肥となる。これは、キノコ(木材腐朽菌)がおがくずの分解を効果的に進めているため。高C/N比資材に窒素分を加えるという一般的な堆肥作りの常識とは異なるアプローチだが、キノコ栽培は効率的な堆肥作りのヒントを与えてくれる。農業における堆肥作りの検証不足が、非効率な方法の蔓延を招いている現状を指摘し、キノコとカビの生態学への理解の重要性を強調している。
/** Geminiが自動生成した概要 **/
kintoneで特定の領域だけを印刷範囲にする方法を紹介しています。kintoneの標準機能では印刷範囲の指定が難しいため、JavaScriptカスタマイズで対応します。具体的には、印刷時に特定の要素に"print-area"というクラスを追加し、CSSでこのクラスに`page-break-inside: avoid;`を指定することで、意図しない改ページを防ぎます。また、印刷ボタンのクリックイベントでJavaScriptを実行し、印刷後にクラスを削除する処理を追加することで、通常の画面表示への影響をなくします。この記事では、カレンダーの印刷を例に、日付行と予定行が分割されないように印刷範囲を制御する具体的なコードを解説しています。
/** Geminiが自動生成した概要 **/
Go言語でlocalhost:8889で動作するシンプルなWebサーバを作成する手順と動作確認方法の説明です。 `server.go` はルートパスへのアクセスに対し、リクエスト内容をコンソールに出力し、"hello world"を含むHTMLをレスポンスとして返します。`httputil.DumpRequest`でリクエスト内容をダンプし、`fmt.Println`でコンソールに表示、`io.WriteString`でレスポンスを書き込みます。`http.ListenAndServe`でサーバを起動し、ブラウザでアクセスすると"hello world"が表示されます。同時にコンソールにはリクエストヘッダ情報(例:GETメソッド、Host、User-Agentなど)が出力されます。
/** Geminiが自動生成した概要 **/
Go言語の並行処理(ゴルーチン)は、`go`キーワードで関数を起動することで実現される。 `go print("hello")`のように記述すると、`print("hello")`は別のコア/スレッドで実行され、`print("world")`と並行して処理される。 例では、helloとworldが交互に表示される。これは、同時アクセス処理やファイルアップロードなど、結果の順序が重要でない処理に有効である。ゴルーチンにより、複数の処理を効率的に並行実行できる。
/** Geminiが自動生成した概要 **/
Go言語の無名関数は、名前を持たない関数で、関数内で定義される。`f := func() { ... }`のように変数に代入し、`f()`で実行する。また、`func() { ... }()`のように定義と同時に実行(即時実行)も可能。即時実行の場合は、定義直後に`()`を付ける必要がある。無名関数は、変数のように扱えるため、他の関数に引数として渡したり、戻り値として返すこともできる。
/** Geminiが自動生成した概要 **/
Go言語では関数を値として扱える。 `greet`関数を`f`変数に代入し、`f()`で実行できる。 `dofunc(f func())` は関数型引数を受け取り、その関数を実行する関数である。 `main`関数で`greet`を`f`に代入し、`dofunc(f)`を呼び出すと、`dofunc`内で`f()`が実行され、`greet`関数の処理("hello"の表示)が行われる。 これは関数を第一級オブジェクトとして扱う例である。
/** Geminiが自動生成した概要 **/
Go言語でコマンドライン引数を扱うflagパッケージの使い方を説明しています。`flag.Int`と`flag.String`でそれぞれ整数型と文字列型のオプションを定義し、デフォルト値と説明文を設定します。`flag.Parse()`でコマンドライン引数を解析し、定義したオプションに値をセットします。
実行例として、`main.exe`をビルドし、オプションなしで実行するとデフォルト値の1111と"default"が出力されます。`--help`オプションでヘルプメッセージが表示されます。`-i 5 -s "おはよう"`のようにオプションを指定して実行すると、指定した値が出力されます。つまり、コマンドライン引数からプログラムに値を渡す方法を解説しています。
/** Geminiが自動生成した概要 **/
Go言語のos.Argsはコマンドライン引数を扱う。`os.Args`はスライスで、最初の要素`os.Args[0]`は実行ファイルのパス。`./main.exe test`と実行すると、`os.Args[1]`は"test"となる。同様に`./main.exe test 5`と実行すれば、`os.Args[1]`は"test"、`os.Args[2]`は"5"となる。つまり、`os.Args`を用いることで、コマンドライン引数にアクセスし、プログラムの動作を制御できる。
/** Geminiが自動生成した概要 **/
Go言語でコマンドを作成する方法を解説。 `~/workspace/go/cmd`ディレクトリに`main.go`を作成し、`fmt.Println("usako")`を出力するコードを記述。MINGW64を用いて`go build main.go`でコンパイルし、`./main.exe`で実行すると、コマンドラインに"usako"と表示される。 `go build`コマンドはGoのソースコードをコンパイルして実行ファイルを作成する。Windowsでは実行ファイルに`.exe`拡張子が付く。
/** Geminiが自動生成した概要 **/
SOY Shopの注文検索機能を拡張し、オーダーカスタムフィールド(日付型)を検索条件に追加できるプラグインを開発しました。管理画面の注文一覧にカスタムフィールドの日付検索欄が追加され、注文詳細に記録した任意の日付情報(例:返答期限)に基づいた検索が可能になります。この機能は「やまどうぐレンタル屋さん」で実装した顧客管理機能強化の一環で、管理画面のみ表示のカスタムフィールドに「○月○日までに返答」といった伝言を記録し、検索で容易に抽出するといった活用が想定されます。プラグインはsaitodev.coからダウンロード可能です。
/** Geminiが自動生成した概要 **/
Go言語で自作ハッシュ関数を作成し、"ryoko"を暗号化する例が示されています。`CreatHash`関数では、入力文字列をバイト配列に変換後、`sha256.Sum256`でSHA256ハッシュ値を計算し、`hex.EncodeToString`で16進数文字列に変換して返します。 `ryoko`のバイト表現`[114 121 111 107 111]`は、SHA256ハッシュ化され、最終的に`db08d212da1b3ec6c2e3c12d1864626c8d125084c4b05767f00627eebb70bede`というハッシュ値が生成されます。
/** Geminiが自動生成した概要 **/
kintoneでカレンダーアプリを印刷する際、標準機能ではカレンダー部分のみを選択できない問題を、jQueryプラグイン「printElement」を用いて解決する方法を紹介。kintoneアプリにカレンダー形式の一覧ページを作成し、printElementとjQueryを読み込むよう設定。カスタマイズ用JavaScriptで印刷ボタンを配置し、クリックイベントにprintElementでカレンダー部分(id="view-list-data-gaia")を指定。これにより、ヘッダー/フッターを除くカレンダー部分のみが印刷範囲となる。kintoneのカスタマイズ性の高さとjQueryプラグインの活用例を示している。
/** Geminiが自動生成した概要 **/
Go言語で`template/header.txt`ファイルを読み込む方法を説明しています。`os.Open`関数でファイルを開き、エラー処理も実装しています。`defer file.Close()`で確実にファイルを閉じます。`ioutil.ReadAll`関数でファイルの内容をバイトスライス`content`に読み込み、`string(content)`で文字列`html`に変換します。最後に`fmt.Println(html)`でファイルの内容を表示します。 添付画像は`header.txt`の内容("string1")が表示された実行結果を示しています。
/** Geminiが自動生成した概要 **/
Go言語でWebページから本文を抽出するプログラムの説明です。`https://saitodev.co/article/%E3%83%A4%E3%83%96%E3%82%AC%E3%83%A9%E3%82%B7%E3%81%AE%E5%9F%B7%E5%BF%B5` から、`<div class="post-content">` と `<!-- .post-content -->` で囲まれた本文を抽出します。
`bufio.NewReader` でHTMLを一行ずつ読み込み、`strings.Index` で "post-content" を検索。開始タグを見つけたら `readMode` フラグをtrueにして本文を `content` 変数に蓄積、終了タグを見つけたらループを抜けます。抽出した本文は `test.html` ファイルに保存されます。
/** Geminiが自動生成した概要 **/
SOY Shopの注文状態に任意の項目を追加できるプラグインが開発されました。やまどうぐレンタル屋さんでのレンタル商品返却管理の課題を解決するために、注文状態と支払状況にフラグを追加する拡張ポイントが実装され、この機能を汎用化したプラグインが作成されました。プラグイン設定画面で注文状態を追加すると、注文詳細画面と注文検索画面に反映されます。これにより、返品待ちや返済済みといった独自のステータス管理が可能になり、注文検索の効率化に繋がります。生鮮食品など返品が発生するショップやレンタル商品を扱うショップで特に役立ちます。プラグインはsaitodev.coからダウンロードできます。
/** Geminiが自動生成した概要 **/
Go言語で特定サイトから複数画像を取得する処理を解説しています。まず、対象ページのHTMLを取得し、正規表現を用いて`img`タグの`src`属性から画像パスを抽出します。抽出したパスは`/site/files`を含むものだけをスライスに格納します。次に、スライス内の各パスに対して、サイトのドメインを付加して完全なURLを生成し、`http.Get`で画像データを取得します。取得したデータは`ioutil.ReadAll`でバイト型に変換後、ファイル名を取得するためにパスの最後の`/`以降の文字列をファイル名として新規ファイルを作成し、画像データを書き込み保存します。
/** Geminiが自動生成した概要 **/
複合機のFAX受信をGoogleドライブと連携し、ChatWorkで通知する仕組みを紹介。複合機がFAXをPDFでGoogleドライブに共有する機能を活用し、Google Apps ScriptでPDFを特定フォルダに移動、ファイル名と共にChatWorkへ通知する。これにより、外出先でもFAX内容を即時確認でき、紙の無駄や転送の手間を省ける。5分間隔でスクリプトを実行することで、ほぼリアルタイムな通知を実現。設定には、複合機側のGoogleドライブ連携と、スクリプト内のChatWork API設定が必要。
/** Geminiが自動生成した概要 **/
Go言語でHTMLのimgタグから画像を取得し、ファイル保存するコードの説明です。正規表現でsrc属性値を取得し、ファイル名を抽出し、URLを完成させます。HTTP GETリクエストで画像データを取得し、ファイルを作成して書き込みます。具体的な例として、`<img src="/site/files10/P5100314.JPG" ...>`から`P5100314.JPG`という名前で画像ファイルを保存する手順を解説しています。 コードは`https://saitodev.co`をベースURLとして使用し、`ioutil.ReadAll`でレスポンスボディ全体を読み込み、`os.Create`と`file.Write`でファイルに書き込んでいます。
/** Geminiが自動生成した概要 **/
Googleは常時SSL化をランキング要因の一つとしています。つまり、サイトがHTTPSを使用しているかどうかは、検索結果の順位に影響を与えます。しかし、その影響は軽微であり、他のSEO対策と比べると優先度は低いと言えるでしょう。
常時SSL化の主なメリットはセキュリティの向上です。ユーザーの情報を暗号化することで、盗聴や改ざんのリスクを軽減できます。これはユーザーの信頼感向上に繋がり、間接的にSEO効果に繋がる可能性があります。
また、常時SSL化によってサイトの表示速度が向上する可能性も指摘されています。Googleはサイトの表示速度もランキング要因としているため、結果的にSEOに良い影響を与える可能性があります。
しかし、常時SSL化自体が劇的なSEO効果をもたらすわけではないので、他の重要なSEO対策を疎かにしてまで優先するべきではありません。コンテンツの質やユーザーエクスペリエンスの向上など、他のSEO対策と並行して行うことが重要です。
/** Geminiが自動生成した概要 **/
Go言語でWebサイトから画像を取得し、ローカルに保存する方法を解説しています。`http.Get`で指定URLの画像データを取得し、`ioutil.ReadAll`でレスポンスボディをバイトスライスとして読み込みます。`os.Create`で新規ファイルを作成し、`file.Write`で取得したバイトデータを書き込むことで、画像ファイルを保存します。サンプルコードでは"植物のミカタ"の画像URLを使用し、"sample.jpg"として保存しています。記事では、HTTP GETリクエストとファイル作成の基本についても触れており、関連する記事へのリンクも提供しています。
/** Geminiが自動生成した概要 **/
Go言語でファイルを作成する方法を解説しています。まず、`os.Stat`でファイルの存在確認を行い、存在しなければ`os.Create`で作成、存在すれば`os.Open`で開きます。`defer file.Close()`で確実にファイルを閉じ、`[]byte`に変換した文字列を`file.Write`で書き込みます。
次に、`os.Stat`でディレクトリの存在確認を行い、なければ`os.Mkdir`で作成します。`filepath.Abs(".")`で現在のディレクトリを取得し、`os.Chdir`で作成したディレクトリに移動してから、上記と同様にファイルを作成・書き込みます。結果として、指定したディレクトリにファイルが作成されます。
/** Geminiが自動生成した概要 **/
Go言語のメソッドは、特定の型に紐づく関数です。`sample.go`で`Person`構造体を定義し、`Greet()`メソッドを実装します。`Greet()`メソッドは`Person`型のポインタ`*Person`をレシーバーとして受け取ります。`main.go`で`Person`型の変数`ryoko`を作成し、`ryoko.Greet()`と呼び出すことでメソッドを実行します。メソッド内では、レシーバー`p`を通して`Person`のフィールド(例:`p.Name`)にアクセスできます。初期実装では「こんにちは」と表示されますが、`fmt.Println(p.Name + "さん、こんにちは")`と変更することで「りょうこさん、こんにちは」と表示できます。
/** Geminiが自動生成した概要 **/
登山用品レンタルの「やまどうぐレンタル屋」は、SOY Shopで運営しつつSalesforceを用いて顧客管理を行っていたが、SOY Shop内で完結させたいという要望からCRM機能強化を実施。オーダーカスタムフィールドや拡張ポイントを活用し、レンタル特有の発送・返却管理、納品書・検品書出力管理、配送状況連携、電話注文対応、実店舗受取管理などをSOY Shop内で実現。プラグインによる拡張のみでSalesforce並みの機能を実現し、本体のカスタマイズは行わずバージョンアップへの影響を排除。管理画面の表示速度最適化も実施。この機能強化は拡張ポイントを活用したプラグイン作成で再現可能。
/** Geminiが自動生成した概要 **/
Go言語では、`type`キーワードで構造体(`struct`)を定義できる。構造体は複数の型の値をまとめたもので、例えば`Person`構造体に`id`、`name`、`reading`フィールドを持つ。`main`関数で`Person`型の変数`ryoko`を宣言し、値を代入して出力できる。構造体のフィールドへは`.`でアクセスする。また、構造体はパッケージに含めることができ、`sample`パッケージに`Person`構造体を定義し、`main`関数で`import`して`sample.Person`として利用できる。パッケージ内の構造体を利用する場合、フィールド名の最初の文字は大文字にする必要がある。
/** Geminiが自動生成した概要 **/
SOY CMSの開発秘話は、製作者の齋藤氏がフリーランス時代に抱いた「誰でも簡単にサイトを作れるCMSを」という理念から始まります。当時主流だったMovable Typeは高価で、レンタルサーバーの普及に伴い手軽なCMSの需要が高まっていました。そこでPHPとMySQLで動作するCMSを開発することを決意。試行錯誤の末、2004年にSOY CMSの前身となる「SOY Shop」をリリースしました。 当初はECサイト構築に特化していましたが、ブログ機能やニュース機能などCMSとしての需要に応える形で進化。2007年にSOY CMSとして独立し、現在に至ります。開発当初からオープンソース化を目指し、誰でも自由に利用・改変できる柔軟性が大きな特徴となっています。
/** Geminiが自動生成した概要 **/
プログラマは、システム不具合の多くが「想定外の使い方」に起因するため、電話での口頭説明ではなく詳細な情報提供を求める。これは、プログラミングが物理法則に縛られず、思考がそのまま反映されるため、想定外の動作が顕著な不具合となる特性による。効率的な情報伝達と問題解決のため、プログラマはコーディング規約、高機能エディタ、テスト自動化、タスク管理ツール、オープンソースといった手段を活用し、思考すべき点とそうでない点を明確化し、再発防止と情報共有を促進する。妻にプログラミングを教えるのは、これらの思考プロセスと情報伝達の重要性を体験させ、世界中の資産を活用する術を学ばせるためである。
/** Geminiが自動生成した概要 **/
Googleドキュメントの音声入力とGoogle Apps Scriptを連携させ、チャットワークへの投稿を音声で行う方法を紹介。 「チャットワーク(投稿内容)終了」と話しかけると、内容がチャットワークに送信されるスクリプトを作成。1分毎にスクリプトが実行され、ドキュメントの内容をチェック、投稿後ドキュメントはクリアされる。APIトークン、ルームIDの設定が必要。音声入力はドキュメントのツールから利用可能。Androidスマホでは音声入力の設定を事前に確認する必要がある。この方法で、両手が塞がっている状況でもチャットワークに投稿可能。実用時はタスク登録ルールやToの指定が推奨される。
/** Geminiが自動生成した概要 **/
Go言語でChatWork APIを用いてマイチャットにメッセージをPOSTする手順を紹介。 `http.NewRequest`でPOSTリクエストを作成し、ChatWork APIトークンをヘッダーに設定、`http.DefaultClient.Do`でリクエストを送信する。記事では"GOからのテスト投稿"というメッセージを送り、レスポンスコード200を確認することで成功を確認している。 また、ChatWork APIのルームID、トークンの取得方法については別記事を参照している。
/** Geminiが自動生成した概要 **/
Google Apps Script (GAS)を使ってChatWorkに投稿する方法を紹介。ChatWorkClient for Google Apps Scriptライブラリを利用し、APIトークンとルームIDを指定することで簡単にメッセージを送信できる。GASのトリガー機能と組み合わせれば、Gmail受信やGoogleカレンダーの予定に基づいて自動投稿するなど、業務効率化に役立つアプリを簡単に作成可能。ChatWorkとG Suiteの連携で業務改善を実現できる。
/** Geminiが自動生成した概要 **/
Go言語では、関数の動作を検証するためにユニットテストを行います。テストコードの作成には、以下のような手順があります。
1. テストしたい関数の前に「Test」を付け、テスト関数を作成する。
2. テスト関数に「(t *testing.T)」パラメータを渡す。
3. 関数の引数と期待される値を設定する。
4. 関数を実行し、期待される値と実際の結果を比較する。
テストを実行すると、「ok」または「FAIL」が出力されます。「ok」はテストが成功したことを示し、「FAIL」はテストが失敗したことを示します。
テストを失敗させるには、期待される値と実際の結果を意図的に不一致にします。この場合、テスト結果は次のように表示されます。
```
--- FAIL: TestJudgeEo (0.00s)
func_test.go:10: 5は奇数なのでfalseを返さなければいけない
```
/** Geminiが自動生成した概要 **/
SOY Shopで国際荷物追跡サービス「Trackingmore」と連携するプラグインを開発し、「webhook」機能を追加しました。webhookでは、配送業者が発送を開始するとTrackingmoreからSOY Shopに通知が届きます。これにより、リアルタイム追跡の手間を省きつつ、SOY Shopの注文状態や発送メールの自動更新が可能になります。この連携により、出荷予定日前に代行業者から発送情報を受け取れなくても、配送状況を監視し、集荷や発送が確認され次第、発送済みメールを自動送信できます。これにより、確認業務が大幅に削減されます。リアルタイム追跡も併用することで、変更情報の確度が向上します。
/** Geminiが自動生成した概要 **/
ChatWork APIを使用してPHPからマイチャットに投稿するスクリプトを作成。投稿は成功し、マイチャットに「PHPからテスト投稿」のメッセージが送信された。
また、ChatWorkでは電話代行サービスを開始しており、電話対応を減らす取り組みが進んでいる。仕事における電話が嫌煙される傾向が高まっている。
/** Geminiが自動生成した概要 **/
SOY Shopと荷物の追跡サービスTrackingmoreを連携するプラグインが作成されました。このプラグインにより、代行倉庫サービスを利用して出荷された商品の発送状況をリアルタイムで確認できるようになります。ただし、現時点では連続でAPIを叩く制限があるため、トラッキング件数の制限や実行間隔の調整が必要です。今後、Webhookを使用した配送状況確認機能が追加される予定です。この機能により、サーバのリソース占有が軽減されることが期待されています。利用に際しては、課題点に留意してください。
/** Geminiが自動生成した概要 **/
Go言語のpackage機能は関数をまとめて再利用や配布を可能にする。package名は作成するフォルダ名と同じにする。同じ階層のpackageを読み込むにはimport "./パッケージ名"を使用する。package内に複数の関数があっても、呼び出すときに指定する必要はない。また、Go言語には最初から組み込まれたpackage(例えばtime package)があり、それらを利用することもできる。
/** Geminiが自動生成した概要 **/
SOY CMSで複数のブログページを作成した場合、各ページのカテゴリ一覧を他のページで出力するモジュール「cms:module="common.multi_blog_category"」が追加されました。
使用方法は、モジュール内に「b_block:id="category_on_{ブログページのURI}"」と記述します。これにより、ブログページ毎のカテゴリ一覧を出力できます。
例えば、ブログ1ページ(URI:blog)とブログ2ページ(URI:sub/blog)のカテゴリ一覧を標準ページに出力するには、「b_block:id="category_on_blog"」と「b_block:id="category_on_sub_blog"」を使用します。
このモジュールにより、標準ページから他のブログページのカテゴリ一覧にアクセスし、各ブログのカテゴリページに移動できるようになります。
/** Geminiが自動生成した概要 **/
Go言語では、関数は `func` キーワードを使用して作成され、引数とその型を定義できる関数です。関数は、エントリーポイントである `main` 関数から呼び出されます。
整数同士の和を表示する関数 `sum` を作成する場合、関数は次のようになります。
```go
func sum(i int, j int) int {
return i + j
}
```
返り値がある関数は、その型を関数シグネチャに指定します。たとえば、`sum` 関数は `int` 型の値を返します。
複数の値を返す関数は、関数シグネチャにタプルの型を指定します。たとえば、`sum` 関数が和とブール値を返す場合、そのシグネチャは次のようになります。
```go
func sum(i int, j int) (int, bool)
```
/** Geminiが自動生成した概要 **/
SOY Shopの在庫管理機能と管理画面からの注文登録機能を拡張し、パイプハウスの見積書作成アプリを開発。従来のエクセル管理では、膨大な部品の仕入れ値確認に時間と手間がかかっていたが、新アプリでは商品登録時に仕入れ値を記録することで、次回以降の見積書作成時の再確認作業を大幅に削減。商品名検索によるカート追加や、検索結果にない場合の即時商品登録機能も実装。さらに、見積書の商品一覧の並び替え機能、注文内容の自動バックアップ機能も追加することで、作業効率と正確性を向上。これらの機能はパイプハウス以外にも応用可能で、既存のネットショップ運営における経費削減にも貢献する。開発したパッケージは専用サイトからダウンロード可能。
/** Geminiが自動生成した概要 **/
Go言語で"Hello World"を表示する方法を解説。Go環境設定後、workspace内のgoディレクトリにmain.goファイルを作成する。`package main`と`func main(){}`は必須。`print("Hello World")`を{}内に記述し、Ctrl+Shift+Bで実行すると"Hello World"が表示される。Atomの設定でBを押すと実行されるよう設定されている。 別の方法として、MINGW64などのコマンドラインから`go run main.go`を実行しても"Hello World"が表示される。
/** Geminiが自動生成した概要 **/
妻にプログラミングを教えるのは、SOY Shop開発への協力を期待しているからではなく、プログラミングを通して「相手に的確に指示を伝える能力」を身につけてほしいからだ。事務職希望者が多い一方、経営者側は事務作業をコストと捉える現状がある。プログラミングは、パソコンを部下に見立て、明確な指示を出す訓練となる。これは事務作業の効率化にも繋がる。また、電話での行き違いによる業務の非効率性を指摘し、プログラミング的思考で事前に情報を整理し伝えることの重要性を説く。最終的には、どんな業種でも発生する事務作業を効率化し、円滑なコミュニケーション能力を養うことが目的である。
/** Geminiが自動生成した概要 **/
SOY Shop向け返金管理プラグインが開発されました。注文詳細画面から返金・増額の振込額や銀行口座情報を登録可能になり、管理画面の注文一覧検索で返金関連情報による絞り込み検索もできるようになりました。 プラグインはsaitodev.coからダウンロードできます。
このプラグインは、注文毎のキャンセルや変更に伴う返金・増額を記録し、処理状況を追跡する機能を提供します。注文状態に「返金処理待ち」ステータスも追加され、より詳細な注文管理が可能になります。 これは、既存の注文検索フォーム拡張ポイントと注文状態・支払状況フラグ追加拡張ポイントを利用して実現されています。
/** Geminiが自動生成した概要 **/
酵素の働きを量子力学的に理解すると、そのメカニズムがより明確になる。生物は高カロリー物質を低カロリー物質に変換する際、酵素を用いて必要なエネルギーを減少させ、その差分を生命活動に利用する。酵素反応は、電子の授受という観点から説明できる。金属酵素では、マンガンなどの金属が基質を引きつけ、反応を促進する役割を担う。つまり、酵素は電子の移動を制御することで、効率的なエネルギー変換を実現している。
/** Geminiが自動生成した概要 **/
Ryzen 5 2500U APU搭載のノートPCにUbuntuをインストールすると、フリーズが発生し失敗した。翌朝、研究すると、Ryzen APUにはLinuxカーネル4.15のAMD GPUドライバーが必要であることが判明。Ubuntu 18.04のβ版イメージを作成し、UEFIから起動させるとインストールが成功した。現在は問題なく動作するが、正式版がリリースされる4月末までは仕事を保留する。
/** Geminiが自動生成した概要 **/
SOY CMS開発秘話前編は、創業期の資金難の中、受託開発で得たノウハウを活かし、低価格で高機能なCMSを開発しようと奮闘する様子を描いています。開発当初はPHPの知識も乏しく、試行錯誤しながらコードを書き進め、徹夜作業も当たり前でした。クライアントワークで培った「使いやすさ」へのこだわりは強く、ユーザーインターフェースにも注力。限られたリソースの中、機能と使いやすさのバランスを追求しながら、徐々にSOY CMSの原型が形作られていきました。オープンソース化を目指し、試用版配布でユーザーを獲得していく戦略も、資金力に乏しい状況を打破するための工夫でした。
/** Geminiが自動生成した概要 **/
地衣類は、光合成を行うシアノバクテリアまたは緑藻と共生している菌類です。地衣類は、菌が光合成生物に必要な栄養を提供し、光合成生物が合成した産物を菌に返します。この共生関係により、地衣類は木の幹などの栄養分に乏しい環境でも生存できます。
地衣類の光合成にはマンガンが必要ですが、地衣類は宿主からマンガンを吸収していると考えられます。これは、死んだ幹に残った微量元素を活用している可能性を示唆しています。つまり、地衣類は木の残りを再利用することで、山の生態系における栄養循環に貢献している可能性があります。
/** Geminiが自動生成した概要 **/
php-webdriverを使用して、TinyMCEエディタに値を入力するには、iframeに切り替えてから入力し、その後親フレームに戻す必要があります。値を取得するには、再度iframeに切り替えてからテキストを取得し、親フレームに戻します。具体的には、`driver->switchTo()->frame()`と`driver->switchTo()->defaultContent()`を使用します。
/** Geminiが自動生成した概要 **/
SOY CMSのブロック内で繰り返し表示される記事に、一定の間隔で任意の文字列を表示するには、下記の手順に従います。
1. HTMLListクラスを継承したPHPクラスを作成し、populateItemメソッドで表示したい内容をHTMLタグで記述します。
2. HTMLファイルで、populateItemメソッドで作成したHTMLタグをsoy:idを使用して囲みます。
3. 表示する間隔をsoy:id="loop"に指定します。
4. 表示する文字列をsoy:id="index"に指定します。
これで、指定した間隔で任意の文字列が繰り返し表示されます。
/** Geminiが自動生成した概要 **/
SOY2HTMLのHTMLSelectクラスは、HTMLのセレクトボックスを生成する。`$this->addSelect()`で利用し、オプションは第二引数の配列で指定する。 `options`キーに配列を渡すとoptionタグが生成され、連想配列でない場合はvalue属性が設定されない。`indexOrder`をtrueにすると、数値インデックスがvalue属性となる。`selected`キーで選択状態を指定、複数選択には配列で渡す。多重配列でoptgroupも作成可能。`each`キーで各optionタグに属性を追加できる。
/** Geminiが自動生成した概要 **/
SOY2HTMLでラジオボタンとチェックボックスを設置する方法を解説。HTMLCheckBoxクラスを用い、PHP側で`addCheckBox`メソッドを使い、HTML側で`<input type="(radio|checkbox)" soy:id="id名">`を記述する。`addCheckBox`の第二引数配列には、name, value, selected(チェック状態), label(ラベルテキスト)を指定する。ラジオボタンはnameを共通にすることでグループ化される。チェックボックスは単独で動作する。HTMLCheckBoxクラスはHTMLInputを継承し、labelタグを自動生成する機能を持つ。`isBoolean`をtrueに設定すると、値が未送信の場合に備えてhiddenで値0を送信する。
/** Geminiが自動生成した概要 **/
HTMLTextAreaクラスは、テキストエリア要素を生成します。name属性とテキストの内容を指定し、その内容をinnerTextとしてレンダリングします。getTextメソッドはテキストの内容を取得し、オブジェクトを取得するオブジェクトメソッドはHTMLエスケープされたテキストを改行で囲んで返します。
/** Geminiが自動生成した概要 **/
SOY2HTMLを使用してテキストフォームを作成する方法を説明します。`HTMLInput`クラスを利用して、フォームにテキストフォームを追加できます。`addInput()`メソッドを使用して、フォーム要素のnameとvalue属性を設定します。これにより、PHPの記述混入を回避しつつ、デザインを崩さずにHTMLファイルを直接表示できます。テキストフォームの実際のコードは、`HTMLFormElement`クラスを継承した`HTMLInput`クラスで定義されています。
/** Geminiが自動生成した概要 **/
HTMLFormクラスは、HTMLのフォーム要素を生成するためのコンポーネントです。formタグを生成し、メソッド(デフォルトはPOST)やアクション、ターゲットなどの属性を設定できます。POSTメソッドの場合、CSRF対策としてsoy2_tokenという隠しフィールドを自動的に追加します。アクションが指定されていない場合は、現在のリクエストURIがアクションとして設定されます。また、JavaScriptのonSubmitイベントを設定することも可能です。disabled属性の設定も可能です。
/** Geminiが自動生成した概要 **/
レバテックキャリアの技術ブログで、筆者のGo言語のユニットテスト記事が紹介された。紹介記事はGo言語学習者向けのおすすめ記事まとめで、筆者の記事はテストコード作成フローの実例紹介が評価された。IT・Web系転職サイトに栽培系ブログが掲載されたことは、デジタルとアナログ業界の橋渡しとして意義深い。筆者は今後、両業界の利点を融合させる役割を目指している。
追記として、レバテックキャリアと同じ運営会社が、フリーランス向け案件紹介サイト「フリーランスHub」を立ち上げたことが紹介されている。フリーランスHubでは、地域やリモートワークなど様々な条件で業務委託案件を検索できる。
/** Geminiが自動生成した概要 **/
SOY Shopプラグインの拡張ポイントsoyshop.config.phpは、プラグイン毎に詳細設定画面を作成するための機能です。プラグインディレクトリにsoyshop.config.phpを設置し、インターフェース`SOYShopConfigPageBase`を実装することで、`http://ドメイン/CMSインストールディレクトリ/soyshop/index.php/Config/Detail?plugin=プラグインID` でアクセス可能な設定ページが生成されます。
主要なメソッドは`getConfigPage()`(設定画面のHTMLを出力)、`getConfigPageTitle()`(設定画面のタイトル)、`redirect()`(リダイレクト)です。`getConfigPage()`では、SOY2HTMLを用いてHTMLを生成するのが一般的です。PAY.JPクレジットカード支払いモジュールでは、`PayJpConfigPage`クラスとテンプレートファイルを使用して設定画面を構築しています。`redirect()`メソッドは、設定更新後などにURLパラメータを追加してリダイレクトする際に使用します。
/** Geminiが自動生成した概要 **/
さくらインターネットの最安値VPS上でSQLite版SOY CMSを運用するブログ運営者が、サイト表示速度の低下に対処するためSQLiteのVACUUMを試した。データベースファイルが肥大化し表示が遅くなったため、サーバ移行も検討していたが、SQLiteのVACUUMコマンドで一時データの削除を試みた。実行手順を掲載し、ファイルサイズが約0.3MB減少した結果を報告。速度改善効果への期待を示し、今後はauto_vacuum機能の利用も検討しているが、データベース作成時に設定が必要なため、現状では利用できないという結論に至った。
/** Geminiが自動生成した概要 **/
soyshop.admin.top.php拡張ポイントは、SOY Shop管理画面の新着情報欄にカスタム項目を追加できます。`getLink()`メソッドでリンクURL、`getTitle()`でタイトル、`getContent()`で本文、`getIcon()`でアイコンURLを返却することで項目が生成されます。`getLink()`では`SOY2PageController::createLink()`を使うことで環境に依存しないURLを作成可能です。例えば、特定の注文一覧ページへのリンクを追加する場合、`getLink()`で`SOY2PageController::createLink("Order.List?search[order_status]=5")`のように指定することで、注文ステータスが「発送済み」の注文一覧ページへのリンクを生成できます。
/** Geminiが自動生成した概要 **/
SOY2HTMLでPHPの処理結果をHTMLに表示するには、`soy:id`を利用します。PHP側では`addLabel`メソッドを使い、`soy:id`と同じ名前を第一引数、表示する値を`text`か`html`プロパティに設定した配列を第二引数に渡します。`text`は文字列をエンコードし、`html`はHTMLタグをそのまま出力します。`addLabel`は`createAdd`メソッドの簡略形で、本来は第二引数に`HTMLLabel`クラスを指定します。`soy2prefix`を指定すれば`soy:`部分を変更できます。
/** Geminiが自動生成した概要 **/
SOY CMS/Shopのモジュール内でSQLを実行するには、SOY2DAOを利用します。データベースへの接続情報はSOYShop_DataSetsクラスで管理されており、`getDataSourceName()`でデータソース名、`getDatabaseUserName()`でユーザー名、`getDatabasePassword()`でパスワードを取得できます。データベースに接続するには、`SOY2DAOFactory::create("データソース名")`を使用します。createメソッドの引数は省略可能で、省略した場合はshopデータベースに接続します。SQLを実行するには、`query()`、`executeQuery()`、`execute()`メソッドを使用します。これらのメソッドは、`SOY2DAO`クラスのインスタンスメソッドとして呼び出します。
/** Geminiが自動生成した概要 **/
管理画面の注文検索フォームを拡張するsoyshop.order.search.php拡張ポイントの説明。searchItemsメソッドでフォームに検索項目を追加し、setParameterメソッドで対応するSQLサブクエリを指定する。 searchItemsはラベルとフォーム要素を配列で返し、フォームのname属性は"search[customs][モジュールID][ユニークなパラメータ]"形式。setParameterは"id IN (SELECT ...)"形式のサブクエリを返す。伝票番号記録プラグインのコードを読むと理解が深まる。
/** Geminiが自動生成した概要 **/
開聞岳付近の畑の土壌は、火山噴火由来の小石が多く含まれる未熟黒ボク土である。小石は安山岩質で、開聞岳の山頂付近に形成された溶岩ドームの噴火によるものと考えられる。安山岩は玄武岩より粘性が高く、開聞岳の安山岩は特に粘性が強いと推測される。安山岩の組成は斜長石が多く、雲母、角閃石を含み、石英は少ない。これらの鉱物は風化によって粘土やミネラルを供給するため、土壌にとって有益である。周辺の山の地質を理解することで、遠方でも土壌に関する情報を得る能力が向上する。
/** Geminiが自動生成した概要 **/
SOY Shopの支払い拡張ポイント(soyshop.payment.php)は、`onSelect`、`getName`、`getDescription`、`getPrice`、`getMethod`、`hasOptionPage`、`getOptionPage`、`onPostOptionPage`などのメソッドを提供し、支払い方法のカスタマイズを可能にする。各メソッドは支払い方法名や説明、価格、追加ページの有無などを制御する。例として、クレジットカード決済では`hasOptionPage`でtrueを返し、`getOptionPage`で入力フォームを提供する。`getMethod`はカート内容に応じて支払い方法の表示を制御するが、最後のプラグインで全てのモジュールを制御する点に注意が必要。
/** Geminiが自動生成した概要 **/
SOY Shopプラグインの解説として、銀行振込モジュールを例に拡張ポイントが説明されている。プラグインはfeaturesディレクトリにmodule.iniで情報を定義し、pluginsディレクトリに機能を実装する。soyshop.config.php(設定画面)、soyshop.info.php(詳細ページへのリンク追加)、soyshop.order.mail.php(メールへの文章挿入)、soyshop.payment.php(支払い機能)といった拡張ポイントがあり、これらは/soyshop/webapp/src/logic/plugin/extensions/以下にインターフェース定義がある。
/** Geminiが自動生成した概要 **/
SOY Shopの伝票番号記録プラグインが複数個口配送に対応しました。以前作成したプラグインでは伝票番号を1つしか登録できませんでしたが、複数枚の伝票が必要なケースに対応するため、カンマ区切りで複数登録できるよう改良されました。 商品の大きさや段階的配送などで複数の伝票番号が発生する場合に便利です。現状はどの伝票番号がどの商品に対応するかの詳細管理まではできませんが、複数伝票番号の記録を実現しました。改良版プラグインはsaitodev.co/soycms/soyshop/ からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shopのクーポン自由設定プラグインに、クーポンをカテゴリ分けする機能が追加されました。クーポンコードの接頭辞をカテゴリ毎に設定できるため、クーポン登録時に規則を覚えていなくても自動入力できます。例えば、「gaku」で始まるクーポンは値引き額、「ritu」で始まるクーポンは値引率といった設定が可能です。 新規登録時、カテゴリを選択すると接頭辞が自動挿入されます。この機能は管理画面での注文時にも有効で、接頭辞が表示されるためクーポンコードを思い出すヒントになります。最新版はsaitodev.co/soycms/soyshop/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shopの拡張ポイント`soyshop.payment.php`は、支払方法のカスタマイズを可能にします。このファイルで定義されたクラスは、`getPaymentModules()`で利用可能な支払いモジュールを返し、`getMethodName()`でモジュール名を表示します。`check()`メソッドで入力値の検証、`execute()`で決済処理、`onPageCheckout()`でチェックアウトページへの表示要素を追加、`onError()`でエラー処理を行います。標準モジュールを複製し、これらのメソッドをオーバーライドすることで、独自の決済方法を実装したり、既存のモジュールの動作を変更できます。例えば、決済手数料の追加や、特定の商品での支払い方法の制限などが可能です。
/** Geminiが自動生成した概要 **/
SOY CMSはデザイナとプログラマの完全分業を目指し、機能はHTMLコメントタグの`<!-- cms:id="..." -->`に集約。これによりCMSを介さずともデザインが崩れず、改修コストを大幅削減。デザイナはPHP/SQLを触れずに済む一方、PHP記述許可モードで複雑な表示も可能に。不要な複雑さを排除し、クリエイティブな活動に注力させる開発理念が込められている。
/** Geminiが自動生成した概要 **/
SOY CMSは、WordPressなどと機能比較されがちですが、その真価は開発背景にあります。京都大学での業務アプリ開発で度重なる仕様変更によるプロジェクト炎上を経験したことがきっかけで、デザイナーとプログラマーの作業分離を目指しました。
SOY2フレームワークを基盤とし、プログラマーが機能をHTMLタグ(`cms:id`など)として提供し、デザイナーはそれを自身のデザインに組み込む形式を採用。これにより、デザイナーはプログラム知識なしにサイトの構築や変更を容易に行え、プログラマーも独立して修正できる。SOY CMSは、開発時や運営後のWebデザイナーの負担を最小限に抑えることを最大の目標としています。
/** Geminiが自動生成した概要 **/
SOY Shopのマイページに、お問い合わせフォームを設置できるプラグインが追加されました。注文後の電話対応を減らすため、ユーザーはマイページから簡単に問い合わせできるようになります。ログイン済みのユーザーは問い合わせ内容のみ入力すればよく、手続きを簡略化することで連絡のハードルを下げ、電話での問い合わせ頻度減少を目指します。プラグインをインストールするだけでマイページにお問い合わせページが追加されます。最新版はsaitodev.co/soycms/soyshop/ からダウンロード可能です。
/** Geminiが自動生成した概要 **/
社会人・学生向けプログラミング教室で、Google Apps ScriptのHTML Serviceを使ったGoogleドキュメント連携の勉強会が行われました。前回のスプレッドシート拡張の勉強会に続き、今回はHTML Serviceを用いてGoogleドキュメントのUIをどこまでカスタマイズできるかを検証しました。これにより、業務改善に繋がる新たなアイディア創出を期待しています。
関連として、Google Apps ScriptでJPEG画像からOCRで文字列を取得する内容も扱われました。
/** Geminiが自動生成した概要 **/
Windows 10でGo言語開発環境を構築する手順をまとめた記事です。Git、Go、Atomエディタをインストールし、日本語化やGo開発に必要なパッケージを追加します。AtomでGoファイルを作成し、"hello world"を出力するサンプルコードの実行までを解説しています。Go言語のバージョンは1.9.4、Windowsは64bit版を使用しています。最後に、アンチウイルスソフトの設定が必要になる場合があることに触れています。
/** Geminiが自動生成した概要 **/
SOY Shopの管理画面からの注文機能に、見積もり作成業務向けに自動バックアップ機能が追加されました。見積もり作成は商品数が多く、登録に時間がかかるため、作業中にセッションが切れてしまう可能性があります。この機能は、商品の内訳に変更がある度に自動でバックアップを作成し、セッション切れ後にバックアップから復元できるようにすることで、作業中断によるデータ損失を防ぎます。バックアップデータはJSON形式で保存されます。この機能追加を含むパッケージはsaitodev.coからダウンロード可能です。
/** Geminiが自動生成した概要 **/
植物は土壌中からケイ酸を吸収し、強度を高める。吸収の形態はSi(OH)4で、これはオルトケイ酸(H4SiO4)が溶解した形である。オルトケイ酸はかんらん石などの鉱物に含まれ、苦鉄質地質の地域ではイネの倒伏が少ない事例と関連付けられる。一方、二酸化ケイ素(シリカ)の溶解による吸収は限定的と考えられる。ケイ酸塩からの吸収は、酸による反応が推測されるが、詳細は不明。可溶性ケイ酸はアルミニウム障害も軽減する効果を持つ。つまり、イネのケイ酸吸収は、土壌中の鉱物組成、特にかんらん石の存在と関連し、可溶性ケイ酸の形で吸収されることで、植物の強度向上に寄与する。
/** Geminiが自動生成した概要 **/
あそこの畑がカリ不足している理由を、土壌中のカリウムの形態に着目して解説している。日本の土壌はカリウム含有量が多いと言われるが、それはカリ長石などの形で存在しており、植物が直接利用できる形態ではない。植物が利用できるのは土壌溶液中のカリウムイオンだが、その量は土壌全体の数%に過ぎない。土壌溶液中のカリウムイオンが不足すると、植物はカリウム欠乏症を起こし、収量低下や品質劣化につながる。したがって、土壌中のカリウム総量ではなく、実際に植物が利用できる形態のカリウム量を把握することが重要である。
/** Geminiが自動生成した概要 **/
長野県栄村小滝集落では、特別な農法により高品質な米が栽培され、台風による倒伏被害もほとんど見られなかった。倒伏した一部の水田と健全な水田の違いは、赤い粘土の客土の有無であった。イネの倒伏耐性向上に有効とされるシリカに着目すると、赤い粘土に含まれる頑火輝石やかんらん石などの鉱物がケイ酸供給源となる可能性がある。これらの鉱物は玄武岩質岩石に多く含まれ、二価鉄やマグネシウムも豊富に含むため、光合成促進にも寄与すると考えられる。赤い粘土に含まれる成分が、米の品質向上と倒伏耐性の鍵を握っていると考えられるため、イネとシリカの関係性について更なる調査が必要である。ただし、玄武岩質土壌はカリウムが少なく、鉄吸収が阻害されると秋落ちが発生しやすい点に注意が必要。
/** Geminiが自動生成した概要 **/
SOY Shopの注文詳細に、商品表示順の変更機能が追加されました。従来の納品書出力では、注文商品の表示順が固定でしたが、今回のアップデートで管理画面からドラッグ&ドロップで自由に並び替えが可能になりました。 これは、一度に数十種類の商品を注文するユーザーからの、ピッキングや梱包作業効率化の要望に応えたものです。新しい並び順は納品書にも反映されるため、検品や梱包ミス軽減に繋がります。この機能は、開発中の在庫管理と見積書作成機能にも応用され、業務効率化に貢献します。アップデートパッケージはsaitodev.coからダウンロード可能です。
/** Geminiが自動生成した概要 **/
プログラミング学習者へ「働きたくないイタチと言葉がわかるロボット」と「自動人形の城」を推薦。前者は言葉を理解するロボット開発を目指す動物たちの物語、後者は完成したロボットと暮らす王子の物語。どちらも言語学者によるAIをテーマにした作品で、高度な内容ながら読みやすい。ロボットへの指示を通して、プログラミングに必要な明確な指示や論理的思考、非プログラマとの認識の違いを体感できる。加えて「できる人」の考察もあり、ビジネスコミュニケーションにも役立つ。著者の過去作品「白と黒のとびら」も良書。
/** Geminiが自動生成した概要 **/
SOY Shopのマイページで注文編集プラグインに商品の削除機能が追加されました。以前は商品追加のみでしたが、今回のアップデートで注文詳細編集画面から商品の削除が可能になりました。削除したい商品を選択し、削除ボタンを押すことで注文から商品を除外できます。変更内容を保存すると、お客様とショップ管理者に変更通知メールが送信され、管理画面の新着にも反映されます。これにより、顧客はコールセンターに連絡することなく、マイページ上で注文内容の変更をより柔軟に行えるようになりました。ただし、商品削除に伴う金額変更など、クレジット決済への対応は今後の開発課題となっています。完全な注文編集機能の実現に向けて開発は継続中です。
/** Geminiが自動生成した概要 **/
Google Apps Script (GAS)のHTML Serviceでファイルアップロード機能を実装する方法を紹介。サンプルコードでは、HTMLフォームでファイルを選択・送信し、GAS側でGoogleドライブに保存、生成されたURLをHTMLに返す非同期処理を行っている。`google.script.run.withSuccessHandler()`でGAS側の関数を実行し、成功時の処理をHTML側で記述。フォーム送信イベント`onsubmit`でこの処理を呼び出し、アップロード後のURL表示を実現。この仕組みにOCR処理を組み合わせることで、画像アップロードと文字列抽出を同一画面で行うWebアプリ開発が可能になる。
/** Geminiが自動生成した概要 **/
Google Apps ScriptでJPEG画像からOCRで文字列を取得する方法を検証。GoogleドキュメントでのOCRをGASで自動化する方法を紹介している。 Drive APIを有効化し、画像URLを指定して`Drive.Files.insert`メソッドでGoogleドライブに挿入、`ocr:true`オプションでOCRを実行。 生成されたGoogleドキュメントには画像とOCR結果のテキストが含まれる。日付や画像中の文字認識は難しいが、本文は高精度で取得できた。以前試したGoogleドキュメント直接OCRより精度は高い。
/** Geminiが自動生成した概要 **/
社会人・学生向けプログラミング教室で、Googleスプレッドシートの拡張機能開発に関する勉強会が開催されました。参加者はGoogle Apps Scriptを用いて、スプレッドシートの操作やWeb API連携を学ぶことで、業務効率化やデータ分析に役立つ実践的なスキルを習得しました。具体的には、HTML ServiceとSpreadsheet Serviceを活用し、スプレッドシートデータの取得・表示、カスタムメニューの追加、外部サービスとの連携などを実践。参加者からは、日々の業務に活かせる具体的な知識を得られたと好評を得ました。さらに、Google Apps Scriptの基礎から応用までを体系的に学べるため、プログラミング初心者でも安心して参加できたという声も寄せられました。
/** Geminiが自動生成した概要 **/
社会人・学生向けプログラミング教室で、Googleスプレッドシートの拡張機能開発をテーマにした勉強会が開催されました。内容はスプレッドシート操作の自動化をGASを用いて行うもので、参加者は「Google Apps Script完全入門」を教材に学習しました。勉強会では、GASの基本的な使い方、HTML Serviceを用いたWebアプリ作成、スプレッドシート操作、API連携、トリガー設定などを実践的に学びました。参加者からはGASの利便性や可能性を実感する声が上がり、業務効率化やデータ分析への応用について関心を示していました。
/** Geminiが自動生成した概要 **/
Google Apps Script (GAS) のHTML Serviceを利用して、HTMLファイルとGASのコードを連携させる方法を紹介しています。 具体的な手順として、Googleドライブ上にGASプロジェクトを作成し、index.htmlファイルに"Hello, World!"と記述、コード.gsファイルにはdoGet関数でHTMLファイルを読み込むコードを記述します。 その後、ウェブアプリケーションとして公開することで、ブラウザでHTMLの内容が表示されることを確認しています。 さらに、GASを学ぶ上でJavaScriptの知識が重要であることを補足し、関連技術としてNode.js、NW.js、GoogleドキュメントのOCR機能についても言及しています。
/** Geminiが自動生成した概要 **/
光合成で生成されたグルコースは解糖系に入り、様々な物質に変換される。その中には、様々なアミノ酸の生合成に関わる中間体も含まれる。例えば、3-ホスホグリセリン酸はセリン、ピルビン酸はアラニン、アセチルCoAはロイシンなどの前駆体となる。さらに、クエン酸回路の中間体であるα-ケトグルタル酸はグルタミン酸へと変換され、そこから他のアミノ酸も合成される。つまり、光合成で得られた炭素骨格は、様々な経路を経てアミノ酸の生合成に利用されている。
/** Geminiが自動生成した概要 **/
SOY Shop用の再注文プラグインが開発されました。 以前作成された注文複製プラグインとは異なり、今回のプラグインは顧客情報を変更した再注文を可能にします。注文詳細画面に「注文の再登録」ボタンが追加され、クリックすると管理画面の注文登録画面に遷移します。以前の注文の商品情報が自動入力されるため、顧客と支払い方法を選択するだけで再注文が完了します。この機能は、商品点数の多い注文や、施工計算の見積書作成などで特に効果を発揮します。プラグインはsaitodev.co/soycms/soyshop/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
ブルカノ式火山の火山灰土壌は、輝石や角閃石といった造岩鉱物を多く含み、植物の生育に有利な性質を持つ。これらの鉱物は風化速度が速いため、カリウムやマグネシウム、カルシウム、鉄などの植物必須元素を供給する。また、風化過程で粘土鉱物が生成され、保水性や保肥性を向上させる。ただし、リン酸固定能が高いため、リン酸肥料の施用には注意が必要となる。さらに、火山性土壌特有の軽石や火山礫は、土壌の通気性や排水性を高める効果がある。これらの特性から、ブルカノ式火山由来の土壌は、適切な管理を行うことで高い生産性を持つ農地となる可能性を秘めている。
/** Geminiが自動生成した概要 **/
粘土鉱物の理解を深めるため、各地のジオパークや博物館で得た情報をもとに、土壌における役割を考察している。地震や火山活動により長石などのアルミノ珪酸塩が粘土鉱物に変質する過程に着目し、図鑑で長石の種類や変質経路を調べた。温泉のpH変化と粘土鉱物の関係、黒ボク土のアロフェンと非アロフェンの起源にも触れ、どちらもアルミノ珪酸塩の二次鉱物であることを指摘。最終的に、アルミノ珪酸塩の分布と火成岩の関係へと議論を展開する。
/** Geminiが自動生成した概要 **/
WordPress疲れのユーザーからSOY CMSへの問い合わせが増加し、情報不足を訴える声が寄せられている。彼らは情報が少ないことを理由に公式マニュアルの拡充や書籍化を求めるが、開発元はこれに対応する意思はない。開発元はSOY Shopの業務効率化に注力しており、WordPressからの乗り換えユーザー獲得を目指していない。情報が少ない現状はチャンスであり、ユーザー自身が情報発信すればコアユーザーとしての地位を確立し、書籍化も可能だと考えている。開発元の動機は優れた販売方法を学ぶことであり、「まとめれば売れる」という意見より、「勝機を見出し、まとめて売ったら売れた」という報告を期待している。よって、情報不足に関する問い合わせへの対応強化は行わない。
/** Geminiが自動生成した概要 **/
生物は常に活性酸素を発生しており、これは呼吸によるエネルギー産生の副産物である。活性酸素は細胞を傷つけるため、老化や病気の原因となる。しかし、生物は活性酸素を完全に排除するのではなく、免疫や細胞の情報伝達などにも利用している。活性酸素の発生源や種類、細胞への影響、そして生物がどのように活性酸素を利用し、防御しているかを理解することは、健康維持や病気予防に繋がる。
/** Geminiが自動生成した概要 **/
SOY Shopの拡張機能で、部品毎の利益上乗せ方式の施工費計算に対応しました。商品登録時に仕入れ値(定価)と利益込み価格(通常価格)を登録し、注文時に各商品の差額を合計して利益を算出します。通常の施工費固定方式も併用可能です。商品毎の仕入れ値変更があっても過去の注文への影響を防ぐため、注文時の定価を記録し、過去の注文の利益計算には記録された定価を使用します。この機能を含むパッケージはsaitodev.coからダウンロードできます。
/** Geminiが自動生成した概要 **/
社会人・学生向けプログラミング教室で、Googleスプレッドシートの拡張機能を活用した業務アプリ作成の勉強会を実施。備品管理表を作成し、GAS(JavaScript)で毎週金曜日に備品不足をチェック、関係者へ調達指示メールを自動送信する仕組みを構築した。Googleスプレッドシートの複数人管理機能とGASによるGmail連携で、備品調査とメール送信を自動化。GoogleドライブとGASで業務効率化を図り、クリエイティブな作業時間を増やすという狙い。
/** Geminiが自動生成した概要 **/
記事では、インターネット上のパケットを傍受して中身を確認する方法を解説しています。使用ツールはWiresharkで、無線LANに接続するPCと、傍受対象のスマホを同じネットワークに接続します。スマホと通信するパケットはPCも受信するため、Wiresharkでフィルタリングしてスマホの通信のみを抽出します。HTTP通信の場合は、パスワードなどの重要な情報が平文で送信されていることが確認できます。HTTPS通信の場合は暗号化されているため、傍受しても内容は解読できません。この実験を通して、HTTP通信の危険性とHTTPS通信の重要性を示しています。
/** Geminiが自動生成した概要 **/
SOY Shopを在庫管理業務アプリ化するため、注文合計金額を固定し経費と粗利を確認できるプラグインを開発。施工費20万円の案件で、部品代金合計に加え、人件費などの経費を入力し、粗利を自動計算。合計金額は施工費で固定されるため、利益管理が容易に。注文複製プラグインと組み合わせることで、案件ごとの部品在庫管理が可能になり、見積書・納品書出力機能と連携すれば業務効率化に貢献。この機能は物販サイトには直接関係ないものの、SOY Shopの基本機能を拡張しており、間接的に物販サイト運営にもプラスの効果をもたらす。
/** Geminiが自動生成した概要 **/
SOY Shopで在庫管理業務アプリ用の注文複製プラグインを作成しました。組み立てに必要な材料(部品)の管理において、以前作成した注文(部品の使用量)を複製できる機能を追加。注文詳細画面の拡張機能ボタンに「注文の複製」ボタンを設置し、複製機能を実現。一度の注文で多くの材料を登録する場合に便利。この機能はプラグインなので、不要な場合はボタンを非表示にして誤操作を防止できます。今回の更新を含むパッケージはsaitodev.co/soycms/soyshop/ からダウンロード可能です。
/** Geminiが自動生成した概要 **/
GoogleドキュメントのOCR機能を使って画像ファイルから文字列を抽出する方法を紹介しています。手書きの名前が書かれた画像ファイルをGoogleドライブにアップロードし、Googleドキュメントで開くと、画像の下に文字列が抽出されます。著者は元々オープンソースのOCRライブラリを探しており、NHocrを試しましたが精度が及ばなかったため、GoogleドキュメントのOCR機能の精度の高さに驚いています。GoogleドキュメントがNHocrを組み込んでいる可能性や、GoogleのOCR APIの利用についても言及しています。
/** Geminiが自動生成した概要 **/
さくらVPS(Ubuntu 16.04)にJenkinsを導入し、Seleniumとphp-webdriverでUIテストを自動化する方法を紹介。Jenkinsインストール後、初期設定、ジョブ作成、Git連携、ビルドトリガー設定、シェルスクリプト実行設定、メール通知設定を行い、Apacheの設定を調整してテスト実行環境を構築。15分毎にGitリポジトリをポーリングし、変更があれば自動的にテストを実行、結果をメールで通知。これにより、月700円のVPS費用で継続的なUIテストを実現。
/** Geminiが自動生成した概要 **/
さくらVPS(Ubuntu 16.04)にSeleniumとphp-webdriverによるUIテスト環境を構築する方法。Selenium実行には仮想デスクトップ(Xvfb)とChromiumが必要で、手順はApache/PHP設定、Java8、Selenium、Xvfb、Chromium、ChromeDriverインストール、そしてSelenium起動スクリプト(load.sh)作成。load.shはXvfbとSeleniumを同時に起動し、ブラウザは仮想デスクトップ上で動作する。動作確認は http://(VPSのIPアドレス):4444 で行う。Jenkinsの設定とload.shの自動起動設定は今後の課題。
/** Geminiが自動生成した概要 **/
Dropboxの有料プランで、既に280GB使用しているアカウントに、容量20GBのVPSサーバにある4GBのサイトをバックアップする必要があった。Dropboxの容量がサーバ容量を大きく超えていたため、同期でサーバ容量が逼迫する懸念があった。しかし、Dropboxの「exclude add」コマンドで同期しないフォルダを指定し、不要なフォルダを逐次除外することで、サーバ容量の問題を回避できた。最終的に、バックアップスクリプトを作成しcronに登録することで、Dropboxを使ったサイトバックアップを実現した。
/** Geminiが自動生成した概要 **/
php-webdriverで`target="_blank"`のリンクをクリックした際、新しいタブにフォーカスを移すには`$driver->switchTo()->window(end($driver->getWindowHandles()));`ではなく、`$wins = $driver->getWindowHandles(); $driver->switchTo()->window(end($wins));`のように書く。
また、テスト終了時に単に`close()`を使うとセッションが残ってしまうため、タブが一つの場合は`quit()`を使う必要がある。これを考慮した`close()`関数を定義することで、複数タブでも単一タブでも適切にブラウザを閉じ、テストを終了できる。
/** Geminiが自動生成した概要 **/
Seleniumとphp-webdriverを使い、SOY CMSのログイン画面を自動操作するテストコードを実行した。ChromeドライバでChromiumを起動し、ログイン画面を表示後、ログインIDフォームに「soycms」と入力するコードを追加。実行結果、コンソールに「soycms」と表示され、Chromium上でもログインIDフォームに「soycms」が入力されていることを確認。基本的な動作確認が完了し、本格的なテストコード作成に移行する。
/** Geminiが自動生成した概要 **/
Ubuntu 19.10のSnap版Chromiumでは、Seleniumのテスト自動化が実行できない場合があります。これは、Snapのセキュリティ制限により、SeleniumがChromiumを直接操作できないことが原因です。解決策は、ChromiumをSnap版ではなく、aptでインストールしたバージョンを使用することです。まず、`snap remove chromium`でSnap版を削除し、`sudo apt install chromium-browser`でapt版をインストールします。さらに、ChromeドライバーのバージョンとChromiumのバージョンが互換性があることを確認してください。これらの手順により、SeleniumはChromiumを正常に操作できるようになり、テスト自動化が実行可能になります。
/** Geminiが自動生成した概要 **/
SOY Shopで商品規格プラグインを利用している場合、全子商品の在庫数を簡単に確認する方法として、在庫管理プラグイン(または在庫数一括設定プラグイン)の活用が推奨されています。商品規格プラグインは子商品を利用するため、CSVエクスポートでの確認が煩雑になるためです。在庫管理プラグインでは、検索条件を指定して商品一覧を表示、在庫数の一括変更が可能ですが、今回、親商品を非表示にする機能が追加されました。具体的には、「表示件数:100件」、「公開状態:公開のみ」、「子商品の表示:通常商品以外」を設定することで、各規格ごとの子商品の在庫数のみが表示されるようになります。アップデート版はサイト(/soycms/soyshop/)からダウンロード可能です。
/** Geminiが自動生成した概要 **/
ブログネタ探しに川を訪れた筆者は、川の端の砂利の堆積地で発芽した草を発見する。11月中旬の冷たい水際に芽吹いたロゼットと思われる草に驚き、その生命力に感嘆する。無事に冬を越せるのかと、小さな植物の未来に思いを馳せる。筆者はこの発見を「川のドラマ」と表現し、ブログネタの枯渇を救ってくれた川の恵みに感謝している。ただし、実際は先に草を見つけてから周囲を撮影し、時系列を逆にした構成で記事を作成していることを追記している。
/** Geminiが自動生成した概要 **/
SOY Shopの顧客管理機能を活用し、新潟県司法書士会の会員検索サイトを構築。標準機能とプラグイン(ユーザーカスタムサーチフィールド、顧客グループ、顧客住所GoogleMaps連携、ストレージ)を組み合わせ、簡裁代理権などのカスタム項目や事務所情報、地図連携を実現。管理画面は不要な注文・商品関連機能を非表示化し、会員管理に最適化。カート・マイページ機能も無効化。都道府県の標準設定を新潟県に設定するなど、ユーザビリティも向上。構築手順を紹介しつつ、検索結果・詳細ページ作成については問い合わせを促している。
/** Geminiが自動生成した概要 **/
SOY Shopの管理画面の新着ページに表示される「最近更新した商品」の表示件数を変更できるプラグインが開発されました。従来は5件固定でしたが、プラグインの設定画面で自由に件数を設定可能になりました。また、更新履歴のない商品は表示されないよう改善されました。このプラグインは、新着ページのコンテンツをプラグイン化することで実現しており、表示内容のカスタマイズを容易にしています。ダウンロードはsaitodev.co/soycms/soyshop/ から可能です。
/** Geminiが自動生成した概要 **/
SOY ShopのPAY.JP定期課金モジュールがアップデートされ、管理画面から顧客の定期課金プラン変更が可能になりました。顧客詳細画面でプラン変更やキャンセル操作が行えます。プランは商品情報としてSOY Shop内で作成・管理します。ただし、商品情報の編集回数が多い場合、プラン一覧取得に不具合が生じる可能性があります。
このモジュールを活用することで、SOY CMSと連携した会員制有料ブログや、SOY Mailと連携した有料メルマガの運営が容易になります。最新版はsaitodev.co/soycms/soyshop/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY ShopでPAY.JP定期課金に対応した決済モジュールが作成されました。クレジットカード決済モジュールと同様の設定方法で、有料ブログやメルマガ運営が可能になります。設定方法は既存のPAY.JPクレジットカード決済モジュールと同様で、SOY CMSのブログ、SOY Shopの顧客名簿、SOY Mailとの連携によって実現します。ダウンロードはsaitodev.coから可能です。ただし、本番環境での運用実績はまだないため、使用前に問い合わせフォームへの連絡が推奨されています。管理画面からプラン変更も可能になりました。
/** Geminiが自動生成した概要 **/
SOY Shopのダウンロード販売機能が拡張され、子商品を持つグループ化が可能になった。これにより、例えば10巻の電子書籍を1商品として管理し、各巻を子商品として登録できる。商品規格プラグインと連携すれば、購入画面で巻数をセレクトボックスから選択できるようになる。このアップデートは、PAY.JPクレジットカード支払いモジュールとの併用で、ダウンロード販売サイトの開設をより手軽にし、ノウハウ販売などのビジネス展開を容易にする。
/** Geminiが自動生成した概要 **/
SOY Shop用Facebookログインプラグインが開発されました。管理画面で設定後、マイページログイン画面にFacebookログインボタンが表示されます。クリックするとFacebookログイン画面が開き、ログイン後にSOY Shopで新規会員登録とログインが行われます。既に登録済みの場合はログインのみ。シンプルな機能ですが、拡張性も考慮されています。プラグインはsaitodev.co/soycms/soyshop/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shop用Googleサインインプラグインが開発されました。このプラグインをインストール・設定すると、マイページログイン画面にGoogleログインボタンが表示され、クリックでGoogleアカウントでのログイン・新規登録が可能になります。既存ユーザーはログイン、新規ユーザーは登録後ログインとなります。シンプルな機能ですが、今後の拡張が予定されています。ダウンロードはsaitodev.co/soycms/soyshop/ から可能です。
/** Geminiが自動生成した概要 **/
SOY Shop用LINEログインプラグインが開発されました。このプラグインをインストール・設定すると、マイページログイン画面にLINEログインボタンが表示されます。ボタンクリックでLINEログイン画面に遷移し、ログインするとSOY Shopサイトにリダイレクトされ、新規会員登録とログインが自動で行われます。既にLINE連携済みの会員はログインのみ行われます。現在は基本的なログイン機能のみですが、今後の拡張が予定されています。プラグインはsaitodev.co/soycms/soyshop/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shop用のPAY.JPクレジットカード支払いモジュールが開発され、無料で簡単にクレジットカード決済を導入できるようになった。PAY.JPは初期費用・月額固定費不要のプランもあり、導入障壁が低い。モジュールの利用には、PAY.JPでアカウント作成後、APIキーを取得し、SOY Shop管理画面のモジュール設定に入力する。設定完了後、購入画面でクレジットカード支払いが選択可能になる。カード情報非通過にも対応済み。詳細はサイト(saitodev.co/soycms/soyshop/)で確認できる。定期課金モジュールも提供されている。
/** Geminiが自動生成した概要 **/
社会人・学生向けプログラミング教室で、GoogleフォームをGASでカスタマイズする勉強会を実施しました。前回に続き、今回はGoogleフォームで作成したお問い合わせフォームに、複数人への通知機能を追加しました。具体的には、Googleスプレッドシートの名簿に記載されたメールアドレス宛にも、お問い合わせ通知メールが送信されるようGASで機能拡張を行いました。次回は、お問い合わせ内容に基づきメール文面を動的に生成する方法を学ぶ予定です。
/** Geminiが自動生成した概要 **/
SOY Shopの管理画面の顧客検索に、ユーザーカスタムサーチフィールドが追加されました。管理画面でフィールドを追加すると、検索フォームが生成され、顧客情報の絞り込みが可能になります。CRMと連携せずとも、ある程度の顧客管理が可能になります。試作版のため対応漏れがあり、使用したいフィールドの種類が動作しない場合は問い合わせフォームから連絡できます。パッケージはサイトからダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shopの顧客グループプラグインで、顧客登録画面の勤務先項目の表示・非表示設定が追加されました。顧客グループで勤務先を管理する場合、標準の勤務先項目は二重登録の原因となるため、非表示設定が有用です。BtoCの物販サイト等でも勤務先情報が不要な場合に活用できます。非表示設定は管理画面の基本設定で行います。この更新により、顧客情報の入力操作が簡素化され、クライアントへの納品時にも混乱が避けられます。アップデート版はsaitodev.coからダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shopの顧客管理機能が強化され、顧客詳細編集画面と顧客グループプラグインにGoogle Maps連携が追加されました。顧客詳細では住所入力フォーム下に地図が表示され、顧客グループプラグインでは地図付き住所フィールドが追加されました。管理画面でしか使用しない顧客情報に緯度経度情報を持たせた理由は後日公開予定です。アップデート版はsaitodev.co/soycms/soyshop/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
Tera schoolで開催している社会人・学生向けプログラミング勉強会で、業務改善を目的としたGAS(Google Apps Script)入門講座を実施しました。今回はGoogle Driveの共有フォルダのアクセス権限者一覧をスプレッドシートに自動出力するスクリプトを作成。JavaScriptの知識を活かし、数行のコードで名簿作成を自動化し、大幅な生産性向上を体感しました。次回は、作成した名簿を活用し、スプレッドシートとGmailを連携させた定期通知メール送信機能の実装を予定しています。
/** Geminiが自動生成した概要 **/
長野県栄村小滝集落は、標高が高く冬季の積雪が多い地域。良質な米作りには土壌の理解が不可欠で、土壌図インベントリーとシームレス地質図を活用。インベントリーからは「黒ボク土」と判明し、保水性が高い反面、養分保持力が低い特性が明らかに。地質図からは、付近に蛇紋岩が多く分布し、土壌が弱アルカリ性であると推測。これらの情報から、小滝集落の土壌は水はけがよく、ミネラル豊富な一方、窒素が流亡しやすい特徴を持つと結論づけ、適切な施肥設計の必要性を示唆した。実際、小滝集落の土壌はpH7.0~7.2を示し、分析結果と合致した。この事例は、公開データを用いた土壌分析の有効性を示している。
/** Geminiが自動生成した概要 **/
Socket.IOで作成したチャットアプリでXSS脆弱性対策を実施した。HTMLタグを入力するとエスケープされずに表示されてしまうため、`xss-filters`ライブラリを導入。`npm install xss-filters`でインストール後、サーバーサイドのメッセージ送信部分で`xssFilters.inHTMLData()`を用いて送信メッセージをフィルターした。その結果、HTMLタグがエスケープされて表示されるようになり、XSS攻撃を防ぐことができた。
/** Geminiが自動生成した概要 **/
SOY Shop用の顧客グループ分けプラグインを開発しました。顧客ごとにグループを設定し、グループ別に顧客一覧表示が可能になります。顧客管理画面にはカスタムサーチフィールドも追加し、高度な検索機能を提供します。開発の背景には、顧客管理の効率化と多様な検索ニーズへの対応があります。このプラグインを含むパッケージはsaitodev.coからダウンロード可能です。カスタムサーチフィールドの構築に関する詳細は、サイト内の関連記事を参照ください。 カタログサイト構築にも活用できる機能です。
/** Geminiが自動生成した概要 **/
Socket.IOで個別チャットを実現するため、namespacesを利用した検証が行われた。サーバー側では"hoge"と"huga"二つのnamespacesを作成し、クライアント側ではランダムにどちらかに接続するよう変更。結果、同じnamespaceに接続したクライアント間でリアルタイムなチャットが可能になった。namespacesによる個別チャットの可能性が示されたが、roomによる実現方法や動的なグループチャット作成機能の課題が残されている。
/** Geminiが自動生成した概要 **/
Socket.IOで個別チャットを作るための第一段階として、NamespacesとRoomsの概念を導入した。サーバー側(server.js)では、`io.of('/chat')`でchatというnamespaceを作成し、接続時に`socket.join("default")`で全ユーザーを"default" roomに所属させた。イベント発信時は`chatNS.to("roomName").emit()`を使用することでroom内限定の通信を実現。クライアント側(index.html)は、`io.connect("http://localhost:8080/chat")`のように接続URLにnamespaceを指定することで変更完了。これにより、複数ユーザーが同じチャットルームに参加できるようになったが、まだユーザー限定チャットにはなっていない。
/** Geminiが自動生成した概要 **/
公式パッケージ更新再開に伴い、サイトへの問い合わせが増加した一方、PHPの古いバージョン(PHP5.5系以前)での不具合報告も多い。セキュリティサポートが終了した古いPHPバージョンは重大な脆弱性を持つため、これらの環境での不具合修正は行わない。問い合わせフォームから報告する際は、PHPのバージョン明記が必須。バージョン確認方法は、SOY CMS(1系・3系)共に管理画面にログインし、「ようこそSOY CMSへ!」から「サーバー情報」→「PHP Info」タブで確認できる。
/** Geminiが自動生成した概要 **/
Node.jsとSocket.IOを用いたチャットアプリ構築後、Let's Encryptで常時SSL化する方法を解説。自己署名証明書ではブラウザ警告が出るため、無料のLet's Encryptを利用。Certbotによる証明書取得手順、Nginxの設定変更(SSL設定追加、httpトラフィックのhttpsリダイレクト)を説明。 Socket.IOのサーバー側コード修正では、httpsオプションを追加し、取得した証明書と秘密鍵を指定。これにより、チャットアプリがセキュアなhttps接続で利用可能になる。
/** Geminiが自動生成した概要 **/
開発元退職後もSOY CMS開発を続ける筆者は、情熱と責任感から無償で活動を継続している。退職理由は、開発方針の違いや待遇への不満ではなく、新機能開発への強い思いとユーザーコミュニティへの貢献意欲によるもの。オープンソース化という選択もあったが、品質維持と開発継続性を重視し、現状維持を選択。個人開発の負担は大きいが、ユーザーからの感謝や機能改善要望がモチベーションとなり、SOY CMSの発展に尽力している。
/** Geminiが自動生成した概要 **/
SOY CMSのブロックで、タイトルリンクを外部サイトに設定する方法を紹介します。まず、カスタムフィールドアドバンスドをインストールし、リンクタイプのフィールド(例:out_site_link)を追加します。記事投稿時に、このフィールドに外部サイトのURLを入力します。次に、ページテンプレートのブロック内にあるタイトル出力部分の`<a>`タグに、`cms:id="out_site_link"`属性を追加します。例:`<a cms:id="out_site_link"><cms:id="title_plain" /></a>`。これで、ブロックのタイトルが指定した外部サイトへのリンクになります。この方法は、ブログページ専用の`b_block:id="entry"`や`b_block:id="entry_list"`内でも同様に利用可能です。
/** Geminiが自動生成した概要 **/
開発元退職後も私がSOY CMS開発を続ける理由は、情熱と責任感にあります。SOY CMSは私の人生の一部であり、ユーザーにとって無くてはならない存在だと認識しています。退職によって開発が滞り、ユーザーに迷惑をかけることは避けたい。オープンソース化という選択肢もありましたが、継続的な開発とサポートを提供するため、個人で開発を引き継ぎました。収益化は二の次で、ユーザーのニーズに応え、SOY CMSを成長させることが最優先です。この決断は私にとって大きな挑戦ですが、SOY CMSとユーザーへの愛着が原動力となっています。
/** Geminiが自動生成した概要 **/
城ヶ島はフィリピン海プレートと北アメリカプレートの境界、相模トラフ上に位置する隆起した島。火山活動と地震の影響を受けており、特徴的な砂岩凝灰岩互層が見られる。これは海底で砂の堆積と火山灰の堆積が繰り返されて形成された層が、地震の影響で隆起し、傾斜した状態で露出しているもの。しかし、なぜ垂直方向に傾斜しているのかは記事内で説明されておらず、更なる調査が必要とされている。
/** Geminiが自動生成した概要 **/
SOY CMSの常時SSL化後、記事内の画像パスがhttpのままとなり、エラーが発生する問題を解決するプラグインが作成されました。記事内の画像はhttpで始まる絶対パスで挿入されるため、手動またはデータベース操作で修正が必要ですが、このプラグインを使えば記事内の画像パスを一括でスラッシュから始まる絶対パス(例:/site/files/hoge.jpg)に変換でき、常時SSLに対応できます。プラグイン名は「画像URL変換プラグイン」で、saitodev.co/soycms/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY CMS/Shop用の置換文字列生成プラグインが開発されました。これにより、ユーザーはCMSとShopの両方で任意の置換文字列を生成できます。プラグインは、サイト運営者が動的なコンテンツを生成したり、パーソナライズされたメッセージを表示したりするのに役立ちます。画像は、CMSとShopでのプラグインの設定画面を示しています。最新のパッケージはsaitodev.coからダウンロードできます。
/** Geminiが自動生成した概要 **/
SOY CMSとSOY Shopの連携強化を図るプラグインが開発されました。従来、SOY CMSのブログパーツは標準ページでは利用できませんでしたが、最近のアップデートで可能になりました。今回さらに、SOY Shop側でSOY CMSの`cms:module`を利用できるプラグインが追加され、相互運用性が向上しました。これにより、ショップページでブログパーツや自作モジュールを容易に表示できるようになります。 この機能を利用するには、SOY CMSとSOY Shop両方のバージョンアップが必要です。 有料ブログ、販促ブログ付きネットショップ、カタログサイト構築など、多様な連携事例も紹介されています。
/** Geminiが自動生成した概要 **/
SOY CMSの検索結果ブロックプラグインにページャ機能が追加されました。これにより、複数ページにわたる検索結果を容易に閲覧できるようになりました。以前の記事で紹介されたb_blockの問題を解決するcms:module="blogparts"に続き、今回は検索結果の質向上を目指した改善です。ページャはプラグインの詳細にあるサンプルコードを貼り付けるだけで設置可能。また、Gravatar連携プラグインと併用することで、複数人運営ブログでの表示も改善されます。これらのアップデートを含むパッケージはsaitodev.co/soycms/からダウンロードできます。
/** Geminiが自動生成した概要 **/
SOY CMSの標準ページでブログページのサイドバー(b_block)を使えるようにするモジュールを追加しました。標準では検索結果ページなどでb_blockが使えず、不便でした。このモジュールは `<!-- cms:module="common.blogparts" cms:blog="ブログID" -->` で囲むだけで、指定ブログのb_blockが使用可能になります。ブログIDはブログ詳細画面のURL末尾から取得します。カテゴリ一覧、月別アーカイブ、最近の記事/コメント/トラックバック一覧などに対応。Gravatar連携は別プラグイン推奨。パッケージはsaitodev.co/soycms/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY CMSのブログ機能強化のため、Gravatar連携プラグインを作成しました。このプラグインは、Gravatarのプロフィール情報をSOY CMSで利用できるようにするものです。Gravatarでプロフィールを作成しメールアドレスと紐づけることで、SOY CMS側でその情報を表示できます。複数人の著者情報を取得・出力し、著者ごとの記事一覧ページも作成可能です。プラグインブロックを活用することで、著者プロフィールをブログページに容易に組み込むことができます。パッケージはsaitodev.co/soycms/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shopはカテゴリ向けカスタムサーチフィールドを追加。既存のカスタムサーチフィールドに統合し、カテゴリ詳細検索を強化しました。これにより、親子関係を超え、特定の条件を満たす複数カテゴリに紐付く商品を検索可能に。より詳細な商品検索フォームの設置を実現します。新機能は公式サイトで提供中です。
/** Geminiが自動生成した概要 **/
SOY CMS用の人気記事一覧プラグインが新たに開発されました。 ブログ記事詳細ページの表示回数をカウントし、サイト内の全ブログを集計してランキング表示します。表示時間による重み付けなどは行いません。プラグインの設定方法は画像付きで詳細ページに記載されています。最新版を含むパッケージはsaitodev.co/soycms/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY CMSの記事詳細ページで、同じカテゴリの記事一覧を表示する「同一カテゴリーの記事一覧ブロックプラグイン」が開発されました。このプラグインは、SOY CMSのプラグインブロック上で動作し、ブログページの記事ページでのみ機能します。プラグインブロックの使い方については、別記事「SOY CMSでプラグインブロックを追加してみた」を参照ください。ダウンロードはsaitodev.co/soycms/ から可能です。
/** Geminiが自動生成した概要 **/
SOY Shopの商品ごと送料設定モジュールに、標準送料設定機能が追加されました。以前作成したモジュールでは、商品ごとに送料を設定しない場合、送料が0円になる問題がありました。今回のアップデートで、管理画面に標準送料設定項目が追加され、商品ごとの設定がない場合はこの標準設定が適用されるようになりました。これにより、商品追加時の手間が軽減され、送料設定漏れによる0円表示も防げます。アップデート版はサイト(https://saitodev.co/soycms/soyshop/)からダウンロード可能です。
/** Geminiが自動生成した概要 **/
SOY Shopのサイトマッププラグインがアップデートされ、カスタムサーチフィールドで生成された商品一覧ページのURLをサイトマップに追加できるようになりました。 対応フィールドは現在チェックボックスとセレクトボックスのみ。カスタムサーチフィールドの管理画面で「サイトマップに追加する」を選択することで、商品一覧ページがサイトマップに登録されます。多言語化プラグインとの併用は現状未対応。更新版パッケージはsaitodev.coからダウンロード可能です。この機能により、複数カテゴリのような設定や高度な検索フォームで絞り込まれた商品一覧ページへのアクセスが容易になり、SEO効果も期待できます。
/** Geminiが自動生成した概要 **/
常時SSL化はSEO上効果がある。GoogleはHTTPSをランキングシグナルとして使用しており、サイトのセキュリティ向上はユーザー体験の向上に繋がるため、間接的にSEO効果が見込める。ただし、HTTPS化自体が劇的なランキング上昇をもたらすわけではない。相対的にHTTPサイトより優位になる程度の影響と考えられる。また、サイト表示速度の向上も期待できるが、適切な設定が必要。常時SSL化は必須事項となりつつあり、SEO対策としてだけでなく、セキュリティ向上とユーザーへの信頼感醸成という観点からも重要である。
/** Geminiが自動生成した概要 **/
Ubuntu 17.04環境で、パスワードを忘れたzipファイルをfcrackzipを用いて解凍する方法を紹介。fcrackzipをインストール後、パスワード付きzipファイルを作成し、`fcrackzip -l 4 -u hoge.zip`コマンドでパスワードを解析する。`-l`オプションで解析する文字数を指定し、`-u`オプションで解凍を試みることでパスワード「hoge」を発見。解析時間は文字数に比例するため、パスワード設定時は文字数が重要。記事では、SOY CMSへの総当り攻撃やサイバー攻撃増加についても関連付けて言及している。
/** Geminiが自動生成した概要 **/
関西圏では、火山活動が少なく、黒ボク土は主に2:1型粘土鉱物が主体で、アロフェン質の黒ボク土に比べてアルミニウム障害が発生しにくい特徴があります。
一方、アロフェン質黒ボク土は火山灰の影響を強く受け、アルミニウム障害のリスクが高いです。
関西圏では、歴史的に黒ボク土での栽培が比較的容易であったため、「黒ボク土は良い土」というイメージが広まったと考えられます。
しかし、黒ボク土の性質は地域によって異なり、一概に「良い土」とは言えません。
/** Geminiが自動生成した概要 **/
黒ボク土は通気性・保水性に優れる反面、アルミニウム障害という問題を抱えています。本稿では、黒ボク土の形成過程を、粘土鉱物であるアロフェンと非アロフェンに着目して解説しています。黒ボク土は、玄武岩質火山灰を基材とし、アロフェン質と非アロフェン質に分類されます。非アロフェン質はベントナイトなどの2:1型粘土鉱物ですが、アロフェン質は火山ガラスから生成されるアロフェンを含みます。アロフェンの生成には玄武岩質火山灰由来の成分が関与していると考えられています。
/** Geminiが自動生成した概要 **/
SOY ShopのCSVインポート・エクスポートで0から始まる数字を扱うには、冒頭の0が削除されるのを防ぐ必要があります。LibreOfficeでCSVを編集する際、セル書式設定から「先頭のゼロの値」に桁数を指定することで、0を保持できます。例えば、5桁の数字の場合は「5」を設定します。これにより、SOY Shopへのインポート時に0が削除されずに追加されます。
/** Geminiが自動生成した概要 **/
PHPでPythonの機械学習ライブラリを利用する方法を検証。サンプルデータを使用してk近傍法によるアイリスの品種判定を実施。Pythonスクリプトで学習と判定を行い、PHPスクリプトでデータを送受信することで、PHPでPythonの機械学習機能を活用できることを確認した。
/** Geminiが自動生成した概要 **/
カスタムサーチフィールド機能を拡張し、検索結果ページでも並び替えが可能になりました。これにより、ユーザーはカスタムフィールドの値に基づいて検索結果をソートできるようになります。
この機能は、カスタムサーチフィールドで追加する項目でソート検索を追加し、検索結果ページに並び替えボタンを設置できるようになります。
この機能の追加により、ユーザーは検索結果をさらに柔軟に絞り込むことができ、必要な情報をより容易に見つけることができます。
/** Geminiが自動生成した概要 **/
動画編集ソフトFFmpegとAudacityを使って、動画の音声調整に挑戦した記録。元の動画の音量が小さく、ノイズが多かったため、Audacityで音量増幅とノイズ除去を実施。FFmpegで動画と音声の結合を行い、改善された動画を作成した。具体的には、Audacityで波形を見ながら音量を30dB増幅し、ノイズプロファイルを採取してノイズ除去を2回行った。結果、「サー」というノイズが消え、以前より聞き取りやすい音声になった。
/** Geminiが自動生成した概要 **/
SOY CMSのブログ記事にSOY Shopの商品情報を表示する「SOY Shop商品紹介プラグイン」が、カスタムサーチフィールドの値を出力可能になりました。商品紹介プラグインは、ブログ記事に商品コードを紐づけることで、記事詳細画面に商品情報を表示する機能です。カスタムサーチフィールドは、商品名以外のスペック等で商品検索を可能にするSOY Shopのプラグインです。今回のアップデートにより、商品紹介プラグイン内でカスタムサーチフィールドの値(csf:id)が利用可能になります。最新パッケージはsaitodev.co/soycms/からダウンロードできます。
/** Geminiが自動生成した概要 **/
長野県栄村の美味しい米の秘密を探るため、著者は地質に着目した。雪解け水に着目していた生産者とは異なり、地質図から、栄村は苦鉄質火山岩石(玄武岩質)の麓で、黒ボク土壌形成の条件を満たしていることを発見。黒ボク土壌は、玄武岩質火山灰、腐植、冷涼な気候の組み合わせで生まれる。栄村は積雪量が多く、5ヶ月にわたる積雪が土壌を湿らせ、苦鉄質ミネラル豊富な地下水を供給し、理想的な栽培環境を作り出している。さらに、地質図からカリウム不足を補う貫入岩の存在も示唆された。実際に現地調査を行った記事へのリンクも掲載されている。美味しい米は、優れた土壌とミネラル豊富な水、そして生産者の丁寧な栽培の賜物だと結論付けている。
/** Geminiが自動生成した概要 **/
PHPExcelライブラリを用いたExcelファイル読み込み処理にファイルアップロード機能を追加。$_FILESを利用し、アップロードされたExcelファイル(xls/xlsx)を動的に読み込むよう改修。 フォーム経由でファイルを選択・アップロードすると、セル内の値が表示される。主な変更点は、ファイルアップロードをトリガーとする条件分岐の追加、ファイルパスと拡張子の取得方法の変更、HTMLフォームの追加。これにより、任意のExcelファイルの内容を表示できるようになった。
/** Geminiが自動生成した概要 **/
SOY Shop用の商品ごと送料設定モジュールが試作されました。複数の作家がそれぞれ異なる送料で商品を販売する場合、商品ごとに送料とメールアドレスを設定できるようになります。同じ作家から複数商品を購入しても送料は1個分のみ加算されます。注文時には作家にも通知メールが送信されます。デモ画像では商品情報登録画面に地域別送料とメールアドレス入力欄が追加されています。このモジュールはサイト(/soycms/soyshop/)からダウンロード可能です。商品ごとではなくカテゴリごとに設定すれば、カテゴリ=作家として複数商品の送料を一括管理も可能になります。作家の商品販売に関する要望は問い合わせページ(/soycms/inquiry)から受け付けています。
/** Geminiが自動生成した概要 **/
SOY ShopのカテゴリCSVインポート/エクスポート機能が強化され、カテゴリカスタムフィールドに対応しました。カテゴリカスタムフィールドプラグインをインストールし、項目を追加すると、CSVのインポート/エクスポートページにカスタムフィールドが追加されます。これにより、CSVでのカテゴリデータ管理がより柔軟になります。最新版はsaitodev.co/soycms/soyshop/からダウンロード可能です。
/** Geminiが自動生成した概要 **/
渓流沿いで見慣れない植物を見つけ、既存の図鑑では分からなかったが、成美堂出版の「里山さんぽ植物図鑑」で判明した。この図鑑は開花時期順に構成され、花の一覧ページがあるが、著者は葉や種子の形状など多角的な情報提供の重要性を指摘する。実際、水滴散布の種子からネコノメソウ属に辿り着き、詳細な解説を通して形態学的知識を得た。更なる調査でネコノメソウ属は変異が多く同定が難しいと判明したが、ユキノシタ科の植物への意識を高める良い機会となった。
/** Geminiが自動生成した概要 **/
BracketsのBeautifyによるXMLファイルの自動整形を無効化する方法について解説されています。SOY CMS/Shop開発において、build.xmlがBeautifyによって整形され、Antビルドでエラーが発生する問題が発生しました。解決策として、brackets.jsonに`"language":{"xml":{"bb.beautify.onSave":false}}`を追加し、XMLファイルの自動整形を無効化することで、Antビルドが正常に動作するようになりました。
/** Geminiが自動生成した概要 **/
SOY Shopで商品価格の数字をカンマ無しで表示したいという要望に応えるため、カンマなし商品価格表示プラグインを作成した。標準機能のcms:id出力ではPHPのnumber_format関数により価格にカンマが入ってしまうため、プラグインでnumber_format関数をかまさないcms:idを追加する。プラグイン有効化後、テンプレートを修正することでカンマなし価格が表示される。プラグイン導入により、不要なユーザーに余計な処理負荷をかけることなく要望に対応できる。対応版パッケージはsaitodev.co/soycms/soyshop/からダウンロード可能。
/** Geminiが自動生成した概要 **/
グリーンタフは、緑色凝灰岩とも呼ばれる火山灰が堆積した凝灰岩で、土壌改良材として注目されている。多孔質で軽石を含むため、シラスに似た土壌を作ると考えられる。二酸化ケイ素を多く含み、微生物の増殖に適した環境を作るが、土壌への有効成分供給については更なる検証が必要である。重粘土質の土壌改良に有効とされるが、粗大有機物や木炭なども同様の効果を持つため、グリーンタフの採掘のしやすさが利点となる可能性がある。効果は二酸化ケイ素含有量に左右される。
/** Geminiが自動生成した概要 **/
SOY Shop向けプラグイン「カスタムサーチフィールド」に新機能「子商品一覧」が追加されました。この機能により、子商品のみを表示する商品一覧ページと検索結果ページを作成できます。親商品名とカテゴリ名も表示可能で、深い階層の商品カタログサイト構築に役立ちます。同時に、カスタムサーチフィールドで範囲項目と商品情報項目の併用時に検索機能が動作しない不具合も修正されました。改良版プラグインはサイト(https://saitodev.co/soycms/soyshop/)からダウンロード可能です。
/** Geminiが自動生成した概要 **/
大阪の鉱物展で鹿児島のシラスを初めて間近に観察し、その白さに驚いた著者は、シラスの成分を考察する。火山灰であるシラスは二酸化ケイ素を多く含み、石英とカリ長石が主成分だと推測。桜島の火山灰と比較しても白さが際立ち、石灰要素はほぼ無いと考える。酸性岩の組成から、石英とカリ長石が大半を占め、残りを斜長石が占める構成と推定。これらの鉱物の微細なものがシラスを構成しているため、保水性が低く排水性が高い。また、カリを多く含むため、カリを必要とするサツマイモ栽培に適していることを説明。長石由来の粘土は腐植を蓄積しにくい点にも触れ、火山灰だから良い土壌とは限らないと結論づけている。そして、作物によって適した火山灰の種類が異なると指摘する。
/** Geminiが自動生成した概要 **/
SOY Shopで同じshop:module(例:パンくずナビゲーション)を一つのページで二回使用する方法。
1. `/soyshop/webapp/src/module/site/common/breadcrumb_navigation.php` をショップIDディレクトリ内の `.module/common/` にコピーする。
2. コピーしたファイルを複製し、`breadcrumb_navigation2.php` 等にリネームする。
3. `breadcrumb_navigation2.php` 内の関数名を `soyshop_breadcrumb_navigation2` に変更し、`soyshop_breadcrumb_navigation` 関数が存在しない場合に元の `breadcrumb_navigation.php` をインクルードして実行するように修正する。
これにより、`shop:module="common.breadcrumb_navigation"` と `shop:module="common.breadcrumb_navigation2"` の二つのモジュールタグで同じ機能を別々に表示できるようになる。
/** Geminiが自動生成した概要 **/
Muninでメモリ監視を開始し、システムパフォーマンス書籍を参考にグラフの各項目を調査。freeコマンドの結果、サーバはオーバースペック。appsはメモリ使用量、page_tablesはプロセスアドレスのマッピング、slab_cacheはカーネルキャッシュ。キャッシュは処理結果を保存し高速化を図る仕組み。バッファは一時データ用メモリ領域。unusedは未使用メモリ、vmalloc_usedは割愛。committedは全プロセスの仮想メモリ総容量、mappedは物理メモリ総容量。activeは最近アクセスされたメモリページ、inactiveはそうでないメモリページの容量。グラフからもサーバのオーバースペックさが明確。
/** Geminiが自動生成した概要 **/
五代松鍾乳洞付近の鉱山はスカルン鉱床で、鉄や黄水晶、灰鉄輝石が産出する。黄水晶は石英に角閃石が混じることで生成される。付近に花崗岩らしき石が多く見られ、閃緑岩の特徴である輝石や角閃石の存在、そして石の色合いから、当初花崗岩と思われた石は石英を多く含む閃緑岩であると推測される。この地域の深成岩は、花崗岩と記載される場合と石英閃緑岩と記載される場合がある。
/** Geminiが自動生成した概要 **/
桜島の火山灰は、地元住民の言葉通り農作物に良い影響を与えている。ブルカノ式噴火による安山岩質の火山灰は、シラスとは異なり石英が少ない。その主成分は角閃石、輝石、磁鉄鉱、ガラス質で、黒色土壌を形成する。角閃石と輝石は鉄やマグネシウムを豊富に含み、植物の生育に有益だ。また、ガラス質が少ないため腐植蓄積も期待できる。実際に桜島大根の畑の土壌は軽く、腐植とよく混ざり合っており、良質な作物の収穫を裏付けている。火山灰はミネラル豊富な土壌改良材として機能し、桜島の農業を支えていると言える。
/** Geminiが自動生成した概要 **/
筆者はWebサービスのサーバー監視にMackerelを導入した。Muninを導入したVPSはあったが、個人サイト用に別途VPSを借りるのは負担だったため、Mackerelの5ホスト無料枠を利用することにした。導入手順は非常に簡単で、Ubuntuサーバーへのインストールはコマンド一行で済んだ。Mackerelはサーバーを即座に認識し、ロール設定後すぐに監視が開始された。監視による不安の解消に加え、メール、ChatWork、LINEなど豊富なアラート通知設定も魅力的だと感じた。
/** Geminiが自動生成した概要 **/
カルシウム過剰土壌では、植物はカルシウムを吸収しにくくなる「カルシウム欠乏」を起こす。これは、過剰なカルシウムがリン酸と結合し難溶性のリン酸カルシウムとなり、リン酸欠乏を引き起こすため。リン酸欠乏は根の伸長を阻害し、カルシウムを含む養分の吸収を妨げる。結果として、植物体内のカルシウム濃度が低下し、カルシウム欠乏症状が現れる。土壌へのクエン酸施用は、難溶性カルシウムを可溶化しリン酸の有効化を促すため、カルシウム過剰によるカルシウム欠乏対策として有効。
/** Geminiが自動生成した概要 **/
関数は集合Aの各要素に集合Bの唯一の要素を割り当てるもので、Aを定義域、Bを値域と呼ぶ。f(x) = x + 2 は実数の集合Rを用いて f:R→R と表せる。集合は値の塊で、要素数が決まれば有限集合、無数なら無限集合、空なら空集合となる。ベクトルも関数として解釈でき、例えば集合Aを野菜の種類、集合Bを科名とすると、野菜から科への対応付けが関数となる。この理解を基に肥料の自動計算を考える。
/** Geminiが自動生成した概要 **/
奄美大島の大島紬の泥染めは、テーチ木のタンニン酸と泥田の鉄の反応を利用している。しかし、染色の過程で鉄分が消費されるため、ソテツの葉を泥田に浮かべて鉄分を補給するという伝統的な方法がある。ソテツは「蘇鉄」と書き、まさに鉄を蘇らせる役割を果たす。ソテツの根には藍藻類が共生し、窒素固定を行うため痩せ地でも生育できる。この窒素固定にも鉄が必要とされるため、ソテツは鉄を蓄積していると考えられる。同様の窒素固定を行うマメ科植物でも、ソテツのように鉄分補給が可能かどうかは興味深い点である。
関連する「新しく借りた水田が老朽化水田だった時は」では、老朽化水田の土壌が還元状態になりやすく、鉄や硫化水素による根腐れが発生しやすいことが解説されている。解決策として、土壌の酸化を進めるために、代かき時に石灰窒素を散布し、水持ちをよくするために堆肥を施すことが推奨されている。また、雑草の繁茂を抑えるために、田植え前に除草剤を使用することも有効である。
/** Geminiが自動生成した概要 **/
SOY CMSのデフォルト404 Not Foundページはシステムが判別できるため、カスタマイズしてみた。外部サイトからのリンクで404 Not Foundにアクセスした場合、そのまま離脱される可能性を考慮し、サイト内のよく読まれている記事一覧を表示するように変更。これにより、偶発的な404アクセスでも他の記事に興味を持ってもらい、離脱防止を図る。
/** Geminiが自動生成した概要 **/
プログラミング教室で、文法は理解できてもコードを書けない生徒が多い原因を探るため、コードレビューを実施。100行程度のコードを一行ずつ解説させることで、関数の使い所、フォームの初期化、配列とオブジェクトの使い分けといった、具体的な実装における理解不足が課題だと判明。小さなアプリの処理を言葉で説明したり、写経と全行コメントで楽しく学習する方法を確立できれば、プログラミング学習の挫折者を減らせると考えられる。
/** Geminiが自動生成した概要 **/
SOY Shopは、表示速度を重視し、機能をシンプルに保つことで売上向上を目指している。そのため、メールマガジン機能はSOY Mailと連携する形を採用している。 高機能になればなるほどサイトの表示速度は低下し、顧客の離脱に繋がる。特に商品点数やアクセス数の多いネットショップでは深刻な問題となる。SOY Shopはこうした問題を回避するため、必要な機能を厳選し、他サービスとの連携によって拡張性を確保することで、軽快な動作と自由度の高い運用を実現している。つまり、あえてメールマガジン機能を内包せず、SOY Mailとの連携を推奨することで、ショップ運営の効率化と売上最大化を図っている。
/** Geminiが自動生成した概要 **/
SOY CMSを利用したネットショップ運営において、初期段階では自由度の高さがメリットとなるが、注文データの増加に伴い表示速度の低下という課題に直面する。これはGoogle検索ランキングにも影響する。記事では、表示速度低下の原因としてデータベース設計の冗長化、特にTEXTカラムの多用を指摘。SOY CMS/Shopでは不要な機能をインストールしない、外部データベースの活用などで冗長化を回避しているものの、注文データテーブルでのTEXTカラム使用は課題として残る。解決策として、サイト高速化とデータベースチューニングの必要性を提示している。具体的な対策は後述としているが、別記事ではPageSpeed Insightsのスコア99達成についても言及している。
/** Geminiが自動生成した概要 **/
D3.jsを3系から4系にバージョンアップして折れ線グラフを作成した際の変更点についての記事です。4系ではscale関連の記述方法が変わり、`d3.scale.linear()`が`d3.scaleLinear()`に、`d3.scale.ordinal().rangePoints()`が`d3.scalePoint()`に変更されました。特に`scalePoint()`を見つけるのに苦労したようです。また、`d3.axis.svg.axis()`が`d3.axisBottom()`のようにシンプルになりました。これらの変更点に苦労しつつも、無事にグラフ作成できたことが記述されています。
/** Geminiが自動生成した概要 **/
SOY CMS/Shop開発者が最も感銘を受けたネットショップは、1日に約3万件もの注文を処理しながら、サクサクとした動作を維持しているサイトです。この驚異的なパフォーマンスは、MySQLデータベースの綿密なチューニングと、徹底的なキャッシュ戦略によって実現されています。数百台ものサーバーが複雑なシステムを支え、注文処理から配送までがシームレスに連携。サイト運営者の技術力と、顧客満足度を最優先に考えた設計思想に開発者は深く感銘を受け、自らの開発にも活かそうと刺激を受けています。膨大なアクセスと注文を処理しながらも快適なユーザー体験を提供するこのサイトは、ネットショップ開発の理想形として、開発者の心に深く刻まれています。
/** Geminiが自動生成した概要 **/
SOY Shopで商品一覧をカスタム順に表示するには、カスタムフィールドを利用します。プラグインでカスタムフィールドを有効化し、「一行テキスト」型のフィールドを作成、これをソートに使用することを指定します。ページ管理から対象の商品一覧ページの設定を開き、「カスタム項目でソート」を選択、作成したフィールドを指定します。商品ごとに並び順を設定するには、各商品詳細ページのカスタムフィールドに数値を入力します。文字列としてソートされるため、1, 2, 11ではなく、101, 102, 111のように3桁の数値を使うことで意図しない並び順を回避できます。
/** Geminiが自動生成した概要 **/
SOY Shopの管理画面拡張機能として、プラグインが独自のページを持てるようにアップデート。これにより、ショップ機能を制限し、プラグイン経由でアプリ風機能を呼び出す「SOY App」的な開発が可能に。プラグインはSOY Shop本体への影響 minimal。 連絡掲示板プラグインを例に、管理画面内に掲示板を追加し、投稿時に登録管理者へメール通知する機能を実装。アップデート内容はGitHubのsoyshopパッケージに反映済。
/** Geminiが自動生成した概要 **/
さくら共有サーバーのスタンダードプランで、二つの独自ドメインショップサイトをSNI SSLで運営する方法。まず、mainsite.jpをルートディレクトリに設置し、SNI SSLを設定。設定ファイル内のURLを独自ドメインに変更する。次に、subsite.jpをsubディレクトリに設置し、マルチドメイン設定とSNI SSLを設定。設定ファイル内のURLも変更。最後に、subディレクトリの.htaccessに`RewriteBase /`を追加することで、subsite.jpのサブページへのアクセスエラーを解消する。
/** Geminiが自動生成した概要 **/
NW.jsで端末を使わずデスクトップアプリを作る方法をWindowsで解説。NW.jsをダウンロード、解凍後、appフォルダを作成し、index.htmlとpackage.jsonを配置。nw.exeのショートカットを作成し、プロパティのリンク先に「半角スペース+app」を追加。ショートカット実行でindex.htmlの内容が表示され、端末不要でアプリとして起動できる。配布方法は割愛している。