ブログ内検索

プログラミング教室
最近興味があることや肥料教室についてのメルマガを配信しています
検索キーワード:「LOG」
 

ピートモスの主原料のミズゴケについて

/** Geminiが自動生成した概要 **/
食虫植物の栽培を始めた息子さんの「ピートモスって何?」という素朴な疑問から、その主原料であるミズゴケの正体に迫る記事です。ピートモスは、ミズゴケ類などが湿地に堆積・腐熟したもので、主成分はミズゴケであることが説明されます。 記事では、ミズゴケについてさらに深掘りする中で「スファグナン」という用語に出会い、そこからミズゴケ属を意味する学名「Sphagnum(スファグナム)」に行き着く過程を紹介。これにより、ピートモスの主原料であるミズゴケの基本的な形状や名称が明確になります。 今回はスファグナン自体の詳細な解説は次回に持ち越しつつも、園芸初心者にも分かりやすく、ピートモスの成り立ちとミズゴケの正体を解き明かす入門編となっています。

 

活性炭とは何だろう?の続き

/** Geminiが自動生成した概要 **/
本記事は、活性炭の化学法(薬品賦活法)に焦点を当て、その製造メカニズムを解説しています。塩化亜鉛の強力な脱水力を活用することで、通常の高温炭化より低い500〜700℃の温度帯で、多孔質な活性炭を効率的に生成できる点を説明。この製法は、保水性や保肥力に寄与する官能基を残しつつ、pHが低めの活性炭を製造できるという利点があります。一方で、化学法で製造された活性炭には、医薬品の例から見ても、亜鉛(塩化亜鉛または酸化亜鉛)が残留する可能性があり、その安全性や影響について考察を促しています。

 

鉄を還元するアミノ酸

/** Geminiが自動生成した概要 **/
オンライン肥料教室での議論を受け、難溶性リン酸である鉄型リン酸の肥効を高めるアミノ酸肥料の有効性について解説しています。特に、含硫アミノ酸のシステインが酸化鉄(Ⅲ)を還元する可能性に着目。論文を引用し、システインのチオール基(-SH)が還元剤として機能し、鉄(Ⅲ)をキレートしながら電子を供与して鉄(Ⅱ)に還元するメカニズムを詳述しています。電子を失ったシステインはシスチンに変化すると考えられ、この還元作用が鉄型リン酸の利用効率改善に寄与する可能性を示唆しています。

 

ベンゼン環を含むアレロパシー物質の作用について

/** Geminiが自動生成した概要 **/
本記事は、アレロパシー物質「クマリン」のベンゼン環に着目し、その作用機序を深掘りします。クマリンは、ベンゼン環同士が引き合う「π-π相互作用」を利用し、タンパク質の立体構造形成に重要な役割を果たす芳香族アミノ酸の働きを阻害する可能性を解説。クマリンがタンパク質構造に入り込むと、π-π相互作用を乱し、特にミトコンドリア関連のタンパク質を失活させることでアレロパシー作用を発揮すると考察しています。最後に、サクラ自身への影響や土壌中でのクマリン無毒化に関する疑問を提起しています。

 

シデレチンの鉄の還元について

/** Geminiが自動生成した概要 **/
## シデレチンによる鉄還元メカニズムと植物の鉄獲得戦略の要約 シデレチンは、植物の重要な鉄獲得戦略(ストラテジーⅠ)を担う化合物です。本記事では、その詳細な鉄還元メカニズムを解説しています。シデレチンのカテコール部位にあるヒドロキシ基が鉄(Ⅲ)を挟み込み、ベンゼン環から電子を供与することで鉄(Ⅲ)を鉄(Ⅱ)に還元。還元された鉄はキレートから外れて放出され、植物の根に効率的に吸収される仕組みです。 この戦略は、バイオスティミュラント資材によってシデレチン合成が活発化することも示唆されており、難溶性リン酸の一種である鉄型リン酸の吸収にも深く関わる可能性が指摘されています。植物の鉄吸収効率を高め、リン酸過剰問題にも対処しうるため、今後の栽培において非常に重要な役割を果たすと期待されます。

 

鉄獲得戦略のストラテジーⅠで働く化合物は何か?

/** Geminiが自動生成した概要 **/
本記事は、植物の鉄獲得戦略のうち、土壌中のFe³⁺をFe²⁺に還元して吸収する「ストラテジーⅠ」に焦点を当て、その還元剤となる化合物を探究しています。植物の鉄吸収にはストラテジーⅠと、イネ科植物がとるムギネ酸でFe³⁺をキレートするストラテジーⅡが存在。ストラテジーⅠの還元剤として「クマリン類」や「フラビン類」が挙げられる中、筆者は論文調査により具体的なクマリン系化合物として「フラキセチン」と「シデレチン」を特定しました。これらは還元性とキレート結合能を持つカテコール構造を有し、ストラテジーⅠにおける鉄獲得に深く関与している可能性が示唆されています。

 

キレート剤としてのアミノ酸の配位子について

/** Geminiが自動生成した概要 **/
本記事では、植物由来のキレート剤として見てきたカルボキシ基やカテコール基に加え、アミノ酸が新たなキレート剤の候補となり得る可能性を探ります。特に、最も単純な構造を持つグリシンを例に、そのキレート結合のメカニズムを解説。アミノ酸はC-2炭素を介してアミノ基(-NH₂)とカルボキシ基(-COOH)を持ち、これらが金属イオンへの配位座となります。グリシンは、アミノ基の窒素原子とカルボキシ基の酸素原子の2点で金属イオンを挟み込む「二座配位子」として機能し、効果的なキレート剤となり得ることが示されました。アミノ酸によるキレート結合の理解を深める一歩となるでしょう。

 

1-オクテン-3-オールはバイオスティミュラント?

/** Geminiが自動生成した概要 **/
本ブログ記事では、1-オクテン-3-オールが植物のバイオスティミュラントとして機能する可能性を考察しています。アリルアルコールとの類似性から、求電子剤として植物酵素の失活や土壌中のポリフェノールとの反応による埋没炭素量の増加を指摘。植物がこれを防御反応として認識し、根からポリフェノールを分泌することで土壌の物理性向上に繋がる可能性も示唆します。実際に、シロイヌナズナに1-オクテン-3-オールを与えると灰色カビ病への抵抗性が増し、ジャスモン酸合成を促進することが報告されており、ヨトウムシ対策など、多岐にわたる活用が期待されます。

 

ナメクジが嫌う匂いは味噌の香り?

/** Geminiが自動生成した概要 **/
家庭菜園の悩みの種「ナメクジ防除」について、記事では研究論文から意外な可能性を提示。昆虫病原性糸状菌が合成する「1-オクテン-3-オール」という揮発性有機化合物に、ナメクジ忌避効果があることを発見しました。驚くべきことに、この成分は「味噌の香り」の主成分であり、リノール酸から合成されます。筆者は、EFポリマーで土壌生物性を高めつつ、リノール酸豊富な有機肥料(ナタネ油粕など)を施用することでナメクジ被害を軽減できる可能性を提案。ナタネ油粕を使った味噌香る米ぬかボカシ肥の発酵が忌避効果を生むか、今後の検証に期待が高まります。

 

昆虫が合成するプロリンに富んだ抗菌性ペプチド

/** Geminiが自動生成した概要 **/
本記事は、植物が乾燥ストレス時に蓄積するアミノ酸「プロリン」と昆虫の関係性を深掘りします。スズメバチの事例から、食害性昆虫がプロリン豊富な植物に誘引される可能性を提起。さらに、ショウジョウバエ属の抗菌性ペプチド「ドロソシン」がプロリンを多く含むことに着目します。この知見を基に、土中で微生物に囲まれて生きるヨトウガの幼虫も、プロリンを用いて抗菌性ペプチドを合成し、身を守っているのではないかという仮説を提唱。この仮説が、ヨトウガがプロリンを多く含む植物を好む行動や、EFポリマーによる被害減少の理由解明に繋がる可能性を探る内容です。

 

ボラ寿司は美味しいのか?

/** Geminiが自動生成した概要 **/
NHKで回転寿司の国産魚活用が取り上げられ、ボラが候補に挙がるも価値が低い現状に注目が集まります。筆者は「なぜボラは不人気なのか?」と疑問を抱き調査。かつては人気だったボラが、現在は「臭くて美味しくない」というイメージが定着していることが判明します。しかし、この臭いはボラ自体のものではなく、水質の悪い環境で育った個体が持つカビ臭の原因物質「ゲオスミン」によるもの。水質の良い場所で獲れたボラは臭みがなく、美味しい可能性が高いのです。現状は風評被害に苦しんでおり、その払拭と購入意欲への繋げ方が課題だと筆者は考察しています。

 

黃リンの製造

/** Geminiが自動生成した概要 **/
このブログ記事は、亜リン酸の原料となる「黃リン」の製造方法について解説しています。黃リンは、リン鉱石(リン酸カルシウム)をケイ砂、コークスとともに混合し、高温で強熱することで製造されます。 製造工程において、コークスは還元剤としてリン酸からリンを生成する役割を担いますが、莫大な電力消費を伴います。一方、ケイ砂はリン鉱石中のカルシウムを除去するために使用されます。 記事では、リン酸や亜リン酸の製造経緯にも触れつつ、今後はリン酸肥料と亜リン酸肥料の製造コスト比較に関心を示しています。

 

リン酸の精製

/** Geminiが自動生成した概要 **/
湿式法で得られる不純物を含む粗リン酸から、高純度なリン酸を得るための精製プロセスを解説しています。施設栽培用リン酸肥料の純度にも関連させ、古い論文を参照しながら精製技術の動向を紹介。 精製は主に以下のステップで行われます。 1. **一次精製**: 硫酸、ケイ素、フッ素などの不純物をカルシウムイオンで沈殿させて除去。 2. **抽出**: リン酸を有機溶媒(ブタノール等)に移動させ、不純な残液を除去。 3. **逆抽出**: リン酸を含む溶媒に純水を加え、リン酸を水相に戻す。 4. **濃縮**: 水分を飛ばし、リン酸を高濃度化。 記事では、このプロセスに黄リンが登場しないことから、リン酸と亜リン酸の製造過程は異なるとの考察も示唆しています。

 

菜園ナビで石灰過剰の話題で盛り上がっていて嬉しい

/** Geminiが自動生成した概要 **/
菜園ナビで石灰過剰に関する議論が活発化していることに筆者は喜びを感じています。不調な土壌への肥料アプローチとして、CEC向上、リン酸過剰、石灰過剰の解決を重視。特にリン酸過剰が、土壌中の特定の糸状菌の病原性を高め、植物から亜鉛などの栄養素を奪うことで生育不調や耐性低下を引き起こすと解説します。これにより、他の病原菌が付け入る隙を与え、「日和見感染」を誘発するメカニズムを詳述。リン酸過剰と石灰過剰の密接な関係は次回に触れると示唆し、期待を持たせています。

 

Nmapの会を開きました

/** Geminiが自動生成した概要 **/
自宅プログラミング教室にて、保護者向けの「Nmapの会」が開催されました。参加者はRaspberry PiにNmapをインストールし、自身のネットワークに接続しているデバイス数を調べる実践的な体験を通じて、身近なネットワークの仕組みやセキュリティへの理解を深めました。デジタルリテラシー向上を目的とした本イベントは、普段利用するインターネット環境への興味を喚起します。詳細な実施内容は関連記事で、教室については別記事で紹介しています。2026年4月19日開催。

 

土壌の生物性向上を巡る旅路

/** Geminiが自動生成した概要 **/
本ブログ5000回目の記事で著者は、技術顧問として継続的に取り組む土壌の生物性向上に関する分析成果を報告します。菌根菌などの有益菌増加と多様性向上を確認し、これが減肥・減農薬、土の物理性・保水性向上の重要性を示唆すると述べます。これまでの経験と出会いが現在の活動に繋がったと振り返り、比較的安価で導入可能な分析結果を農業現場へ普及させる展望を語っています。

 

白インゲンのレクチンとフザリウム

/** Geminiが自動生成した概要 **/
白インゲンに含まれるレクチンは、人体への毒性が知られる一方、土壌微生物への影響も注目されています。エジプトの大学の研究によると、白インゲン由来のレクチンが植物病原菌として知られるフザリウム属の糸状菌に対し、抗菌作用を示すことが明らかになりました。 この発見は、同じマメ科植物であるカラスノエンドウのレクチンにも同様の抗菌作用が期待できる可能性を示唆します。しかし、マメ科植物のレクチンは種類によって構造が多様であるため、カラスノエンドウのレクチンがフザリウム菌に実際に作用するかどうかは、今後の詳細な検証が必要とされています。

 

カラスノエンドウとレクチン

/** Geminiが自動生成した概要 **/
庭での生ゴミ処理にお悩みですか?本ブログ記事では、生ゴミを抜いた草で挟んで埋める独自の方法を紹介。この実践は、土の物理性向上と、イタチによる掘り返し防止に効果を発揮していると言います。 記事では、イタチが寄り付かなくなった理由を深掘り。草による生ゴミの匂いの遮断や、カラスノエンドウに含まれるとされる忌避物質「レクチン」の可能性に言及しています。レクチンが哺乳類に毒性を持つ可能性や、それが土壌微生物に与える影響という新たな疑問を提示し、次回への興味を掻き立てる内容となっています。

 

SOY Shopで郵送(クリックポスト)モジュールを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop向けに、日本郵便の格安配送サービス「クリックポスト」を活用した配送モジュールがリリースされました。クリックポストは全国一律185円で、自宅でラベル作成・決済、追跡、ポスト投函が可能な手軽なサービスです。 この新モジュール導入により、SOY Shopでは以下の機能が利用できます。 * カートでの配送方法に「郵送」を追加 * 商品個数に応じた個口設定 * 合計金額に応じた送料無料設定 * 管理画面から郵送注文を抽出し、クリックポスト依頼用のCSV出力 フリマや個人取引に最適なこのモジュールは、指定サイトからダウンロード可能です。

 

SOY CMSで404NotFoundページのアクセスログの機能を追加しました

/** Geminiが自動生成した概要 **/
SOY CMSに404NotFoundページのアクセスログ収集機能が追加されました。これは、不正ログイン攻撃のパターン把握と、不正アクセスによるサーバー負荷の軽減、悪質なアクセスのブロックを目的としています。SOY Shopは現時点では未対応。ログの肥大化を防ぐため、古いログは自動的に削除されます。今後はバックドア関連の検知機能追加も検討されており、セキュリティ対策の強化が期待されます。この新機能を含むパッケージは公式サイトからダウンロード可能です。

 

岡山城の石垣

/** Geminiが自動生成した概要 **/
岡山城の石垣は、約20km離れた犬島のピンク色の花崗岩で築かれている。犬島の花崗岩は、雲母の含有率が少なく風化しにくい特徴を持つ。石垣の砂も確認された。花崗岩のピンク色は、カリ長石に含まれる鉄の酸化によるもので、犬島の花崗岩はカリ長石が多い。雲母は風化しやすい造岩鉱物であるため、雲母が少ない犬島の花崗岩は石垣に適している。

 

沖縄県産カカオのチョコレートは非時香菓であると言いたい

/** Geminiが自動生成した概要 **/
沖縄産のカカオ豆を使用したチョコレートは、沖縄神話に登場する不老長寿のお菓子「非時香菓」に類似している。近年、非時香菓は沖縄北部で自生するカンキツ類であることが判明し、カカオ栽培園がその自生地に隣接している。また、カカオは歴史的に不老長寿の薬とされ、神聖な場所とされる緑色片岩が栽培園に存在し、神話の舞台と重なる。沖縄産チョコレートは、カカオの不老長寿の力と沖縄神話の非時香菓の伝説を併せ持ち、非時香菓の現代版であると捉えることができる。

 

灰色の軽石

/** Geminiが自動生成した概要 **/
沖縄県に漂着した軽石の成分分析によると、有害金属は検出されておらず、農業利用の基準値も下回っている。しかし、海水由来の塩化物イオン濃度が高く、農業利用には脱塩処理が必要。また、軽石の組成は産地によって異なり、福徳岡ノ場由来の軽石はSiO2含有量が少なく、CaO、Na2O、K2Oが多い。鉄の含有量は火山ガラスの色で判断でき、灰色は白色より鉄分が多い。今後、風化の影響や長期的安全性を検証する必要性があり、現時点では農業利用を推奨していない。産業利用も慎重な検討が必要。

 

園芸資材としてのスコリア

/** Geminiが自動生成した概要 **/
園芸資材として赤玉土や軽石につづき、スコリアの存在が気になった。ホームセンターで販売されているのを確認し、その多様性に驚いた。スコリアは多孔質で赤や黒っぽい岩石だが、軽石とは異なる。軽石が流紋岩質や安山岩質のマグマ由来である一方、スコリアは玄武岩質マグマ由来で、鉄を多く含むため重い。玄武岩質の土は扱いやすいことから、価格次第ではスコリアも注目の土壌改良材となる可能性がある。

 

鉢底石用の軽石

/** Geminiが自動生成した概要 **/
鉢底石に使われる軽石について、鹿沼土と比較しながら考察している。鹿沼土は脆い一方、鉢底石用の軽石は硬いため、採取地による性質の違いに着目。生成AIが提示した採取地候補のうち、榛名山軽石について調査を進めている。榛名山軽石は6世紀頃の噴出物で、鹿沼土よりも新しい。生成年代の違いが軽石の硬さに影響するのか疑問を呈し、今後の検証を示唆している。

 

鹿沼土はなぜpHが低い?

/** Geminiが自動生成した概要 **/
アロフェンは、pH依存的に陽イオン交換容量(CEC)と陰イオン交換容量(AEC)を示す粘土鉱物です。低pH環境では、アルミニウムイオンが水と反応してプロトンを放出し、正に帯電した表面を形成するため、陰イオンを吸着しAECを示します。高pH環境では、水酸基がプロトンを放出し、負に帯電するため、陽イオンを吸着しCECを示します。つまり、アロフェンを含む土壌のイオン交換容量はpHに大きく影響され、酸性土壌ではAEC、アルカリ性土壌ではCECが支配的になります。この性質は、土壌の養分保持能力や土壌改良に影響を与えます。

 

軽石は酸により風化が進むか?

/** Geminiが自動生成した概要 **/
軽石を落葉抽出液(おそらくタンニンを含む酸性)に浸したところ、黒い鉱物が脱落し、軽石に穴が空いた。軽石の主成分である無色鉱物(石英、長石)は酸に反応しないため、脱落した黒っぽい鉱物は有色鉱物(角閃石か磁鉄鉱と推測)と考えられる。これらの有色鉱物は酸に反応し溶解することで軽石から脱落した可能性がある。結果として軽石表面に穴が空き、水の浸透による風化が促進されると考えられる。

 

SOY CMSで生成AIによるキーワード自動抽出プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMS向け「キーワード自動抽出プラグイン」が開発されました。Google Gemini APIを利用し、記事内容からキーワードを自動抽出し、サイト内検索を強化します。特徴は、キーワードの読み仮名検索に対応している点です。例えば、「風化」を「ふうか」と入力しても記事がヒットします。MeCabのような形態素解析エンジンの導入・設定の手間を省き、生成AIの力で実現しました。将来的には入力補完や類義語検索も実装予定です。プラグインパッケージはsaitodev.co/soycms/からダウンロードできます。

 

ヤマボウシの冬芽

/** Geminiが自動生成した概要 **/
ヤマボウシの冬芽を観察し、ハナミズキのように花芽と葉芽が別々にあるのではないかと推測して、異なる形の丸い芽も見つけた。帰宅後、ヤマボウシの冬芽は花芽と葉芽が一緒になっているという情報を見つけたため、丸い芽の正体が分からなくなった。冬芽が開き始めた可能性や、最近の暖かさの影響も考えられるが、結論は出ていない。

 

ハナミズキの冬芽

/** Geminiが自動生成した概要 **/
ハナミズキの冬芽を観察した記録。枝の先端にアサガオの実のような形の冬芽ができ、丸っこい部分は総包片で中に花芽を含む。尖った脇芽は芽鱗に守られている。春には中央に花が咲き、両端に葉が生えるようだ。参考にしたウェブサイトによると、先端の丸い部分には花芽のみで葉芽は含まれない。今後の観察で春の開花の様子を確認予定。

 

最高の開発環境を求めて2024

/** Geminiが自動生成した概要 **/
ChromebookとRaspberry Pi 5の組み合わせが最高の開発環境。ChromebookのLinux開発環境(Crostini)の制限をRaspberry Pi 5をサーバーにすることで回避。複数人でRaspberry Pi 5にアクセスし、Micro Editorを使って開発することで、小中学生でも容易にコーディングが可能に。ChromebookのSSH機能強化も貢献。Raspberry Pi 5のストレージはNVMeに換装することで信頼性向上。以前のRaspberry Pi 4B単体での開発環境に比べ、高速でストレスフリー。Chromebookはターミナルとして使用し、開発環境はRaspberry Pi 5に集約することで、ChromebookのPowerwashの影響も回避。

 

蛇紋岩土壌は植物にとって過酷な環境の続き

/** Geminiが自動生成した概要 **/
蛇紋岩土壌はニッケル過剰により植物の鉄欠乏を引き起こし生育を阻害する。しかし、一部の植物はニッケル耐性を持ち生育可能である。その耐性機構として、ニッケルと強く結合する金属キレート分子であるニコチアナミンが注目されている。ニコチアナミンはニッケルを隔離し、鉄の輸送を正常化することで鉄欠乏症状を回避すると考えられる。しかし、蛇紋岩土壌に適応した植物がニコチアナミン合成能力に優れているかは未解明である。ニコチアナミンはムギネ酸の中間体であることから、イネ科植物などムギネ酸を生成する作物の栽培が適している可能性が示唆される。

 

蛇紋岩土壌は植物にとって過酷な環境

/** Geminiが自動生成した概要 **/
蛇紋岩土壌は、貧栄養、高重金属、高pHといった特徴から植物にとって過酷な環境です。特にニッケル過剰が問題で、植物は鉄欠乏に似た症状を示します。ニッケルは鉄の吸収を阻害するのではなく、鉄と同時に吸収され、鉄の本来の場所にニッケルが入り込むことで、植物は鉄欠乏だと錯覚し、更なる鉄とニッケルの吸収を招き、悪循環に陥ります。しかし、蛇紋岩土壌にも適応した植物が存在し、その耐性メカニズムを理解することが、この土壌での栽培攻略につながります。

 

Google TV StreamerでSteam Linkを試してみた

/** Geminiが自動生成した概要 **/
Google TV StreamerでSteam Linkを試した結果、Chromecast with Google TVであったカクつきはメモリ増強により解消された。しかし、Raspberry Pi 4B 8Gと比較するとまだ動きが荒く、更なる設定調整が必要である。 動作改善にはメモリ増強が有効であることが示唆されたが、Raspberry Pi 4B 8Gとの性能差の原因はメモリ以外の部分にもある可能性がある。

 

カリ肥料の原料となる白榴石

/** Geminiが自動生成した概要 **/
白榴石はカリウムを多く含むため肥料として使われるケイ酸塩鉱物です。輝石と同じケイ酸の形なのに、アルミニウムが入る隙間があるのが化学的に不思議です。白榴石はカリウム豊富でシリカが少ない火成岩にできますが、日本の火成岩分類では該当するものがなく、海外では異なる可能性があります。このことから、土壌を理解するには火成岩の知識がまだまだ必要だと感じます。

 

ざくろ石帯とはどんな所?

/** Geminiが自動生成した概要 **/
山口県岩国市の「ざくろ石帯」は、石灰岩とマグマが反応して形成されたスカルン鉱床です。スカルン鉱床は、石灰岩中の柘榴石を多く含んでいます。柘榴石は、カルシウム、マグネシウム、鉄を含むネソケイ酸塩鉱物で、Yにアルミニウム、Zにケイ素が入っているのが一般的です。この地域では、柘榴石が土壌の母岩として風化するため、柘榴石に由来する土壌が形成されていると考えられます。

 

造岩鉱物の成れの果て

/** Geminiが自動生成した概要 **/
造岩鉱物から粘土鉱物への風化の後、カオリナイトはさらに水と反応してギブス石と二酸化ケイ素になる。ギブス石はCECがなく、二酸化ケイ素も栽培に不利なため、造岩鉱物の風化の行き着く先は栽培難易度の高い赤黄色土と呼ばれる土壌となる。 赤黄色土は日本土壌インベントリーで容易に確認できる。ギブス石はさらに風化してボーキサイトになる可能性があるが、ここでは触れない。

 

造岩鉱物の長石が風化するとどうなるか?

/** Geminiが自動生成した概要 **/
カリ長石(KAlSi3O8)は水と二酸化炭素と反応し、カオリナイト(Al2Si2O5(OH)4)、炭酸カリウム(K2CO3)、二酸化ケイ素(SiO2)を生成します。カオリナイトは1:1型粘土鉱物の一種です。二酸化ケイ素は石英などの鉱物になります。ただし、長石からカオリナイトへの風化は段階的に進行し、両者間には複数の粘土鉱物が存在します。造岩鉱物と土壌の関係を深く理解するには、これらの粘土鉱物についても学ぶ必要があります。

 

造岩鉱物の黒雲母を見る5

/** Geminiが自動生成した概要 **/
記事「く溶性苦土と緑泥石」は、土壌中のマグネシウム供給における緑泥石の役割について解説しています。 土壌中のマグネシウムは植物の生育に不可欠ですが、多くの場合、植物が直接吸収できる「く溶性」の状態にあるマグネシウムは限られています。そこで注目されるのが緑泥石です。 緑泥石は風化しにくいため土壌中に長期間存在し、ゆっくりとマグネシウムを供給します。つまり、緑泥石は土壌中のマグネシウムの貯蔵庫としての役割を担っています。 さらに、土壌中のpHや他の鉱物の影響を受けて緑泥石からマグネシウムが溶け出す速度が変化することも指摘されています。

 

造岩鉱物の黒雲母を見る4

/** Geminiが自動生成した概要 **/
ミカン栽培において「青い石が出る園地は良いミカンができる」という言い伝えがあります。この青い石は緑泥石を多く含む変成岩である「青石」のことです。緑泥石は保水性・排水性・通気性に優れており、ミカンの生育に必要なリン酸の供給源となるため、良質なミカン栽培に適した土壌となります。言い伝えは、経験的に緑泥石がもたらす土壌の利点を表しており、科学的根拠に基づいた先人の知恵と言えます。

 

造岩鉱物の黒雲母を見る3

/** Geminiが自動生成した概要 **/
かつて黒雲母は単一の鉱物と考えられていましたが、現在ではマグネシウムを多く含む金雲母と鉄を多く含む鉄雲母の固溶体であることが分かっています。金雲母の化学組成はKMg3AlSi3O10(OH)2、鉄雲母はKFe3^2+AlSi3O10(OH,F)2です。金雲母は風化すると、緑泥石やバーミキュライトといった粘土鉱物へと変化します。つまり、金雲母の風化を理解することは粘土鉱物の理解を深めることに繋がります。

 

造岩鉱物の角閃石を見る

/** Geminiが自動生成した概要 **/
鉱物の風化速度は結晶構造に影響されます。単鎖構造のケイ酸塩鉱物(例:輝石)は複鎖構造(例:角閃石)よりも風化に弱く、複鎖構造はさらに重合が進んだ環状構造(例:石英)よりも風化に耐性があります。これは、重合が進むほどケイ酸イオンが安定し、風化による分解に抵抗するためです。 そのため、角閃石は輝石やかんらん石よりも風化に強く、風化が進んでから比較的長い間、元の形態を保持できます。

 

造岩鉱物の輝石を見る

/** Geminiが自動生成した概要 **/
輝石はかんらん石よりもケイ酸の重合が進んだ構造を持っており、そのため風化しにくい。ケイ酸が一次元の直鎖状に並んでおり、その隙間に金属が配置されている。この構造では、金属が常に外側に露出しているように見えるが、ケイ酸塩鉱物では重合が進んだ構造ほど風化速度が遅くなることが知られている。つまり、輝石の金属溶脱はかんらん石よりも起こりにくい可能性がある。

 

造岩鉱物のかんらん石が風化するとどうなるか?

/** Geminiが自動生成した概要 **/
かんらん石は風化により、2価鉄が溶け出して水酸化鉄に変化する。また、ケイ酸も溶出し、重合して粘土鉱物に近づく。一次鉱物のかんらん石は二次鉱物として緑泥石を経てバーミキュライトになる。この反応では、かんらん石のアルミニウム以外の成分が溶脱し、ケイ酸は重合して粘土鉱物の形成に関与する。

 

造岩鉱物の理解を深めるためにケイ酸についてを学ぶ

/** Geminiが自動生成した概要 **/
ケイ酸は、ケイ素と酸素で構成され、自然界では主に二酸化ケイ素(SiO2)の形で存在する。水に極わずか溶け、モノケイ酸として植物の根から吸収される。 しかし、中性から弱酸性の溶液では、モノケイ酸同士が重合して大きな構造を形成する。この重合の仕方は、単鎖だけでなく複鎖など、多様な形をとる。 造岩鉱物は、岩石を構成する鉱物で、ケイ酸を含有するものが多い。熱水やアルカリ性の環境では、ケイ酸塩が溶けやすくなる。

 

土壌改良材としての珪藻土

/** Geminiが自動生成した概要 **/
珪藻土にはケイ酸が多く含まれ、多孔質構造で水分 retentionに優れています。このため、土壌改良材として使用することで、土壌水分保持力の向上と、ケイ酸の持続的溶出が期待されます。 ケイ酸は植物の細胞壁の強化や病害抵抗性の向上に役立ち、特にイネ作では、倒伏防止や品質向上効果が期待できます。しかし、過剰に添加すると、土壌のアルカリ化や土壌養分の吸収阻害につながる可能性があります。 珪藻土を土壌改良材として使用する場合は、土壌の性質や作物の種類に合わせて適切な量の添加が重要です。一般的には、土壌100kgあたり1~2kgの珪藻土を、耕起や移植時に混ぜ込む方法が推奨されています。

 

セラドン石と玉造

/** Geminiが自動生成した概要 **/
記事では、湘南の海岸で見つけた緑色の石が出発点となり、セラドン石について考察しています。セラドン石は凝灰岩に含まれる緑色の鉱物で、東丹沢に多く存在し、弥生時代には装飾品として加工されていました。記事では、セラドン石が白雲母系の粘土鉱物であることを紹介し、湘南の海岸で見つけた平らな鉱物と関連付けています。そして、弥生時代の人々が緑色の石に惹かれていたことを示唆し、和歌山市の地質調査への期待を述べています。

 

愚者の金

/** Geminiが自動生成した概要 **/
日本の土壌では、火山活動の影響で硫黄を含む黄鉄鉱が多く存在するため、硫黄欠乏は起こりにくいとされています。黄鉄鉱は金色の鉱物で、水田の秋落ち現象にも関わっています。土壌中に含まれる黄鉄鉱は、酸化により鉄と硫酸に分解され、植物に硫黄を供給します。そのため、頻繁な土壌交換を行わない限り、硫黄不足の心配はほとんどないと言えるでしょう。

 

SOY Shopでモジュール版ブログ記事表示プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop用のモジュール版ブログ記事表示プラグインがリリースされました。このプラグインを使用すると、SOY Shopサイト内の任意のページに、SOY CMSで運営するブログの記事一覧を表示できます。 従来のブログ記事表示プラグインは、表示設定をしていないページでも処理が実行され、サイト全体のパフォーマンスに影響を与える可能性がありました。今回のアップデートでは、ブロックタグが記述されたページのみプラグインの処理が実行されるようになり、表示速度の改善が期待できます。 プラグインは下記URLからダウンロード可能です。 https://saitodev.co/soycms/soyshop/

 

水田に集まるツバメは何を食べているのだろう?

/** Geminiが自動生成した概要 **/
ツバメは、水田に入水する際に土の中から出てくる虫を食べます。糞のDNA分析によると、カメムシ、ハエ、ガガンボなどを食べているようです。近年、カメムシが大量発生していますが、ツバメが増えれば、被害が軽減される可能性があります。しかし、ツバメの餌場である水田が減少し、陸稲が増加すると、カメムシの被害は増加するかもしれません。水田の減少は、ツバメの餌資源を減らし、カメムシの天敵を減らす可能性があるからです。

 

黒曜石とは何だろう?

/** Geminiが自動生成した概要 **/
黒曜石は、花崗岩質マグマが急冷してできたガラス質の岩石です。粘性が高く鉄が少ないため黒く見えます。鋭利に割れやすく、古代ではナイフ型石器の材料として重宝されました。 神津島産の黒曜石は、古代の人々にとって「海の彼方」と「先の尖ったもの」という二つの信仰対象を兼ね備えた特別な存在だったのかもしれません。

 

梓弓こそが真の弓

/** Geminiが自動生成した概要 **/
梓弓は、古事記などで「真の弓」とされ、神事に用いられる特別な弓です。材料となる「梓」は、諸説ありますが、現在はカバノキ科のミズメと考えられています。 ミズメは傷つけるとサリチル酸メチルという芳香を放ち、この香りは魔除けの効果があると信じられてきました。神事に用いる弓に魔除けの力を見出すのは自然な流れと言えるでしょう。 なぜ「梓」に木偏の漢字が当てられていないのか、興味深い点は尽きません。

 

マツの外生菌根菌と海水

/** Geminiが自動生成した概要 **/
海岸の砂浜で生育する松の栄養源に関する研究紹介記事です。 松と共生する外生菌根菌は、海水の主成分である塩化ナトリウムの影響で成長が促進される種類が存在します。 これは、海岸沿いの松の生育に外生菌根菌が大きく貢献している事を示唆しています。 また、松の落葉により土壌の塩分濃度が低下すると、他の植物が生育可能になり、松の生育域が狭まるという興味深い現象も解説されています。 さらに、記事後半では、防風林の松の定植において、外生菌根菌を考慮することの重要性についても触れています。

 

山形県の地形を俯瞰する為の整理

/** Geminiが自動生成した概要 **/
この記事は、山形県の地形が、かつては海だったことを示す地質学的証拠を基に解説しています。 現在、内陸県である山形県ですが、1600万年前にはほとんどが海に沈んでおり、後の奥羽山脈と出羽山脈の出現に伴い、土砂が堆積し盆地が形成されました。その証拠として、新庄などの内陸部から海洋生物の化石が発見されています。 この記事では、山形県の地質を知ることで、さくらんぼ栽培などの農業に重要な土壌の理解を深めることができると論じています。かつて海だったという歴史は、土壌の性質を理解する上で重要な手がかりとなるのです。

 

Selenium + php-webdriverでWebDriverCurlExceptionのエラーにハマった時の対処

/** Geminiが自動生成した概要 **/
Seleniumとphp-webdriverのバージョンアップ後にWebDriverCurlExceptionが発生した問題の解決策についての記事です。 ログイン・ログアウトを繰り返すテストコードで、三回目のログイン時にエラーが発生。調査の結果、セッションの破棄と再生成が必要であることが判明。php-webdriverのquitメソッドを用いてdriverを明示的にquitすることで解決しました。 記事では、エラー発生時の環境、テストコード、エラーメッセージ、解決策を詳細に記述しています。

 

タチバナの子孫のヒュウガナツ

/** Geminiが自動生成した概要 **/
日向夏は、宮崎県原産の柑橘で、1820年に偶発的に発見されました。ユズ由来と考えられていましたが、遺伝子解析の結果、タチバナが花粉親であることが判明しました。日向は神話に登場する地名であり、その地で神話に登場するタチバナの末裔ともいえる日向夏が誕生したのは興味深い偶然です。日向という地名は、天孫降臨や神武天皇にまつわる神話でも知られ、歴史と神話が織りなす魅力的な場所といえます。

 

NGINXでSOY CMSを動かす手順を作成しました

/** 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が自動生成した概要 **/
岡山駅が推す桃太郎伝説は、単なる童話以上の深い歴史的背景を持つ。NHKブラタモリでも紹介されたこの伝説は、天皇の子がモデルである可能性が指摘されている。 岡山周辺には、伝説を裏付ける要素が数多く存在。古代の港であり製鉄拠点でもあった吉備津神社、縄文時代から鬼神を祓う力を持つとされたモモの存在、そして古代山城・鬼ノ城などが挙げられる。これらが結びつき、モモの力で鬼神を祓う天皇の子である桃太郎という、岡山独自のリアリティ溢れる伝説が形成されていることを示唆している。

 

ヤブガラシとスズメバチ

/** Geminiが自動生成した概要 **/
公園でスズメバチが増えたのは、ガードレールに群生したヤブガラシが開花したため。ヤブガラシはスズメバチやアシナガバチを引き寄せる。ヤブガラシは土壌の悪い畑に多く、秀品率の高い畑では少ない。スズメバチを生活圏に近づけないためには、菜園の土壌改良などを行い、ヤブガラシの発生を抑えることが有効と考えられる。

 

葉は大きければ良いというわけではなさそうだ

/** Geminiが自動生成した概要 **/
葉の大きさは必ずしも優位性を保証しない。 ある例では、葉の小さなコメツブツメクサが、葉の大きなシロツメグサを覆い、その生育に不利を与えていた。 このことから、葉の大きさが必ずしも植物の競争力を決定する要因ではないことがわかる。 また、コメツブツメクサとウマゴヤシを区別するには、茎と複葉の付け根にトゲのような托葉があるかどうかを確認する。トゲがあればウマゴヤシ、なければコメツブツメクサである。

 

廃菌床とカブトムシと魚の養殖

/** Geminiが自動生成した概要 **/
魚の養殖において、餌として魚粉の代わりに家畜の糞が検討されています。特に鶏糞は栄養価が高く、魚粉の代替として有望視されています。 鶏糞を利用した魚の養殖には、いくつかのメリットがあります。まず、コスト削減が可能です。次に、廃棄物である鶏糞を有効活用できます。 一方で、鶏糞の利用には課題も存在します。魚の嗜好性や成長への影響、安全性確保などが挙げられます。 これらの課題を解決することで、鶏糞は魚の養殖における持続可能な餌資源となる可能性を秘めています。

 

ChromecastでSteam Linkを試してみた

/** Geminiが自動生成した概要 **/
著者は、Chromecast with Google TVでSteam Linkを使ってゲームができるか検証しました。しかし、ゲーム動作がカクカクしてしまい、原因を調査。ネットワーク速度を向上させるためにイーサネットアダプターを導入しましたが改善されず、Chromecastのスペック不足が原因と推測しました。そこでRaspberry Pi 4Bで試したところ、スムーズに動作。Chromecastのメモリ容量が影響している可能性を指摘し、他のスペックのマシンでの検証を希望しています。 追記として、Chromecastの後継機であるGoogle TV Streamerでも同様の検証を行った記事へのリンクが掲載されています。

 

中性脂肪を構成するグリセロールはどのように合成されるか?

/** Geminiが自動生成した概要 **/
本ブログ記事は、中性脂肪を構成するグリセロールの生合成経路を解説しています。中性脂肪はグリセリン(グリセロール)と脂肪酸から成り、脂肪酸は糖質の余剰分から生合成されることが前提として述べられています。グリセロールも同様に、摂取したグルコース(ブドウ糖)が解糖系の中間生成物である「ジヒドロキシアセトンリン酸」を経て「グリセロール3-リン酸」となり、中性脂肪が合成される仕組みが説明されています。これにより、グリセロールも糖質の余剰分から作られることが示され、エネルギー貯蔵の役割を担う中性脂肪の全体像がより深く理解できる内容となっています。

 

Ubuntu22.10でWiFiの接続に失敗する時の対処

/** Geminiが自動生成した概要 **/
Ubuntu 22.10 で WiFi 接続エラーが発生し、NetworkManager の再起動で解決する場合がある現象について記述されています。 エラー発生時には NetworkManager のログに "ip-config-unavailable" が記録され、IP アドレス取得のタイムアウトが原因と推測されます。 記事では、WiFi 接続時の IP アドレス取得が他のサービスの起動よりも早く行われることが原因の可能性を示唆しています。解決策として IP アドレス取得の時間を延長する方法があるようですが、記事では検証されていません。

 

シュウ酸から続く無農薬栽培への道

/** Geminiが自動生成した概要 **/
この記事は、無農薬栽培の可能性を探るため、シュウ酸アルミニウムの抗菌作用に着目しています。アカマツの菌根菌が生成するシュウ酸アルミニウムが抗菌作用を示すという報告から、植物の根からも分泌されるシュウ酸に着目し、そのメカニズムを探っています。シュウ酸アルミニウムは、土壌中でアルミニウムとキレート化合物を形成し、これが菌のコロニー先端部でグラム陰性細菌や枯草菌への抗菌作用を示すと考えられています。具体的な抗菌メカニズムは不明ですが、銅イオンと同様の作用の可能性が示唆されています。

 

フェニックスのタネの大きさはどれくらい?

/** Geminiが自動生成した概要 **/
記事は、道路の隙間に生えたヤシのような植物を見て、単子葉木本の種はどれくらい小さいのか?という疑問から、単子葉木本の代表であるフェニックス(カナリーヤシ)の種の大きさを調べたものです。 調査の結果、フェニックスの種はペットボトルキャップより少し小さい2cm程度であることがわかりました。道路の隙間から生えるには少し大きいものの、不可能ではない大きさです。 ただし、最初の植物が本当に単子葉木本であるかは不明であり、今後の課題として残されています。

 

SOY CMSでプラグインの状態チェックを最適化して表示速度を改善

/** Geminiが自動生成した概要 **/
SOY CMSの表示速度改善についての記事です。 今回はプラグインの有効・無効の判定処理を最適化しました。従来は全プラグインの状態を都度ファイルシステムから読み込んでいましたが、キャッシュ化して参照するように変更。これにより、ファイルシステムへのアクセス回数を減らし、不要なプラグインのクラスファイル読み込みを削減することで表示速度を向上させています。 同様の速度改善は、設定情報のデータベース参照回数を減らしたSOY Shopでも行われています。

 

水位センサーの液面計とは?

/** Geminiが自動生成した概要 **/
水位センサーの一種である液面計の一種、静電容量式について解説されています。静電容量式は、物質の誘電率の違いを利用して水位を測定します。水は不純物を含むと誘電率が変化するため、測定値に影響が出ます。記事では、実際に使用しているセンサーが静電容量式かどうかを確かめるために、測定中に塩を溶かして値の変化を見る実験を提案しています。しかし、センサーの構造上、水と空気の測定を区別しているようには見えないため、他の測定方法の可能性も示唆しています。

 

水位センサーからどのようなデータが得られるか?

/** Geminiが自動生成した概要 **/
記事では、水位センサーの仕組みを理解するために、簡易的な水位センサーとMicro:bitを使った実験と、レベルスイッチと液面計の説明を参考にしています。 実験の結果、水位センサーの出力値は、センサーが水に接する面積が広いほど大きくなることがわかりました。これは、液面計の仕組みと一致するため、記事では液面計に焦点を当てて解説を進めるとしています。 そして、次回は、センサーが水に接する面積と出力値の関係について詳しく解説する予定となっています。

 

制御用水位センサーを使ってみる

/** Geminiが自動生成した概要 **/
記事は、稲作の自動化技術の進展について述べています。特に、水位管理の自動化に焦点を当て、水位センサーを用いた実験を紹介しています。 著者は、水位センサーモジュールを購入し、Micro:bitに接続して水位の変化を数値化できることを確認しました。水位の変化に応じて、Micro:bitに表示される数値が変化することを実験を通して明らかにしています。 記事は、水位センサーの仕組みの詳細には触れていませんが、今後の調査課題としています。稲作における自動化技術の可能性を探る内容となっています。

 

SOY CMSで分類分けしたカテゴリ一覧を出力する

/** Geminiが自動生成した概要 **/
SOY CMSでカテゴリを分類分けして出力したい場合に便利なモジュールが新たに開発されました。 このモジュールを使用すると、サイトの設定で「ラベルのカテゴリ分け」を有効化し、カテゴリを分類分けして作成することで、テンプレート上で分類名ごとにカテゴリ一覧を出力できます。 モジュールの設置は、テンプレート編集画面で所定のコードを記述するだけで完了します。標準ページに設置する場合はブログページIDの指定が必要です。 詳細な使用方法やダウンロードは、以下のサイトをご確認ください。 - SOY CMS公式サイト: https://saitodev.co/soycms/

 

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

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

 

PokitMeterを購入したので、Micro:bitのPWMを測定してみた

/** Geminiが自動生成した概要 **/
記事では、PokitMeterという小型測定器を用いて、Micro:bit(マイクロビット)が出力するPWM信号の周波数を測定しています。 PokitMeterは測定結果をスマホで確認できるため非常にコンパクトで、Chromebookでも使用可能です。 マイクロビットのP0ピンから出力されるPWM信号をPokitMeterのオシロスコープモードで測定した結果、デューティ比50%で、周期20msの矩形波が観測されました。 このことから、マイクロビットのPWM周波数は標準で50Hzであることが分かります。 今後はPokitMeterを活用して、より深くマイクロビットの機能を探求していく予定です。

 

ChromebookでOpenVPN Connect経由でVPNに接続

/** Geminiが自動生成した概要 **/
ChromebookでOpenVPN Connectを使ってVPN接続する手順のメモ。必要な証明書ファイル等をPlayファイル内のAndroidディレクトリに作成したフォルダに配置し、OpenVPN ConnectアプリでOVPNファイルを読み込むことで接続できた。Playファイルはアプリから参照できるディレクトリがダウンロードのみのため、誤操作防止のためAndroidディレクトリ内にフォルダを作成して証明書を配置した。

 

OpenStreetMap API版Soil & Geoロガー

/** Geminiが自動生成した概要 **/
「Soil & Geoロガー」がOpenStreetMap APIを使って改良されました。以前はGoogle Maps APIを使用していましたが、OpenStreetMap APIに切り替え、地図表示と位置情報の取得を簡素化しました。これにより、地図上の任意の場所をクリックするだけで、その地点の緯度経度を取得し、土壌情報と地質情報へのリンクを生成します。さらに、オフライン機能を提供していたIndexedDBとサービスワーカーAPIは、インターネット接続環境の向上により廃止されました。この改良により、土壌情報と地質情報へのアクセスが容易になり、施肥設計や地域資源の活用に役立ちます。

 

ChromebookでMinecraft: Pi Edition: Rebornを動かしてみた

/** Geminiが自動生成した概要 **/
LXC (Linux Containers) は、単一のLinuxカーネル上で複数の分離されたLinuxシステム (コンテナ) を実行するためのOSレベルの仮想化手法です。各コンテナは独立したシステムリソース (CPU、メモリ、ネットワークなど) を持ち、ホストOSや他のコンテナから隔離されます。 LXCは、chrootのような従来の分離機構よりも軽量で効率的でありながら、仮想マシンよりもオーバーヘッドが少なくなっています。これにより、開発、テスト、運用環境において、アプリケーションの移植性、セキュリティ、リソース効率を向上させることができます。LXCは、DockerやLXDなどのコンテナ技術の基礎となっています。

 

Rasbperry Piにゲームパッドを繋ぎ、マインクラフトを操作する

/** Geminiが自動生成した概要 **/
この記事は、Raspberry PiまたはUbuntuに接続したLogicool F310ゲームパッドを使用してMinecraft: Pi Edition: Rebornを操作する方法を解説しています。 Windows PC用のゲームパッドをLinux環境で動作させるため、joystickとjstest-gtkドライバをインストールします。jstestコマンドでゲームパッドが認識されていることを確認後、qjoypadをインストールし、GUIで各ボタンにキーボードやマウスの操作を割り当てます。 記事では、マイクラリボーン用に設定したボタン割り当てを紹介し、動作確認を行うよう促しています。

 

4-20mA電流信号

/** Geminiが自動生成した概要 **/
この記事は、制御信号に使われる電流信号、特に4-20mAについて解説しています。Raspberry PiのGPIO出力は3.3V・16mAであり、4-20mAの範囲でモジュールを制御しています。筆者は、GeekServo 9gモーターを電流信号で動かす方法を探求中です。モーターの仕様から、100~500mAの電流が必要と推測していますが、そのためにはトランジスタによる増幅が必要と考え、その方法を模索しています。

 

BBC Micro:bitでDCモータを動かしたい

/** Geminiが自動生成した概要 **/
BBC Micro:bitのGPIOピンを使ってDCモータを動かそうとしたが、3Vピンでは動作するのに、GPIOピンでは動作しないという問題が発生しています。 原因を探るため、GPIOピンの仕様を調べてみたところ、「タッチセンス機能のため、端子0, 1, 2には弱いプルアップ抵抗(10MΩ)が接続されている」という記述を見つけました。 このプルアップ抵抗がDCモータの動作に影響を与えている可能性があり、今後の検証が必要です。

 

トランジスタ4増幅率

/** Geminiが自動生成した概要 **/
この記事では、トランジスタ、特にNPN型トランジスタの増幅率について解説しています。トランジスタの性能指標として、絶対最大定格、コレクター電流、ベース電流、増幅率(hFE)の4つが挙げられています。 増幅率はトランジスタによって異なり、ランク分けされています。記事で例に挙げられている2SC1815-GRはGRランクで、増幅率は200~400倍です。つまりベース電流が5mAなら、コレクター電流は1Aになる計算となります。 ただし、ベース電流の最大値はデータシートに記載がないため、コレクター損失(400mW)を考慮して、安全な電流値を見積る必要があると指摘しています。

 

BBC Micro:bitとトランジスタ

/** Geminiが自動生成した概要 **/
BBC Micro:bitのGPIOピンを使ってDCモーターを動かそうとしたが、電圧不足のため動かなかった。そこでトランジスタを使って電圧を上げることを試みた。書籍を参考に青色LEDをトランジスタで点灯させる回路を組んだところ、LEDは点灯したものの、DCモーターは動作しなかった。トランジスタについて更に学習する必要があると考えられる。

 

SOY CMSでWebP形式の画像ファイルのアップロードに対応しました

/** Geminiが自動生成した概要 **/
SOY CMSがWebP画像形式のアップロードに対応しました。WebPはGoogleが開発した次世代画像フォーマットで、JPEGやPNGと比べてファイルサイズが小さく、画質を落とさずにWebサイトの表示速度を向上できます。現在では世界中の95%のブラウザでサポートされており、SOY CMSでもこのフォーマットに対応することで、より高速なWebサイト構築が可能になりました。最新版は公式サイトからダウンロードできます。

 

AD変換器から出力されたデジタル値を読み込む

/** Geminiが自動生成した概要 **/
この記事では、AD変換器を使ってアナログ値をデジタル値として読み取る方法を解説しています。AD変換器からのデータ送信には、複数のピンを使ったSPI通信という方式が使われています。SPI通信では、マスター(Raspberry Pi)とスレーブ(AD変換器)間でデータのやり取りが行われます。重要な点は、AD変換器からのデジタルデータは1本のピンではなく、SCLK、MISO、MOSI、SSの4本のピンを使ってやり取りされることです。

 

AD変換器の概要に触れる

/** Geminiが自動生成した概要 **/
diymoreのLiquid PH Value Detection Detect Sensor Moduleは、Arduinoやマイクロコントローラと連携して水溶液のpH値を測定するセンサーモジュールです。pH測定範囲は0~14で、精度は±0.1pHです。動作電圧は3.3~5Vで、出力はアナログ信号とTTLレベルのデジタル信号の両方を選択できます。校正は付属の校正液を用いて簡単に行えます。このモジュールは、水耕栽培、水質監視、化学実験など、pH値の測定が必要な幅広い用途に最適です。

 

プログラミング教育で注目すべきはARM + Debian + Pythonであるはずだ

/** Geminiが自動生成した概要 **/
プログラミング教育の格差解消には、安価で高性能なARMアーキテクチャ搭載PCが有効である。Raspberry PiはDebian系OSとPythonを標準サポートし、電子工作から本格的な開発まで対応可能なため、ChromebookやMicro:bitよりも優れている。ARM対応ソフトの充実が課題だが、低価格でDebianやPythonに触れられる環境は、OSSやサーバー学習へのハードルを下げ、将来的なIT人材育成に貢献する。

 

Raspberry Piと赤色LEDでホタルのような点滅を試す

/** Geminiが自動生成した概要 **/
記事では、Raspberry PiとLEDを用いて、PWM(パルス幅変調)による疑似アナログ信号の生成と、その効果について解説しています。PWMは、デジタル信号のパルス幅を調整することで、見かけ上アナログ信号のような出力を行う技術です。記事では、パルス幅を徐々に変化させることで、LEDの明るさが滑らかに変化する様子を「ホタルの光」に例えています。 具体的には、Pythonコードを用いてPWMのデューティ比を周期的に変化させることで、LEDの明るさを制御し、ホタルの点滅のような効果を実現しています。

 

Fritzingを使って、Raspberry Piの回路図を作成する

/** Geminiが自動生成した概要 **/
Fritzingというアプリを使えば、電子回路の回路図が簡単に作成できます。Raspberry Piなど、様々な電子部品がパーツとして用意されており、ドラッグ&ドロップで配置できます。標準パーツにない場合は、ネットから追加することも可能です。例えば、Raspberry Pi 4 Model Bのパーツは、フォーラムで共有されているfzpzファイルをダウンロードしてインポートすることで使用できます。

 

大豆肉に注目している

/** Geminiが自動生成した概要 **/
著者は、環境負荷の高い畜産肉に代わる大豆ミートに注目しています。牛肉生産は、飼料穀物や森林伐採、温室効果ガス排出など環境問題を引き起こします。そこで、大豆を原料とする大豆ミートは、二酸化炭素排出量削減に貢献できる代替肉として期待されています。著者は、水田転作で大豆栽培が進む中、中干し不要農法が大豆生産の効率化に役立つと考え、今後の記事で詳しく解説していく予定です。

 

NmapでLAN内のRaspberry Piを探してみる

/** Geminiが自動生成した概要 **/
本記事では、Nmapを活用してLAN内のRaspberry PiのIPアドレスを特定する方法を解説します。 Ubuntu環境ではNmapのインストールからIPアドレス発見までスムーズに進んだ成功事例を紹介。一方、ChromebookのLinux環境ではNmapでのスキャンが上手くいかない問題に直面。その原因が、ChromebookのLinuxがLXCコンテナ上で動作しており、ネットワーク環境がホストと異なるためと判明しました。 コンテナ環境からのLAN内探索の難しさを示し、コンテナ技術への深い理解が不可欠であることを提示します。

 

SOY ShopのSign In With Googleプラグインでボタンをカスタマイズする

/** Geminiが自動生成した概要 **/
SOY ShopのSign In With Googleプラグインのボタンカスタマイズ方法について解説。Googleが提供するジェネレータを使用し、クライアントID、Data Context、ID token nonce、Callback functionを設定。Nextボタンをクリック後、Enable Sign in with Google buttonをチェックし、ボタンデザインを設定後、Get codeボタンを押下。生成されたHTMLをプラグイン詳細画面に貼り付けて更新することでカスタマイズ完了。

 

トウモロコシの根から強力な温室効果ガスの発生を抑える物質が発見された

/** Geminiが自動生成した概要 **/
東京新聞の記事は、食肉生産に伴う温室効果ガス排出問題を取り上げている。牛肉1kgの生産には二酸化炭素換算で約27kgの温室効果ガスが排出され、これは鶏肉の約7倍、野菜の約270倍に相当する。家畜のげっぷや糞尿からのメタン、飼料生産・輸送、森林伐採などが主な排出源だ。食生活の変化、特に牛肉消費の削減は、地球温暖化対策に大きく貢献する。国連は肉の消費量を週2回に抑えるよう勧告しており、代替タンパク質の開発も進んでいるが、消費者の意識改革と技術革新の両輪が必要とされている。

 

環境制御を学ぶ為にMicro:bitでサーボモータを学ぶ

/** Geminiが自動生成した概要 **/
Micro:bitとサーボモーターを用いて環境制御学習の第一歩を踏み出した著者は、サーボモーターの動作原理を学ぶため、LEGOブロックとミニフィグを使った回転実験を行った。MakeCodeで作成したコードでMicro:bitからサーボモーターに角度指令を送ると、90度を基準に、大きい値では反時計回り、小さい値では時計回りに回転する。しかし、指定角度で停止せず、一回転し続けるという問題に直面。これは、指令値が目標角度ではなく、一定時間内の回転角度を表すためであった。 著者は、サーボモーターの停止方法について疑問を抱いている。

 

ChromebookでPythonのmatplotlibを試してみた

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

 

ARM版ChromebookにDropboxをインストールする

/** Geminiが自動生成した概要 **/
ARM版ChromebookでLinuxアプリのDropboxを使うには、.debパッケージが使えないためDbxfsを利用する。pip3でDbxfsをインストール後、Dropboxフォルダを作成し、dbxfsコマンドを実行。表示されるURLにアクセスし、Dropboxにログインして認証コードを取得、端末に入力する。パスフレーズを設定すれば、Linuxファイル配下でDropboxのファイルが操作可能になる。Android版DropboxはChromebookのFilesのLinux共有に対応していないため、この方法が必要。

 

SOY Shopの管理画面からの注文の商品検索の高速化に挑戦

/** Geminiが自動生成した概要 **/
SOY Shop管理画面の注文機能で、商品点数増加に伴う検索速度低下を改善するプラグインが開発された。商品名・コードのAND/OR検索切り替えに加え、検索対象から子商品を除外する設定を追加。特に子商品除外は、複雑なSQLクエリを簡略化することで劇的な効果を発揮し、10秒かかっていた検索が1秒以内に完了するようになった。商品グループ機能を活用し、商品数が1000件を超える店舗で効果を発揮。電話注文時の業務効率化に貢献する。ダウンロードはsaitodev.co/soycms/soyshop/から。

 

ChromebookのLinuxアプリで日本語入力をできるようにする

/** Geminiが自動生成した概要 **/
ChromebookのLinuxアプリで日本語入力をするために、MozcとFcitxをインストール・設定する方法を解説。locale設定後、MozcとFcitxをインストールし、設定ファイルを編集してFcitxを自動起動するように設定。fcitx-configtoolでMozcを追加し、geditで日本語入力を確認。geditでは挙動が怪しかったが、他のアプリでは正常に動作。Javaアプリでも日本語入力可能になった。cros-imを使う方法もあるが、geditでは漢字変換できない問題がある。

 

土作りのステップアップとしてのエッセンシャル土壌微生物学を薦める

/** Geminiが自動生成した概要 **/
「エッセンシャル土壌微生物学 作物生産のための基礎」は土作りに興味のある人にオススメ。土壌微生物の働きだけでなく、団粒構造における粘土鉱物の役割、酸化還元電位による肥料効果や水田老朽化への影響まで丁寧に解説。土壌中の電子の挙動(酸化還元)を理解することで、土壌消毒や稲作の中干しといった実践的な課題についても深く考察できる。関連する記事では、緑泥石、メタン発生、ポリフェノール鉄錯体、コウジカビ、ベントナイト、土壌消毒など多様な視点から土壌への理解を深めることができる。

 

センセイトークのオンライン版を開発しました

/** Geminiが自動生成した概要 **/
センセイトークは、学校関係者の協働促進を目的とした対話型カードゲームをオンライン化したものです。Zoom等の画面共有機能を活用し、参加者はスマホ等でアバターを操作しながら、共有デッキ上のトークテーマに基づき会話を行います。テストプレイでは、デッキ上の文章が話の整理に役立ち、画面共有に視線が集中することで、ストレスなく話せるという意見がありました。これは、スタンフォード大が指摘する「Zoom疲れ」の原因、「視線の多さと顔サイズの大きさ」「自分自身を見続けること」「大げさなジェスチャーの必要性」を同時に解決する可能性を示唆しています。センセイトークは、Web会議を円滑にするアイデアを秘めているかもしれません。

 

アルカリ性不良土壌向けの肥料について調べてみた

/** Geminiが自動生成した概要 **/
アルカリ性土壌では鉄欠乏が起こりやすいが、今回ムギネ酸類似体の安価な合成法が開発された。ムギネ酸はオオムギが鉄を吸収するために分泌するキレート物質だが、高価だった。この研究では、ムギネ酸の一部をプロリンに置換することで、安価で同等の機能を持つプロリンデオキシムギネ酸(PDMA)を開発した。この成果は、アルカリ性土壌での鉄欠乏対策に大きく貢献する。特に、イネ科植物はムギネ酸を分泌するため、緑肥として活用すれば土壌改良に繋がる。ライ麦やエンバクなどの緑肥も鉄吸収を促進する効果が期待される。

 

グロムス門の菌根菌とは何か?

/** Geminiが自動生成した概要 **/
野菜の美味しさは、品種、栽培方法、鮮度、調理法など様々な要因が複雑に絡み合って決まる。土壌の微生物やミネラルバランスが野菜の風味に影響を与えるように、環境全体が重要である。師匠の畑で育った野菜は、土壌の豊かさや適切な水やり、雑草との共存など、自然の力を最大限に活かした栽培方法によって、独特の風味と生命力に満ちている。美味しさを追求するには、野菜を取り巻く環境全体への理解と、栽培から調理までの各段階における丁寧な作業が必要となる。

 

グロムス門の菌根菌を理解する為に古い分類法についてを学ぶ

/** Geminiが自動生成した概要 **/
この記事は、植物の根と共生する菌根菌、特にグロムス門の菌について解説しています。菌根菌は細い菌糸で養分を吸収し宿主に供給する代わりに、炭素化合物を得ています。また、宿主の食害耐性を高める効果も指摘されています。 記事では、グロムス門を理解するために、古い分類法である接合菌についても触れています。接合菌はカビなども含み、子嚢菌や担子菌のような大きな子実体を形成せず有性生殖を行います。胞子の散布範囲は比較的狭いと考えられています。

 

SOY CMSとSOY ShopにAceコードエディタを設置しました

/** Geminiが自動生成した概要 **/
SOY CMSとSOY ShopにJavaScript製のコードエディタ「Ace」が導入されました。導入箇所は両CMSのテンプレート、HTMLモジュール、PHPモジュールの編集画面です。以前の色付きエディタはブラウザの進化への対応と動作の不安定さを理由に廃止されましたが、block:idタグの視認性向上のため、Aceが採用されました。現在はHTML/PHPモードのみですが、今後便利な機能の有効化を検討中です。最新版はsaitodev.co/soycms/からダウンロード可能です。

 

php-webdriverでAceのコードエディタに文字を入力する

/** Geminiが自動生成した概要 **/
`executeScript`は、ChromeDriverでJavaScriptを実行するメソッドです。第一引数に実行するスクリプト、第二引数にオプションの引数配列を取ります。このメソッドは、ブラウザコンテキストでJavaScriptを実行し、その結果を返します。Aceエディタへの入力は、エディタオブジェクトの`setValue`メソッドをJavaScript経由で呼び出すことで実現できます。上記例では、`$script`に`setValue`呼び出しを定義し、`$html`をエディタに設定しています。`executeScript`の第二引数配列は、`$script`内の`arguments`オブジェクトにマッピングされます。これにより、PHPからJavaScript関数をパラメータ付きで実行できます。

 

菌の生活環と不完全菌

/** Geminiが自動生成した概要 **/
このブログ記事では、菌(カビ)の生活環に有性生殖の「テレオモルフ」と無性生殖の「アナモルフ」という2つのステージがあることを解説しています。DNA解析がなかった時代、これらは別種とされ、異なる名前が付けられました。特に無性生殖のみを行うアナモルフは「不完全菌」と呼ばれていました。現在では同種と判明していますが、産業上の重要性などから呼び名が混在する現状です。この知識は、例えばトリコデルマの子実体から土壌微生物叢の現状を把握するなど、菌の理解を深める上で有用だと締めくくっています。

 

トリコデルマを理解する為に古い分類法についてを学ぶ

/** Geminiが自動生成した概要 **/
トリコデルマ理解のためには菌類の分類の歴史的変遷を学ぶ必要がある。トリコデルマ属など一部の菌類は、無性生殖段階で見つかった「不完全菌」として分類され、後に有性生殖段階が確認されたことで完全世代(子のう菌類のツノタケ属など)に分類し直された。しかし、歴史的に「不完全菌」として認識されていた名前も残っているため、トリコデルマのような菌は複数の学名を持つ。古い分類法と新しい分類法の両方を理解することで、トリコデルマのような菌の複雑な命名の理由が理解できる。例えば、アカボタンダケは不完全世代では*Trichoderma viride*、完全世代では*Hypocrea rufa*と呼ばれ、名前からは同一種と分かりづらい。国立科学博物館の『菌類のふしぎ 第2版』は、新旧の分類法を解説し、このような命名の経緯を理解するのに役立つ。

 

トリコデルマと聞いて思い出す師の言葉

/** Geminiが自動生成した概要 **/
トリコデルマ・ビレンス(T.virens)が植物成長促進や病害抑制効果を持つことから、畑での活用に興味を持った筆者は、木材腐朽菌に対するトリコデルマの拮抗作用や、堆肥でのキノコ発生後の散布時期との関連性について考察している。キノコ発生後にトリコデルマが堆肥に定着する可能性を推測しつつも、広大な畑への散布ではトリコデルマが優勢になるには量が必要だと考え、トリコデルマ含有堆肥の効果的な使用方法に疑問を呈している。

 

OpenStreetMap + Leafletを試してみた

/** Geminiが自動生成した概要 **/
この記事では、Google Maps JavaScript APIの代わりにOpenStreetMapとLeafletを使って地図を表示する方法を紹介しています。OpenStreetMapは無料で利用でき、Leafletは簡単に地図を表示できるJavaScriptライブラリです。 記事では、大阪府高槻市の摂津峡を例に、緯度経度を指定して地図を表示し、マーカーを設置する手順をコード付きで解説しています。結果として、少ないコードで簡単に地図上にマーカーを表示することができました。

 

葉緑素の分解産物が根の抵抗性を高めるらしい

/** Geminiが自動生成した概要 **/
農研機構の研究で、葉緑体分解産物であるフィトールがトマトの根のセンチュウ抵抗性を高めることが判明した。フィトールはクロロフィルの分解過程で生成されるアルコールで、土壌中のフィトールが根にエチレンを蓄積させ、抵抗性を向上させる。このメカニズムは、緑肥を刈り倒し土壌に成分を染み込ませる方法と類似しており、土壌消毒にも応用できる可能性がある。緑肥カラシナによるイソチオシアネート土壌消毒と組み合わせれば、相乗効果でセンチュウ被害や青枯病などの細菌性疾患を抑制し、根の養分吸収を維持、ひいては地上部の抵抗性向上にも繋がる可能性がある。

 

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

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

 

ウィルス発がん

/** Geminiが自動生成した概要 **/
この記事ではウイルス発がんのメカニズムの一端を解説しています。一部のDNAウイルスは自身の増殖に宿主細胞のDNA複製期(S期)に必要な酵素を利用します。そこで、ウイルスは宿主細胞をS期にとどまらせ続けることで、必要な酵素を継続的に得ようとします。しかし、これは宿主細胞にとって細胞分裂が完了せず、意図しない物質が合成され続ける異常事態を引き起こします。結果として、細胞の無秩序な増殖、つまりがん化につながると考えられています。これは、BT毒素のように特定の細胞を選択的に破壊するメカニズムとは異なるアプローチです。

 

内在性レトロウィルスについてを知る

/** Geminiが自動生成した概要 **/
この記事では、植物の生理現象を理解する上でアサガオが優れたモデル生物であることを解説しています。アサガオは、成長が早く、様々な変異体があり、遺伝子情報も豊富であるため、遺伝学、発生学、生理学などの研究に適しています。具体的には、短日植物であるアサガオを使って、花成ホルモン「フロリゲン」の研究が行われ、フロリゲンの存在が証明されました。また、アサガオの様々な色の花は、色素の生合成経路の研究に役立ち、遺伝子の変異による表現型の変化を学ぶことができます。さらに、アサガオはつる植物であり、植物の成長や運動のメカニズムを研究するのにも適しています。このように、アサガオは、植物科学の様々な分野の研究に貢献している重要な植物です。

 

コロナウィルスについてを知る

/** Geminiが自動生成した概要 **/
コロナウイルスはコロナウイルス科に属する一本鎖プラス鎖RNAウイルス(ssRNA(+))です。RNAウイルスはDNAウイルスに比べ変異しやすく、さらに一本鎖であるため複製ミスが修復されず、変異が助長されます。コロナウイルスは既知のRNAウイルスの中で最大級のため、変異しやすい性質を持ちます。ssRNA(+)は、RNAを直接mRNAとして利用できるため、宿主細胞内で速やかにタンパク質合成を開始できます。コロナという名前の由来は、ウイルスの表面にある突起が王冠(コロナ)のように見えることにちなんでいます。

 

陰樹の耐陰性とは何か?

/** Geminiが自動生成した概要 **/
陰樹の耐陰性は、暗い林床でも生存できる能力を指す。陰樹の葉は陽樹に比べ薄く、構成する層も少ないため、維持コストが低い。これは光合成量が限られる環境では有利となる。また、呼吸量が少ないことも、ネズミによる食害リスクを減らす点で生存に寄与する。陰樹の中でも、ツブラジイはスダジイより耐陰性が高い。葉の厚さや呼吸量の差に加え、クチクラ層による遮光なども耐陰性に関係する。これらの要素が、成長は遅いが長期間生存できる陰樹の特性を支えている。

 

WordPressのデータベースのスキーマを調べる

/** Geminiが自動生成した概要 **/
WordPressからのデータ抽出のため、データベーススキーマのバージョン調査を行った。テーブル名は`wp-includes/wp-db.php`に定義されており、バージョン2.5.0から変更がない。テーブルスキーマは`wp-admin/includes/schema.php`にSQLで定義され、バージョン3.3.0から変更がないことがわかった。よって、データ抽出ツールはWordPress 3.3.0以降に対応させ、それ以前のバージョンはアップグレードしてから利用するよう条件付けすれば良い。

 

UbuntuでMySQLのアップグレードが停止する原因を探る

/** Geminiが自動生成した概要 **/
Ubuntu 20.04の開発環境で、MySQL 8系のapt upgradeが停止する問題が発生。原因はMySQLの設定ファイル`mysqld`セクションに`skip-grant-tables`が設定されていたため。この設定はパスワード認証を無効化するためのもので、アップグレード処理と競合した模様。`skip-grant-tables`をコメントアウトすることで問題は解決した。開発環境ではパスワード入力を省略するために設定していたが、セキュリティリスクの高い設定のため、本来の使い方ではない。

 

SOY CMSの管理画面のHTMLファイルの探し方

/** Geminiが自動生成した概要 **/
SOY CMSの管理画面UIをカスタマイズするには、該当HTMLファイルを見つける必要があります。例としてページテンプレート編集画面(URL例: `http://example.com/cms/soycms/index.php/Page/Detail/3`)を挙げます。 HTMLファイルは`cms/soycms/webapp/pages`ディレクトリ以下に配置されています。URLの`Page/Detail`部分がディレクトリとファイル名に対応します。まず`pages`ディレクトリ内の`Page`ディレクトリを探します。次に`Detail`ディレクトリを探しますが、存在しない場合は`DetailPage.html`が目的のファイルです。通常、`DetailPage.class.php`というPHPファイルも対で存在します。これらはSOY2HTMLの仕組みを利用しており、より深く理解するには関連の記事を参照ください。

 

ジャンボタニシの対策の前に生態を知ろう

/** Geminiが自動生成した概要 **/
ジャンボタニシ対策には生態の理解が重要。徳島市は椿油かすの使用を控えるよう注意喚起している。ジャンボタニシは乾燥に強く、秋にはグリセロールを蓄積して耐寒性を上げるが、-3℃でほぼ死滅する。ただし、レンゲ栽培による地温上昇で越冬する可能性も懸念される。レンゲの根の作用で地温が上がり、ジャンボタニシの越冬場所を提供してしまうかもしれない。理想は、緑肥によってジャンボタニシの越冬場所をなくすことだが、乾燥状態のジャンボタニシに椿油かすのサポニンを摂取させるタイミングが課題となる。

 

SOY CMSでスマホでブログ投稿プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMS向けに、スマホからのブログ投稿プラグインが開発されました。SOY CMS 3系で既に可能だったスマホからの投稿機能に加え、本プラグインはスマホでアップロードする画像を自動でリサイズ・最適化し、サーバーへの負荷を軽減します。 特に、Guetzliが導入されていれば、最適化により画像データの転送量が削減され、Core Web VitalsなどSEO対策にも貢献します。UIはまだ改善の余地があるものの、日常使いしながらブラッシュアップしていく方針で、UI変更への協力も呼びかけています。このプラグインは指定URLから利用可能です。

 

データ構造のキューとリングバッファを見る

/** Geminiが自動生成した概要 **/
Go言語のテスト方法に関する記事の要約です。Goでは`*_test.go`ファイルにテスト関数を記述します。テスト関数は`TestXxx`という命名規則に従い、`*testing.T`を引数に取ります。`t.Error`や`t.Errorf`でテスト失敗を報告し、`t.Log`でログを出力します。`go test`コマンドでテストを実行でき、`-v`オプションで詳細表示、`-cover`でカバレッジ計測が可能です。記事では具体的なテスト例として、文字列の等価性チェックやエラーハンドリングのテストが紹介されています。また、外部パッケージのテストやテストデータの扱いについても触れられています。

 

字句解析器を作る為にデータ構造のスタックを見る

/** 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`に記述し、正常系と異常系のテストケースを実行する方法を紹介しています。また、テーブル駆動テストを用いて複数のテストケースを簡潔に記述する方法も説明しています。

 

【SEO対策】Core Web Vitals

/** Geminiが自動生成した概要 **/
Google Analyticsのスクリプトをページ読み込み直後に移動することで、Core Web Vitals、特にFID(First Input Delay)を改善する方法を解説しています。通常、Google Analyticsのスクリプトは</body>直前に配置されますが、これだとスクリプトのダウンロードと実行が完了するまでブラウザが他の操作を受け付けず、FIDが悪化します。記事では、async属性を追加し<head>内に移動することで、スクリプトを非同期で読み込み、ブラウザのレンダリングを妨げないようにする方法を紹介。async属性はIEでは機能しないため、IE用に条件分岐で対応する必要性も説明しています。さらに、Google Tag Managerを使用している場合は、設定変更だけで対応可能であることも解説しています。これらの修正により、FIDが大幅に改善され、ユーザーエクスペリエンスの向上が期待できます。

 

PHPのガベージコレクションを見る

/** Geminiが自動生成した概要 **/
PHPのガベージコレクション(GC)は参照カウント法を用いて不要なメモリ領域を解放する。`xdebug_debug_zval()`関数で確認できる`refcount`が参照数を示し、0になるとGC対象となる。オブジェクト型では、変数への代入で`refcount`が増減し、`unset`で`refcount`が減る。`refcount`が0になるとメモリが解放される。整数型などzvalに直接値を持つ型は`refcount`が0でも当てはまらない。`unset`は不要になったオブジェクトを明示的に解放し、メモリ効率を向上させるため有効。

 

PHPのガベージコレクションを学ぶにXdebugを入れる

/** Geminiが自動生成した概要 **/
XdebugはPHPのデバッグとプロファイリングツールです。`xdebug_debug_zval()`関数は、変数の内部表現であるzvalの情報を表示します。出力には、参照カウント(refcount)、参照かどうか(is_ref)、そして変数の型と値が含まれます。zvalの情報は、PHPのガベージコレクションの仕組みや変数の挙動を理解する上で重要です。Xdebugのドキュメントでは、`xdebug_debug_zval()`以外にも様々なデバッグ関数が紹介されています。これらを利用することで、PHPコードの実行状況を詳細に把握し、問題の特定やパフォーマンスの改善に役立てることができます。

 

Dropbox-Uploaderでサーバの負担を軽減する

/** Geminiが自動生成した概要 **/
サーバのDropbox容量圧迫問題をDropbox-Uploaderで解決する手順。 1. Dropbox-Uploaderをダウンロード&セットアップ(アクセストークン取得含む)。 2. 送信したいファイルをサーバに配置。 3. rootのcrontabで、`dropbox_uploader.sh upload`コマンドを使い、指定時間にDropboxへアップロードするよう設定。 4. 常駐Dropboxを停止(`dropbox stop`)し、`top`コマンドで停止確認。 これにより、常駐Dropboxが不要になり、サーバ負荷を軽減できる。

 

PHPのOPCacheで生成されるキャッシュを見る

/** Geminiが自動生成した概要 **/
PHPのオペコードを確認するにはVLD拡張モジュールを使用します。VLDはPHPスクリプトをコンパイルし、生成されたオペコードを人間が読める形式で出力します。出力には、各オペコードの行番号、オペコードの種類、オペランド、結果などが含まれます。これにより、PHPスクリプトの実行方法を詳細に理解し、パフォーマンスのボトルネックを特定するのに役立ちます。VLDのインストールはPECLを利用し、php.iniで`vld.active=1`などを設定することで有効化できます。関数`vld_dump()`で特定の関数のオペコードを出力することも可能です。

 

【SEO対策】PHPのOPCacheの更新チェックの頻度を下げる

/** Geminiが自動生成した概要 **/
PHPのOPCacheは、バイトコードをキャッシュしてパフォーマンスを向上させる機能。設定項目`opcache.revalidate_freq`はスクリプトの更新チェック頻度を制御する。デフォルトは2秒だが、CMSサイト等でPHPスクリプトの更新が少ない場合は、この値を大きくすることで更新チェックのオーバーヘッドを減らせる。設定変更は`php.ini`で`opcache.validate_timestamps`を有効化し、`opcache.revalidate_freq`を例えば86400(1日)に変更、サーバー再起動で行う。今回の検証ではパフォーマンスの顕著な差は見られなかった。

 

薄い色の花弁のアサガオからフラボノイドのことを考える

/** Geminiが自動生成した概要 **/
薄い花弁のアサガオの生育不良と黄緑色の葉の関連性について考察した記事です。生育の遅延は、フラボノイドの合成量の低下が原因だと推測されています。 通常、植物は紫外線対策としてフラボノイドを葉に蓄積しますが、合成量が減少すると紫外線による活性酸素の発生が増加し、活性酸素除去のためにグルタチオン合成にアミノ酸が消費されます。結果として成長に必要なアミノ酸が不足し、生育が遅延すると考えられています。 記事では、青色色素合成酵素の欠損ではなく、フラボノイド自体の合成量の低下が原因であると推測しています。その理由は、もし酵素が欠損しているだけであれば、中間生成物である黄色や赤の色素が蓄積し、花弁や葉がこれらの色になるはずだからです。この黄葉の性質は、今後のアサガオ栽培における一つの知見となります。

 

【SEO対策】content-visibility:auto;でコンテンツの遅延読み込み

/** Geminiが自動生成した概要 **/
Chrome 85からCSSの`content-visibility: auto;`が導入され、画面外コンテンツの遅延読み込みが可能に。表示速度向上とSEO対策が目的です。筆者は自身のサイトで、`.content-lazy-always`で常時遅延、`.content-lazy`でPCとスマホで表示/遅延を切り替える形で実装。記事一覧の下部や詳細ページのフッターなどに適用しました。しかし、元々読み込みが速かったため、具体的な速度改善効果は確認できなかったとのことです。

 

SOY ShopでLogin with Amazonプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop用のLogin with Amazonプラグインが開発され、Amazonアカウントでのログインが可能になった。取得できるデータはAmazon ID、氏名、メールアドレスで、住所取得は今後の課題。このプラグインは、以前開発されたAmazon Payワンタイムペイメントモジュールと連携できる可能性がある。プラグインはsaitodev.coで提供されているSOY Shopパッケージに含まれる。

 

WSL2でSOY CMSの開発環境を作ってみた(virtualhost編)

/** 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の管理画面が表示されれば成功です。

 

VLDでPHPのオペコードを確認する

/** 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が自動生成した概要 **/
8月8日(土)、安満遺跡公園で「なるほどお野菜 根っこ編」が開催されました。台風とコロナで2度延期された後の実施です。参加者はスライドで野菜の根を見て、どの野菜か推測するクイズに挑戦。大根や人参は容易でしたが、スイバは難しかったようです。 実物のイチゴの苗、落花生、クローバーの根粒菌なども観察し、根の役割や根粒菌の共生について学びました。最後にミニニンジンの種まき体験を行い、参加者はカイワレ容器に種を蒔きました。発芽が難しい人参ですが、根の観察には最適です。

 

イネは長い育種の歴史においてサイトカイニン含量が増えた

/** Geminiが自動生成した概要 **/
イネは品種改良を通してサイトカイニン含量が増加し、収量向上に繋がった。サイトカイニンは分げつ伸長や養分転流に関与する重要な植物ホルモンだが、根の伸長は抑制する。高校生物で学ぶ「サイトカイニンは根で合成」は少し不正確で、実際は地上部で合成されたiP型サイトカイニンが根に運ばれ、tZ型に変換されて地上部へ送られ作用する。根の栄養塩が豊富だとtZ型への変換が促進され、サイトカイニン活性が高まる。

 

SOY ShopでログインIDの項目名の変更を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopで、顧客が患者番号のような任意のIDでマイページにログインできるよう、ログインIDの項目名を変更する機能が追加されました。従来の「ログインID」表記だと、患者番号として運用するには分かりにくいため、管理画面から自由に名称を変更できるようになりました。例として、画像では「患者番号」に変更されています。この機能により、顧客コードを利用するよりも運用コストと教育コストの削減が見込めます。このアップデートはsaitodev.co/soycms/soyshop/ で提供されているパッケージに含まれています。

 

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

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

 

SOY Shop版HTMLキャッシュプラグインを追加しました

/** Geminiが自動生成した概要 **/
SOY Shop 2にHTMLキャッシュプラグインが追加され、高速化が可能になった。カートウィジェットの問題は非同期通信で解決し、カート内商品数と合計金額をJSONで取得できる。ヤマトリップショップではこの機能とLazyLoadプラグイン、jpegoptimにより、ページ表示速度が3.3秒から1秒以下になり、PageSpeed InsightsのスコアもPCで90を超えた。スマホは90に届かなかったが、Gueztliによる画像最適化で改善が見込まれる。SOY Shop 2正式版は近日公開予定。

 

花の向きとオニアザミ

/** Geminiが自動生成した概要 **/
筆者は、ハナバチが横向きや下向きの花を好むという記述から、オニアザミの花の向きについて考察している。一般的にアザミは筒状の集合花で、チョウやハナバチが訪れる。しかし、オニアザミは花が大きく重いため下向きになり、チョウは蜜を吸えなくなる可能性がある。つまり、花の向きが送粉する昆虫の選択性に関わっているのではないかと推測している。筆者は、大型で下向きの花を持つオニアザミには、どのような昆虫が送粉に関わっているのか疑問を投げかけている。

 

SOY ShopでSMBC GMO PAYMENT用の決済モジュールを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop用のSMBC GMO PAYMENTクレジット決済モジュールが開発されました。このモジュールは標準機能には含まれておらず、希望者は問い合わせフォームから連絡が必要です。 また、GMOペイメントゲートウェイ用のクレジット決済モジュールも開発されています。どちらも、ECサイト構築プラットフォームであるSOY Shopで利用可能です。

 

SOY2HTMLで軽微なカスタマイズを加える為の機能を追加しました

/** Geminiが自動生成した概要 **/
SOY CMS/ShopのSOY2HTMLに、軽微なカスタマイズを容易にする隠し機能が追加されました。クラスファイルと同名のHTMLファイル名の頭にアンダースコア「_」を付けると、そのHTMLファイルが優先的に読み込まれます。これにより、プラグインのバージョンアップ時の上書きを回避できます。例えば、配送モジュールの文言変更など、PHP知識を必要とせず容易にカスタマイズできます。標準配送モジュールなら `delivery_normal/cart/_DeliveryNormalCartPage.html` を配置し、元のHTMLの内容をコピー・編集することで実現できます。SOY Shop 2系以降で利用可能、1系は `soy2_build.php` の修正が必要です。新パッケージはsaitodev.coからダウンロードできます。

 

fatal: write error: No space left on deviceの対処

/** Geminiが自動生成した概要 **/
ArchWikiのLogrotateの記事は、ログファイルの自動ローテーション、圧縮、削除を行うためのツール、logrotateの使い方を解説しています。設定ファイル(/etc/logrotate.conf, /etc/logrotate.d/)でローテーション間隔、保持期間、圧縮有無などを指定し、通常はcronで毎日実行されます。設定ファイルの各ディレクティブは、ローテーション頻度(daily, weeklyなど)、保持数(rotate)、圧縮(compress)、ローテーション後のファイル名(olddir, ifempty)、実行権限(create)、所有者(user, group)、実行スクリプト(prerotate, postrotate)などを制御します。 トラブルシューティングとして、デバッグオプション(-d)で動作確認、ログ(/var/lib/logrotate/status)のチェックが有効です。

 

ハナバチはサクラの葉に蜜があることをどのように知っていくのだろうか?

/** Geminiが自動生成した概要 **/
プロポリスは、ミツバチが植物の新芽や樹液から集めた樹脂混合物で、巣の隙間を埋めたり、補強、抗菌・抗酸化のために使われます。成分は樹脂、バルサム、精油、ワックス、花粉など多様で、産地や季節によって組成が変化します。人間は健康食品やサプリメントとして利用し、抗菌、抗炎症、抗酸化、免疫賦活などの効果が期待されていますが、科学的根拠は限定的です。また、アレルギー反応を起こす可能性もあるため注意が必要です。プロポリスはミツバチにとって巣の衛生と安全を維持する重要な役割を果たしています。

 

チョウが好む花

/** Geminiが自動生成した概要 **/
蝶が好む花の特徴は、赤橙色系でラッパ型、突き出た蕊と粘着性のある花粉、甘い香りと薄い蜜を持つ。薄い蜜は蝶の口吻が詰まるのを防ぐため。ミツバチもこれらの花から蜜を集め、巣で濃縮・貯蔵する。ツツジも蝶好みの花だが、ツツジ蜜のハチミツはあまり見かけない。蜜の薄さが関係している可能性がある。アザミも蝶が好むため、同様に蜜が薄いかもしれない。

 

SOY CMSでブログ記事連番プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSユーザーからの要望に応え、ブログ記事に連番を表示するプラグインを開発しました。記事ごとに何番目の記事かを表示する機能は、SOY CMSの「記事とページの独立性」という仕様により、複雑な処理が必要となるため、パフォーマンスへの影響を考慮し、標準機能ではなくプラグインとして提供しています。ダウンロードはsaitodev.co/soycms/ から可能です。

 

SheetJSを試してみた

/** Geminiが自動生成した概要 **/
SheetJSは、ブラウザ上でHTMLテーブルから簡単にExcelファイルを生成できるJavaScriptライブラリです。デモを改修し、テーブル要素を指定して`XLSX.utils.table_to_book`でブックオブジェクトを生成、`XLSX.writeFile`でExcelファイル(xlsx)として出力する簡単なコードで実装できます。 表示されたHTMLテーブルのダウンロードボタンをクリックするだけで、テーブル構造を保持したExcelファイルがダウンロードされます。著者は従来PHPのPhpSpreadSheetを使用していましたが、SheetJSも選択肢に加えるとのことです。

 

gRPC for PHPのインストール

/** Geminiが自動生成した概要 **/
この記事はUbuntu 19.10環境でGoogle Ads APIを使用するためのgRPC for PHPのインストール手順を解説しています。PEAR/PECL、Composerをインストール後、`pecl install grpc`、`pecl install protobuf`コマンドでgRPCとprotobufをインストールします。その後、`/etc/php/7.4/cli/php.ini`と`/etc/php/7.4/fpm/php.ini`両方に`extension=grpc.so`と`extension=protobuf.so`を追加し、`phpinfo()`や`php -m`でインストールを確認します。記事ではComposerのインストール手順も解説していますが、gRPCのインストール自体はComposerを使わずPECL経由で行っています。

 

Google AdsのMCCアカウントでキーワードプランナーを無料で使えるようにするまで

/** Geminiが自動生成した概要 **/
Google Ads APIを利用するにはMCCアカウントが必要で、キーワードプランナーを無料で使う方法を解説。MCCアカウント作成後、キーワードプランナーは有効な広告アカウントがないため使えない。そこで、エキスパートモードで「キャンペーンなしでアカウントを作成」し、生成されたお客様IDをメモ。MCCアカウントに戻り、サブアカウント設定で「既存のアカウントをリンク」し、お客様IDを入力してリクエストを送信、承認する。これでMCCアカウントでキーワードプランナーが無料で使えるようになる。

 

SOY ShopでFacebookページショップと連携する

/** 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が自動生成した概要 **/
腸内細菌叢、特にバクテロイデス・テタイオタオミクロンは、腸管上皮細胞の糖鎖末端のフコースを利用する。フコースが不足すると宿主細胞にシグナルを送り、フコースを含む糖鎖(フコシル化糖鎖)の産生を促す。フコシル化糖鎖は食品成分と相互作用し、消化に影響すると考えられる。ストレスによりフコシル化糖鎖が減少すると、この相互作用が阻害され、消化吸収に問題が生じる可能性がある。また、フコシル化糖鎖はNK細胞の活性化にも関与し、ウイルス感染防御に重要な役割を果たす。つまり、腸内細菌とフコシル化糖鎖は、消化機能と免疫機能の両方に影響を及ぼす可能性がある。

 

SOY CMSの静的化プラグインで高速化

/** Geminiが自動生成した概要 **/
SOY CMSの静的化プラグインが改良され、ページ単位での静的化設定、全プラグイン実行後の静的化処理、ページ更新時の静的ファイル一括削除、サイトキャッシュ削除時の静的ファイル削除が可能になった。従来の静的化はフロントコントローラやRewriteモジュールの処理を回避することで高速化を実現していたが、今回の改良でさらに柔軟性と効率性が高まった。HTMLキャッシュプラグインと併用することで、標準ページは静的化、ブログページはHTMLキャッシュと使い分け、サーバー負荷軽減に効果的。改良版はsaitodev.coからダウンロード可能。高速化に加え、SEO対策にも有効。

 

SOY CMSのHTMLキャッシュプラグインで高速化

/** Geminiが自動生成した概要 **/
SOY CMSのHTMLキャッシュプラグインは、サイト高速化を実現する強力なツールです。従来の静的化プラグインの欠点を克服し、標準ページを含む全ページをキャッシュ対象としつつ、ページごとにキャッシュの有効/無効を設定できる柔軟性を備えています。これにより、SOY Shop連携など動的なコンテンツを含むページでも最適なパフォーマンスを実現できます。HTMLキャッシュは、PageSpeed Insightsのスコア向上に貢献するだけでなく、メディア露出時の急激なアクセス増加にも対応できる安定性を提供します。内部SEO対策としても有効で、情熱大陸放送後のアクセス集中を乗り切った事例からもその効果が実証されています。パッケージはsaitodev.coからダウンロード可能です。SEO対策に関する詳細はsaitodev.co/category/SEOをご覧ください。

 

【SEO対策】他のCMS向けの総当り攻撃を避ける

/** Geminiが自動生成した概要 **/
サイバー攻撃の増加は深刻な問題であり、特にCMSを狙った攻撃は増加傾向にある。記事ではSOY CMSへの攻撃事例を通して、その脅威を具体的に示している。攻撃者は管理画面へのログインを試みたり、脆弱性を突いて不正アクセスを試みる。対策としては、管理画面のURLを変更したり、.htaccessでアクセス制限をかけることが有効である。また、WAFの導入やセキュリティプラグインの活用も推奨されている。常に最新の情報に注意し、適切なセキュリティ対策を実施することで、被害を最小限に抑えることが重要である。

 

【SEO対策】IPv6

/** Geminiが自動生成した概要 **/
IPv6はSEO対策に有効な通信速度改善策。IPv4アドレス枯渇問題を解決する後発の規格で、理論上アドレス割り当ては無限大。16ビット単位の16進数表記で、IPv4より最適化されている。saitodev.coのようなWebサイトアクセスでは、DNSサーバでドメイン名からIPv4/IPv6アドレスを取得し、サイトサーバへアクセスする。IPv6設定はサーバ会社ごとに異なるが、DNS設定ではIPv4をAレコード、IPv6をAAAAレコードに登録する。設定確認は`ping -4/-6 ドメイン名`コマンドで可能。

 

【SEO対策】データベースチューニング

/** Geminiが自動生成した概要 **/
SOY Shopのデータベースパフォーマンス改善にはインデックスの見直しが効果的です。 商品点数やアクセス数の増加に伴い、データベースへの負荷が増大し表示速度が低下することがあります。 特に商品検索や絞り込み機能は複雑なクエリを実行するため、適切なインデックスが設定されていないとパフォーマンスに大きな影響を与えます。 インデックスはデータベース内の特定の列に付与されることで、データ検索の高速化を実現します。 SOY Shopでは、商品コードや商品名、公開状態など、頻繁に検索される項目にインデックスを設定することが推奨されています。 しかし、不要なインデックスは更新処理のオーバーヘッドとなるため、適切なインデックスを選択することが重要です。 記事では、phpMyAdminを用いたインデックスの確認方法、SOY Shop管理画面からのインデックス設定方法、そしてインデックス設定の注意点が解説されています。 インデックスを適切に設定することで、データベースの負荷を軽減し、表示速度の向上、ひいてはユーザーエクスペリエンスの向上に繋がるとしています。

 

【SEO対策】実行環境のバージョンを上げて高速化

/** Geminiが自動生成した概要 **/
PageSpeed Insightsでスコア100を目指すため、サーバー側の処理速度向上に取り組んだ。SEO対策として、PHP製CMSを使う場合、PHPバージョンを最新に保つことが重要。PHP7系はOPCacheにより高速化されており、バージョンアップだけでスコア向上も期待できる。VPSサーバでのバージョンアップ方法は過去記事を参照。PHP8ではJitコンパイラ導入で更なる高速化が見込まれる。かつてGo言語への移植も検討したが、PHPでスコア100達成できたため中止した。

 

【SEO対策】Gueztliで画像のファイルサイズの削減

/** Geminiが自動生成した概要 **/
この記事では、ウェブサイトのSEO対策として画像ファイルサイズの削減に焦点を当てています。GoogleのJPEGエンコーダGuetzliを導入することで、画像品質を維持しながらファイルサイズを大幅に削減できることを実例で示しています。具体的には、115.8kbの画像がGuetzliによって9.4kbまで圧縮され、80%以上の削減に成功しています。また、PageSpeed InsightsによるWebP等の次世代フォーマットの推奨についても触れつつ、Safari非対応やPageSpeed Module導入によるパフォーマンス低下を理由に現状では採用を見送っていることを説明しています。

 

【SEO対策】HTTP/2

/** Geminiが自動生成した概要 **/
HTTP/2は、HTTP/1.1以前のバージョンに比べて、複数のファイルを並列でダウンロードできるため、ウェブサイトの表示速度を大幅に向上させます。これにより、リクエスト回数とインターネット全体の回線使用量が削減されます。しかし、一度に送受信されるデータ量が増えるため、画像サイズの最適化が重要になります。ApacheサーバーでHTTP/2を有効にする方法は、別記事で紹介されています。より詳細な情報は、オライリーの"Real World HTTP"で学ぶことができます。現在、LiteSpeedのようなサーバーでは、さらに高速なHTTP/3(QUIC)が利用可能ですが、当サイトはApacheのHTTP/3対応を待っています。

 

【SEO対策】データの転送量の削減の為の圧縮

/** Geminiが自動生成した概要 **/
個人事業主がSEO対策として行ったデータ転送量削減策を紹介。コンテンツの充実を最優先としつつ、今回はデータ圧縮に着目。GoogleのPageSpeed Insightsを参考に、Brotliアルゴリズムを用いてデータ転送量の削減を試みた。Brotliは対応サーバーが限られるため、Deflateやgzipも選択肢として提示。HTMLや画像のデータ量削減は今後の課題とし、データ転送に関する更なる改善策を予告している。

 

清水っ粉を使って料理してみた

/** Geminiが自動生成した概要 **/
齋藤亮子さんが高槻産の米粉「清水っ粉」を使って様々な料理に挑戦。ブルーベリーホットケーキ、鶏カツ、そばガレットを作った。ホットケーキは卵を入れ忘れたが、意外にも美味しく、卵アレルギーの方にもおすすめ。鶏カツは衣に使い、油の吸収が少なくあっさりした仕上がりに。そばガレットは「清水っ粉」の細かさにより、具材がまとまりやすく、カリッと美味しく焼き上がった。特にそばガレットは麺つゆの水分だけで粉をまとめる方が良いと判明。「清水っ粉」は粒子が細かいため、かき揚げやじゃがいもガレットなど、水分を吸わせてまとめる料理に最適だと感じた。

 

高槻市清水地域産米粉の清水っ粉

/** Geminiが自動生成した概要 **/
高槻市清水地区産の米粉「清水っ粉」は、規格品の米を使用し、低グルテンで小麦アレルギーの人でも食べられる可能性がある。小麦粉と比べ、必須アミノ酸含有量が3割高く、油吸収率は3割低いという利点を持つ。記事では米粉パンの食感の軽さや、グルテンによる胃への負担、アレルギー反応について触れ、米粉の栄養価に関する誤解を農林水産省の資料を引用して解説している。高品質な米を使用すれば、米粉の特性は更に向上する可能性があり、長野県栄村の米作りで得られた知見の活用に期待を寄せている。実際に清水っ粉を使った料理の記録もある。

 

お茶で風邪予防の仕組みを見る

/** Geminiが自動生成した概要 **/
このブログ記事は、お茶(特に緑茶)に含まれるカテキンが風邪予防に有効なメカニズムを解説しています。ウイルスは自己増殖できず、宿主細胞の表面にある糖鎖と自身のスパイクタンパクが結合することで感染します。緑茶カテキンは、ウイルスのスパイクタンパクを封鎖し、宿主細胞への認識・吸着を阻害することで感染を予防するとされています。 カテキンは体内滞在時間が短いため、効果を期待するには日常的な緑茶摂取が重要です。記事では、ウイルスの基本的な性質や感染プロセス、投薬の難しさ、さらにはmRNAワクチンの仕組みについても触れ、多角的に解説しています。

 

SOY CMSでDropboxバックアッププラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMS向けDropboxバックアッププラグイン(β版)を開発しました。CLI版不要で、Dropbox APIを利用しサーバからDropboxへ直接バックアップファイルを転送します。PHPのZipArchive、またはコマンドラインzip、サイトディレクトリへの圧縮権限、サーバの空き容量が必要です。詳細はサイト(saitodev.co/soycms/)で確認し、手動バックアップの上、利用ください。

 

根は地面を耕し土を形成する

/** Geminiが自動生成した概要 **/
竹野海岸のグリーンタフ観察から土壌形成の過程を考察。グリーンタフは火山活動で生成された緑色の凝灰岩で、風化しやすい。風化によって粘土鉱物や金属イオンが放出され、土壌の母材となる。植物の根は土壌の固い部分を砕き、根の先端からは有機酸が分泌される。有機酸は鉱物の風化を促進し、根の表層から剥がれ落ちたペクチンなどの有機物は粘土鉱物と結合し、団粒構造を形成する。さらに、根から放出された二次代謝産物は微生物によって重合し、土壌に吸着される。このように、岩石の風化、植物の根の作用、微生物活動が複雑に絡み合い、土壌が形成される過程をグリーンタフ観察から推察できる。

 

粘土鉱物が出来る場所、風化作用

/** Geminiが自動生成した概要 **/
粘土鉱物は、岩石の風化によって生成される微粒で層状の珪酸塩鉱物です。風化には、物理的な破砕と、水や酸との化学反応による変質があります。カリ長石がカオリンに変化する過程は、化学的風化の例です。鉱物の風化しやすさは種類によって異なり、一般的に塩基性の強い火山岩ほど風化しやすいです。同じ珪酸含有量でも、急速に冷えて固まった火山岩は、深成岩より風化しやすい石基を多く含みます。そのため、玄武岩のような火山岩は斑れい岩のような深成岩よりも風化しやすく、結果として異なる種類の粘土鉱物が生成されます。

 

風化した斑れい岩を観察する前に斑れい岩について整理しよう

/** Geminiが自動生成した概要 **/
竹野海岸のグリーンタフ(緑色凝灰岩)は、日本海形成時の火山活動で噴出した火山灰が海底に堆積し、熱水作用で変質した岩石。その緑色は、含まれる鉱物中の鉄イオンが酸化第二鉄から酸化第一鉄に変化したため。風化すると褐色になる。 グリーンタフは、その形成過程から、当時の日本海の環境や地殻変動を知る上で重要な手がかりとなる。周辺には、グリーンタフが風化してできた粘土質の土壌が広がり、水はけが悪く、稲作には不向きだが、果樹栽培などに適している。 記事では、グリーンタフを観察しながら、岩石の風化と土壌形成のプロセス、そして地域の農業との関連について考察している。火山活動が生み出した岩石が、長い時間をかけて土壌へと変化し、地域の産業に影響を与えていることを示す好例と言える。

 

SOY Shopをリリースして10年が経ちました

/** Geminiが自動生成した概要 **/
SOY Shopは2009年12月18日にベータ版公開、CSS Nite忘年会でお披露目された。開発当初はプログラミング未経験だったが、マニュアル作成やバグ報告、軽微な修正を担当。後に支払いモジュール開発でスキルアップし、構築サイトが情熱大陸で紹介されるなど貴重な経験を得た。中でも、多様な業種のネットショップ構築を通して商売事情を学べたことが、現在の商売の基礎となっている。開発元を去った後も、オープンソースとして非公式にメンテナンスを継続していく。

 

PHPのexec関数でセッションの値の引き継ぎに苦戦した時のメモ

/** Geminiが自動生成した概要 **/
Amazon Linux 2のLAMP環境で、PHPの`exec`関数を使ってGoogle Analytics APIにアクセスする際にセッションの引き継ぎに失敗した。`exec`で実行した`cmd.php`内で`session_start()`してもセッション情報が取得できなかった。調査の結果、`cmd.php`内では`session_save_path()`の戻り値が空文字列になっていた。`session_save_path("/var/lib/php/session");`を`session_start()`前に追加することでセッション情報が取得できるようになり、APIアクセスも成功した。`php.ini`の`session.save_path`の設定が原因と考えられるが、未検証。

 

SOY CMSでMySQL8系に接続できない時の対処

/** Geminiが自動生成した概要 **/
MySQL8系にアップグレード後、SOY CMSが「データベースの接続に失敗しました」エラーで起動しない場合の対処法。原因はMySQL8.0の認証方式変更にPHPのPDOが対応していないため。Ubuntu環境で、MySQLの設定ファイル(/etc/mysql/mysql.conf.d/mysqld.cnf)の[mysqld]セクションに`default_authentication_plugin=mysql_native_password`を追加し、MySQLを再起動することで解決する。これはPDOの対応までの応急処置。

 

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

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

 

PHPで形態素解析エンジンのMaCabを使用する為の手順のメモ

/** Geminiが自動生成した概要 **/
Ubuntu 19.10環境でPHPからMeCab形態素解析エンジンを使用する手順をまとめたメモです。MeCab、辞書(mecab-ipadic-utf8, mecab-ipadic-neologd)、php-mecabをインストールし、PHPからMeCabを呼び出すテストコードを実行しています。 php-mecabインストールでは、phpize、configure、make、installを行い、mecab.iniを作成、ApacheとCLIで有効化しました。テストコードは"今日は晴天なり"を解析し、結果を配列で出力しています。ブラウザと端末の両方から実行し、期待通りの解析結果が得られました。

 

SOY CMSで記事一覧選択表示ブロックプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSの記事一覧表示を自由にカスタマイズできる「記事一覧選択表示ブロックプラグイン」の紹介です。 通常の記事一覧ブロックはカテゴリーや検索結果に基づいて表示されますが、このプラグインでは記事ごとにチェックボックスで表示/非表示を選択可能。 記事編集画面にチェックボックスが追加され、チェックを入れた記事のみがブロックに表示されます。 これにより、ラベルに関係なく任意の記事をピックアップした一覧を作成できます。ブロックの設定方法の詳細はプラグイン詳細画面に記載。プラグインを含むパッケージはsaitodev.co/soycms/からダウンロード可能です。

 

粘土鉱物が出来る場所

/** Geminiが自動生成した概要 **/
凝灰岩が地下深くに埋没し、熱水変質作用を受けることで粘土鉱物が生成される。熱源の深さや熱水の流動性、水素イオン濃度、温度などが生成される粘土鉱物の種類(スメクタイト、沸石など)に影響する。山陰地方で産出される沸石凝灰岩は土壌改良材として利用される。モンモリロナイトや沸石は、凝灰岩が熱水変質作用を受けた後、地質学的イベントで隆起し地表に出現することで採掘可能になる。これらの粘土鉱物を土壌に投入すると、非アロフェン質の黒ボク土へと変化する可能性がある。

 

竹野のグリーンタフを見ながら土の形成に思いを馳せる

/** Geminiが自動生成した概要 **/
黒ボク土は、火山灰土壌であり、保水性、通気性、排水性に優れ、リン酸固定が少ないため、肥沃な土壌として認識されている。しかし、窒素供給力が低いという欠点も持つ。黒ボク土壌で窒素飢餓を起こさないためには、堆肥などの有機物施用と適切な土壌管理が必要となる。 記事では、鳥取砂丘の砂質土壌に黒ボク土を客土した圃場での栽培事例を通して、黒ボク土の特性と砂質土壌との比較、土壌改良の難しさについて考察している。黒ボク土は砂質土壌に比べて保水性が高い一方で、窒素供給力が低いことから、窒素飢餓対策が必要となる。また、砂質土壌に黒ボク土を客土しても、水管理の難しさは解消されず、土壌改良は容易ではないことが示唆されている。

 

SOY CMSで自動ログインを追加しました

/** Geminiが自動生成した概要 **/
SOY CMSのバージョンアップ後、初期管理者でログイン・バージョンアップ手続き・ログアウトを行うと、ログインフォームに自動ログインチェックボックスが追加されるようになりました。この機能はバージョンアップの手間を軽減します。同梱パッケージはsaitodev.co/soycms からダウンロード可能です。

 

Jenkins + ヘッドレスChromeでテスト自動化の省力化

/** Geminiが自動生成した概要 **/
JenkinsによるSOY CMS/Shopのテスト自動化で、ビルド時間が5時間超となり、Chromeのクラッシュが発生していた。メモリ使用量削減のため、ヘッドレスChromeを導入。php-webdriverのコードにChromeOptionsを追加することで、ヘッドレスChromeでのテスト実行が可能になった。仮想デスクトップ(Xvfb)も不要となり、メモリ使用量が削減され、格安VPSでの高負荷テスト継続に期待が持てる。

 

りょうこ先生のなるほどお野菜第1回-種編-

/** Geminiが自動生成した概要 **/
安満遺跡公園で子供向け種イベント「りょうこ先生のなるほどお野菜第1回-種編-」を開催。種あてクイズや種植え体験、野菜の断面観察などを通して、子供たちに野菜の種の面白さを伝えた。顕微鏡で種を観察するコーナーは特に人気で、講師自身も購入するほど。参加者からは次回開催を望む声も上がった。イベントは小学3年生を中心に、保護者も参加。珍しいそうめんかぼちゃの試食も行われた。今後は収穫祭でのイベントも企画中で、親子で無農薬野菜を使った焼きそば作りと野菜クイズを検討している。

 

オーガニックファームHARAさんのキャロライナ・リーパー

/** Geminiが自動生成した概要 **/
植物の上陸は、過剰な太陽光への対処という課題をもたらしました。水中は光が減衰されるため光合成には効率的でしたが、陸上では強すぎる光が光合成器官に損傷を与えかねません。そこで植物は、カロテノイドなどの色素分子を進化させました。カロテノイドは、余剰な光エネルギーを吸収し、熱として放散することで光阻害を防ぎ、光合成の効率を維持します。 陸上植物のカロテノイド生合成経路は、シアノバクテリア由来の葉緑体と、真核生物の祖先が獲得した経路の融合によって成立しました。特に、陸上植物はカロテノイドを多様化させ、様々な環境に適応しています。この多様化は、遺伝子重複や機能分化といった進化メカニズムによって実現されました。結果として、カロテノイドは光合成の効率化だけでなく、植物の生存戦略において重要な役割を果たすようになったのです。

 

SOY CMSで記事詳細高速表示プラグインを作成しました

/** Geminiが自動生成した概要 **/
SEO対策として表示速度向上に取り組んでいるサイト運営者が、SOY CMSの記事詳細表示を高速化するプラグインを開発した。従来、柔軟性のため記事テーブルのエイリアスカラムにUNIQUEインデックスを貼っていなかったが、今回ユニーク制約を設けることで高速化を実現。同時に、記事の投稿時刻にもインデックスを追加し、アーカイブページの表示速度も向上させた。投稿時刻は同時刻投稿の場合、1秒ずらす仕様とした。このプラグインはダウンロード後、有効化することでデータベースに反映される。

 

PHPで並行処理

/** Geminiが自動生成した概要 **/
PHPで並行処理を行う方法として、exec関数でジョブファイルを実行する方法が紹介されています。ジョブファイルはバックグラウンドで実行され、メインプロセスとは独立して動作します。ただし、ジョブファイルの結果をメインプロセスに返すことができないという欠点があります。 記事では、Google OAuthを使ったジョブで、メインプロセスのセッション情報をジョブファイルで利用する方法についても説明されています。ジョブファイルの引数にセッションIDを渡し、ジョブファイル内でセッションを復元することで、アクセストークンなどのセッション情報を共有できます。 最終的に、ジョブの結果をメインプロセスで扱う方法については触れられていませんが、Go言語やNode.jsのような並行処理に適した言語の使用が推奨されています。

 

SOY CMSのブログ記事SEOプラグインでメタタグの出力設定を追加しました

/** Geminiが自動生成した概要 **/
SOY CMSブログ記事SEOプラグインがアップデート。記事詳細ページでメタ情報(キーワード、説明)未入力の場合、従来はトップページのメタ情報を継承していたが、新設定で継承の有無を選択可能に。また、記事にメタ情報がない場合はメタタグ自体を出力しない設定も追加(`b_block:id="is_entry_description"`等を使用)。これにより、メタ情報未入力の記事でも表示速度低下を回避できるようになった。新機能搭載パッケージはsaitodev.co/soycms/ からダウンロード可能。

 

A-nokerさんの森のアスパラを頂きました

/** Geminiが自動生成した概要 **/
A-nokerさんから佐賀県太良町産のアスパラガスを頂き、その美味しさに感動。同封のお便りでアスパラガス酸について触れられており、更に書籍でその興味深い効能を知った。アスパラガス酸は、抗線虫・抗真菌作用や他の植物の生育阻害活性を持つ。また、その関連物質であるジヒドロアスパラガス酸は抗酸化作用やメラニン生成阻害活性を、アスパラプチンは血圧降下作用を持つため、医療や化粧品への応用が期待されている。アスパラガス酸の生合成経路には未解明な点が多く、今後の研究が待たれる。

 

ナミハダニに対するプラントアクティベータ

/** Geminiが自動生成した概要 **/
農研機構の研究では、タバコ由来の「ロリオライド」がナミハダニを始めとする害虫の生存率・産卵数を低下させることが明らかになりました。ロリオライドは殺虫作用を持たず、プラントアクティベータとして働きます。これは、作物の害虫に対する防御反応を示唆しています。 ロリオライドはカロテノイドを起源とし、カロテノイドが分解される際に生じます。植物は、害虫に対する防御反応の一環として、ロリオライドなどのプラントアクティベータを使用している可能性があります。この研究は、害虫防除のための新たな戦略につながる可能性があります。

 

ネナシカズラの寄生の仕方

/** Geminiが自動生成した概要 **/
ネナシカズラは、種子の寿命が長く、動物の胃の中でも生存できることから、日本全国に広く分布しています。 寄生するためには宿主植物に巻きつき、寄生根で宿主体内に侵入します。その寄生根は宿主植物の維管束と繋がり、寄生を開始します。 ただ、すべての植物に寄生できるわけではなく、宿主植物の種類によっては寄生率が低くなります。また、幼植物は寄生率が低いため、生き残る確率も低くなります。 そのため、ネナシカズラがイネ科の植物に寄生できる可能性は低く、雑草の多い畑や、通路に雑草対策が施されている畑では被害は限定的である可能性があります。

 

ネギ畑にネナシカズラが現れた

/** Geminiが自動生成した概要 **/
ネナシカズラは、根や葉を失って宿主植物に寄生するヒルガオ科の寄生植物です。京都のネギ畑に初めて出現し、その出現原因は不明です。 ネナシカズラは光合成を捨てて寄生生活を送っており、黄色の色素を持っています。卵菌など他の寄生生物と同様に、かつては光合成を行う藻類だった可能性があります。 ネナシカズラは現在、葉緑素を捨てている最中にあると考えられます。ヒルガオ科の強い適応力は、この寄生植物の出現にも関与している可能性があります。

 

スパーク運動療育西京極スタジオ様サイトの制作を行いました

/** Geminiが自動生成した概要 **/
妻の亮子が、児童発達支援事業所スパーク運動療育西京極スタジオのWebサイトと予約アプリを制作しました。サイトのデザイン、予約アプリの開発は夫の齋藤毅が担当。運動療育は、発達障害のある子どもが運動を通してコミュニケーション能力や感情コントロール能力を育むもので、早期開始が効果的です。亮子は、子育て中の母親としての視点を取り入れ、安心して利用できるサイトを目指しました。西京極スタジオのオーナーは療育の効果を実感し、必要性を感じてスタジオを設立。亮子は今回の制作を通して新たな分野の知識を得ると共に、Webデザイナーの仕事のやりがいを再確認しました。

 

SOY ShopのSMTPによるメール送信できない状態について

/** Geminiが自動生成した概要 **/
SOY ShopのSMTPメール送信不具合は、さくらインターネットのメールボックス側の仕様変更が原因だった。 SOY ShopはSMTP認証にDIGEST-MD5を優先利用していたが、さくら側でこれが拒否されるようになった。そのため、Thunderbirdでは送信できたが、SOY Shopからは送信できなかった。 解決策として、認証アルゴリズムをCRAM-MD5に切り替えることで送信できることを確認。修正版はsaitodev.co/soycms/soyshop/からダウンロード可能。ただし、この対応が全てのメールサーバで有効かは不明。

 

南房総族よりビワが届いた2019

/** Geminiが自動生成した概要 **/
南房総在住の知人から、2019年に引き続きビワが届いた。昨年も同様にビワが送られてきており、今回は届いたビワを箱から出さずに撮影した。まだ食べていないため味の感想は述べられていないが、送り主のブログ「酒と泪とアイリス(花)とびわ(果樹)ぼく南房総族」へのリンクが貼られている。ブログは2016年で更新が止ままっているものの、酒、涙、アイリス、ビワといったキーワードから、送り主の南房総での生活が垣間見える内容であることが推測される。

 

苦土が多い不思議な砂質土

/** Geminiが自動生成した概要 **/
福岡県糸島市の海岸沿いの畑の土壌分析結果で、苦土(マグネシウム)が異常に高く、カリウムも多いという不思議な現象が見られた。現地調査の結果、畑の土は近隣の森を切り崩した土で客土されており、周囲の地質は花崗岩主体だが、斑れい岩質の深成岩も存在する事がわかった。斑れい岩は苦土や鉄を多く含むため、客土された土に斑れい岩由来の成分が含まれていると推測される。この仮説は、畑の土から緑色の鉱物粒子が確認されたこと、土壌図で畑が森林土に分類されていることからも裏付けられる。通常の砂質土壌とは異なり、この畑では苦土による緩衝作用は期待できないため、腐植による緩衝に注力する必要がある。近隣の他の畑は通常の砂質土壌で、今回の畑は特殊な事例と言える。

 

竹内峠の片麻状花崗閃緑岩

/** Geminiが自動生成した概要 **/
紀伊半島南部の熊野灘沿岸には、付加体と海底火山の痕跡が見られる。付加体はプレートの沈み込みによって海洋プレート上の堆積物が陸側に押し付けられ、陸側のプレートに付加したもの。牟婁層群と呼ばれる地層は、砂岩や泥岩の層に玄武岩やチャートなどの岩塊が含まれており、典型的な付加体である。また、これらの地層には枕状溶岩や水中火山砕屑岩も含まれており、海底火山の噴火活動があったことを示している。特に、白浜町の海岸では、枕状溶岩が露出しており、海底火山の噴火の様子を鮮やかに物語っている。これらのことから、熊野灘沿岸地域は、かつて活発な海底火山活動があった海域だったことがわかる。

 

クオラムクエンチングで軟腐病や青枯病の被害を減らせるか?

/** Geminiが自動生成した概要 **/
クオラムセンシングは細菌の細胞密度依存的な情報伝達機構であり、病原菌の病原性発現にも関与する。クオラムセンシングを阻害するクオラムクエンチングは、病害防除の新たな戦略として期待される。本稿では、クオラムクエンチング酵素、特にAHL分解酵素の多様性と応用について概説する。AHL分解酵素は、N-アシルホモセリンラクトン(AHL)を分解することでクオラムセンシングを阻害する。AHL分解酵素は多様な微生物から発見されており、その構造や基質特異性も様々である。AHL分解酵素は、組換えタンパク質として利用したり、遺伝子組換え植物に導入したりすることで、植物病害の防除に効果を発揮することが示されている。

 

木蓮の花が咲いている

/** Geminiが自動生成した概要 **/
木蓮の開花をきっかけに、筆者は植物の進化について考察している。以前は単に季節の風物詩と捉えていた木蓮だが、福井の恐竜博物館で被子植物の進化に関する展示を見て印象が変わった。展示では、恐竜が木蓮のような花を見ていた可能性が示唆されていた。木蓮は被子植物の初期に出現したと考えられており、恐竜時代の風景の一部だったかもしれない。この新たな視点を得たことで、筆者は木蓮の花を神々しく感じ、恐竜が花を見てどう感じたのか想像を巡らせている。

 

SOY CMSで管理画面のログイン時のパスワードを忘れた場合の再設定

/** Geminiが自動生成した概要 **/
SOY CMSの管理画面パスワードを忘れた場合、パスワードリマインダが有効でなければ使えません。有効化は必須です。パッケージを最新版に更新すると手順が簡略化されます。 パスワード無しでログインするには、AdministratorLogic.class.phpのlogin関数とcheckUserIdAndPassword関数に"return true;"を追加します。管理画面へのアクセス制限としてBasic認証を設定しておくのが安全です。 ログイン後、管理者情報ページを開くにはDetailPage.class.phpに初期管理者ID取得のコードを追加します。パスワード変更時はChangePasswordAction.class.phpでエラーチェックとパスワードチェックを無効化し、管理者IDを強制的に初期管理者に設定します。変更後はファイルを元に戻し、ログイン確認後、パスワードリマインダを有効化してください。

 

さくらのVPSにUbuntu18.04を入れてSOY CMSを動かした時のメモ

/** 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;`で変更を適用します。

 

SOY CMSの開発元を辞めた後も開発を続ける心境をまとめてみた

/** Geminiが自動生成した概要 **/
筆者はかつてSOY CMSの開発元で働いていたが、開発元が農業事業に転換する際に退職し、以来個人でSOY CMS/Shopの開発を続けている。開発継続の理由は、SOY Shopを利用するユーザーのビジネスを支える責任感と、カスタマイズ依頼による収入で生活が成り立っているため。一方で、開発元の権利所有により公式の場での活動が制限され、SOY CMSの衰退を危惧している。生活のため、新規ユーザー獲得よりも既存ユーザーの売上向上に注力し、新機能紹介プラグインなどを開発。自身のサイト運営を通してSOY CMSの魅力を伝えることで、間接的な普及も目指している。開発元にはGitHubでの公開とユーザー主体の運営への移行を希望し、ユーザーからの寄付や支援に感謝しつつ、非公式ながらも開発を継続する意思を表明している。

 

ストラメノパイルの藻類たち

/** Geminiが自動生成した概要 **/
珪藻や褐藻は、紅藻や緑藻とは異なり、ストラメノパイルというグループに属する。ストラメノパイルは、真核生物が紅藻または緑藻を細胞内に取り込む二次共生によって誕生した。つまり、褐藻の細胞内には、さらに紅藻/緑藻由来の細胞内共生体が存在する。 これは系統樹上では、ストラメノパイルと紅藻/緑藻/陸上植物が大きく離れていることを意味する。大型褐藻であるワカメと陸上植物は、見た目とは裏腹に進化的に遠い関係にある。この複雑な進化の過程は、褐藻類が秘めた大きな可能性を示唆している。

 

植物にとっての葉酸

/** Geminiが自動生成した概要 **/
このブログ記事では、人間とは異なる植物における葉酸の働きに焦点を当てています。人体ではビタミンB12と協働しDNA合成に関わる葉酸ですが、ビタミンB12を持たない植物での役割は不明でした。 シロイヌナズナに関する論文から、葉酸が植物の成長にとって重要な役割を果たすことが判明。光合成を行わない色素体において、葉酸はスクロースから貯蔵用デンプンの合成を抑制します。具体的には、AGPase酵素の働きを抑えることで、光合成産物を貯蔵ではなく、アミノ酸などの合成、つまり植物の活発な成長に回すことを促す働きがあることが示唆されました。葉酸は植物の成長期に不可欠な要素と言えるでしょう。

 

SOY CMSのブログのカレンダープラグインで日毎の記事数に応じてリンクの出力内容を変えてみた

/** Geminiが自動生成した概要 **/
SOY CMSブログのカレンダープラグインを改良し、日毎の記事数に応じてリンク先を変更しました。従来は記事数に関わらず日毎アーカイブページへのリンクでしたが、記事が1件だけの日は記事詳細ページへ直接遷移するように変更。これにより、より自然な導線を実現しました。改良版プラグインはsaitodev.co/soycms/からダウンロード可能です。

 

京都北部の舞鶴全般の土壌の考察

/** Geminiが自動生成した概要 **/
京都北部舞鶴の土壌・水質に関する考察記事です。 グローバック栽培を含む水耕栽培では、原水のpH調整が重要とされます。舞鶴の一部施設では、背後の山が塩基性の斑れい岩地質であるため、原水pHが7.5と高い事例が報告されました。これは、塩基性火成岩に含まれる鉱物がpHを高める可能性を示唆します。 また、この塩基性火成岩地域ではカリウムを含む鉱物が少ないため、露地栽培の土壌分析でカリウム不足の傾向が見られます。栽培者は、川の水からのミネラル供給を考慮しつつも、カリ肥料の意識的な投入が重要であると指摘しています。

 

ワードやエクセルファイルの編集はDropboxフォルダで行おう

/** Geminiが自動生成した概要 **/
IT関連以外の方との共同作業で、Wordファイルの消失を恐れる相手にDropboxの活用を提案した体験談。Dropboxにファイルを置くことで自動保存・共有、バージョン管理による変更履歴の保持が可能となり、ファイル消失や変更差し戻しへの不安を解消できる。バージョン管理はGit利用者には必須の機能で、DropboxのWebサイト上で過去のバージョンに戻せる。Dropbox利用でファイル名の変更によるバージョン管理の手間も省ける。ただし、企業によってはセキュリティ上の懸念からDropboxのような外部サービス利用を禁止している場合もある。競合他社はこうしたサービスを活用し、事務コスト削減で商品開発に注力し、競争優位に立つ可能性があるため、時代遅れにならないようWebサービス導入と個人スキルの向上が重要。

 

シアナミドは土壌の細菌にも効果があるのか?

/** Geminiが自動生成した概要 **/
シアナミドは石灰窒素の主成分で、土壌消毒効果が期待される。酵母のような真核生物だけでなく、細菌にも効果があることが示唆されている。石灰窒素は酸化還元酵素や脱水素酵素を阻害することで、幅広い微生物に影響を与える。ヘアリーベッチはシアナミドを分泌するとされているが、根粒菌との共生など、根圏微生物への影響は限定的であると考えられる。つまり、シアナミド分泌は選択的に行われている可能性があり、そのメカニズムの解明が今後の課題となる。

 

SOY CMSでBootstrap4で作成したブログページ用のページ雛形を追加しました

/** Geminiが自動生成した概要 **/
SOY CMSにBootstrap4ベースのブログページ用テンプレートを追加しました。ダウンロードURL(https://github.com/inunosinsi/soycms/raw/master/cms/common/logic/admin/Site/TemplatePack/bootstrap4.zip)からテンプレートzipファイルをダウンロードし、管理画面からアップロード・インストールすることで利用可能です。手順は添付画像を参照ください。新規サイト作成時にはこのテンプレートがデフォルトで含まれるようになりました。同梱パッケージはsaitodev.co/soycms/ からダウンロードできます。

 

Windows10のApache2.4でVirtual Hostを設ける

/** Geminiが自動生成した概要 **/
Windows10のApache2.4でバーチャルホストを設定する方法。httpd.confの`#Include conf/extra/httpd-vhosts.conf`の#を外し、httpd-vhosts.confを編集する。既存の`<VirtualHost *:80>`の設定に加え、新たな`<VirtualHost *:81>`ブロックを追加し、DocumentRootに任意のディレクトリを指定、アクセス許可を設定する。追加のバーチャルホストは、Listenポートと`<VirtualHost>`ブロックを追加することで設定可能。コマンドプロンプトで`httpd -k restart`を実行しApacheを再起動後、ブラウザで`localhost:81`等にアクセスし、意図したファイルが表示されれば設定完了。

 

SOY Shopで業種に合わせて高度なメール種別を追加してみる

/** Geminiが自動生成した概要 **/
登山用品レンタルサイト「やまどうぐレンタル屋」では、返却完了メールにレビュー割引適用者への催促文面を自動挿入する機能を追加した。まず「メール送信種類追加プラグイン」で「返却完了メール」を作成。次に、`soyshop.order.mail`拡張ポイントを利用したプラグイン`notify_review_discount`を開発。このプラグインの`getMailBody`メソッドで催促文面を返し、`SOYShopPlugin::extension`の第一引数に`soyshop.order.mail.henkyaku` (henkyakuはメールID) を指定することで、返却完了メールへの挿入を実現した。この手法は特定メール種別へのカスタマイズを可能にする。他にも隠れた拡張ポイントが存在し、サイトの特殊な要件に対応できる可能性があるため、必要に応じて開発元に相談するのが良い。

 

SOY Shopで誰が操作したか?を把握したい

/** Geminiが自動生成した概要 **/
SOY Shopはネットショップだけでなく実店舗の販売管理にも利用されるようになり、複数店舗で「誰が注文を受け付けたのか」を把握するニーズが高まった。従来、各店舗のアカウントで管理すれば変更履歴に対応者IDが残るが、カート注文では意図したIDが記録されない問題があった。そこで、カート注文にはシステム側で特定の値を挿入する機能と、対応者IDで検索できるプラグインを追加。これにより、ネット注文と実店舗注文のどちらでも、対応者による注文の絞り込みが可能になった。このアップデートは地味ながらも、業務効率化に繋がる重要な改善である。

 

緑藻のクロレラ

/** Geminiが自動生成した概要 **/
健康食品として知られる緑藻クロレラは、藍藻(シアノバクテリア)とは異なり真核生物である。シアノバクテリアは原核生物で、体全体で光合成を行う。一方、クロレラのような緑藻は、シアノバクテリアを細胞内に取り込み共生することで光合成能を獲得した。この共生により葉緑体が誕生し、植物細胞の基礎となった。 クロレラはシアノバクテリアより多機能であり、塩類集積土壌への影響を理解するには、緑藻についての網羅的な知識が必要となる。

 

IoTによる施設栽培の自動制御の今後は?

/** Geminiが自動生成した概要 **/
ヤンマーは、ICTを活用した自動運転トラクターを発売しました。GPSと慣性航法システムにより、高精度な位置情報と姿勢制御を実現し、直進や旋回などの自動運転を可能にしています。これにより、オペレーターの負担を軽減し、作業効率の向上と燃料消費の削減に貢献します。また、タブレット端末で走行ルートの作成や作業状況の確認ができ、農作業の省力化・省人化を推進します。さらに、有人監視下での遠隔操作にも対応しており、将来的には完全無人化を目指しています。この自動運転トラクターは、スマート農業の実現に向けた重要な一歩となります。

 

石と恐竜から学んだ沢山の知見

/** Geminiが自動生成した概要 **/
著者は、石の観点から生物誕生を考察し、微量要素への理解を深めることから探求を開始。息子の恐竜への興味を機に大量絶滅の歴史を学び、福井恐竜博物館での体験を通じて植物と恐竜の相互進化、そしてコケから藻類へ至る植物の進化過程に再注目します。これら異分野の知見を繋ぎ合わせる中で、技術屋として「異なるジャンルの知識を統合すること」の重要性を再認識。最終的に「堆肥と追肥の質を格段に向上させる」実践的な知見を獲得したと語り、子供の純粋な好奇心が自身の専門分野で大きな成果を生み出した一年間を振り返ります。

 

Go言語でSearch Consoleの値を取得してみる

/** 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日間の検索クエリデータを取得・表示します。

 

UbuntuでさくらのVPS for Windows Serverを使用する

/** Geminiが自動生成した概要 **/
Ubuntu環境で、Remminaを使ってさくらのVPS for Windows Serverに接続する方法を解説。Remminaをインストール後、起動し、新規プロファイルを作成。VPSの接続情報を入力する際、色数をGFX RFX (32 bpp)に変更することが重要。標準の色数のままだと接続エラーとなる。設定保存後、接続ボタンをクリックすることで、Windows Serverのデスクトップ環境にアクセスできる。

 

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

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

 

Go言語でKVSのRedisを使ってみる

/** Geminiが自動生成した概要 **/
Go言語で複数サーバ間のセッション共有を実現するため、KVSのRedisを導入した。UbuntuにRedisをインストール後、Go言語でRedigoパッケージを用いてRedisに接続。`conn.Do("コマンド", "キー", "バリュー")`でRedisを操作し、SETで値を格納、GETで取得、DELで削除できることを確認した。ただし、削除済みキーを取得するとGo側ではエラーが発生する点に注意が必要。Redisを用いることで複数サーバ間のデータ共有が可能となる。

 

Go言語でJSON

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

 

妻がプログラミングをはじめてGo言語とQtでアプリを公開するまで

/** Geminiが自動生成した概要 **/
妻にプログラミングを教えた動機は、事務職希望の女性こそプログラミングスキルを身につけるべきだという考えに基づいている。事務作業はルーティン化しやすい反面、変化への対応が求められる。プログラミングは論理的思考力や問題解決能力を養い、変化への対応力を高める。これらは事務職で役立つだけでなく、キャリアの幅を広げる可能性も秘めている。妻は最初の実験台であり、私自身にとっても新たな言語を教える貴重な経験となった。将来的には、プログラミング教育の普及を通じて、女性がより活躍できる社会を目指したいと考えている。

 

Go言語でGoogle Analyticsのデータをチャットワークに送ってみる

/** Geminiが自動生成した概要 **/
Go言語でGoogle AnalyticsのページビューをChatworkに送信するコードを紹介しています。 Google Analytics APIを用いて前日のページビューと日付を取得し、Chatwork APIで指定のルームに投稿します。 コードでは、認証情報、GAのプロファイルID、ChatworkのルームIDとAPIトークンが必要です。 `Data.Ga.Get`メソッドで前日のページビューを取得し、`Dimensions("ga:date")`で日付も取得します。 取得したデータはChatwork APIのPOSTリクエストで送信されます。 実行にはGoogle API Consoleで取得した認証情報が必要です。 具体的な手順やコードの全体はGitHubリポジトリを参照ください。

 

SOY CMSのブログで年毎に月別アーカイブのリンクを出力するブログブロックを追加しました

/** Geminiが自動生成した概要 **/
SOY CMSのブログで、長年の運用による月別アーカイブの増加でデザインが崩れる問題を解決するブログブロックが追加されました。従来の縦に長いアーカイブ表示を、年毎に折りたたみ可能な形式で出力します。 新しいブロック`b_block:id="archive_every_year"`は、`cms:id="year"`で年を、`cms:id="archive"`で各月のアーカイブリンクを生成し、年毎に異なるIDを割り当てます。これにより、jQuery等で年毎の折りたたみ表示を実装可能になります。表示例では2018年、2017年、2016年と年ごとに月別アーカイブをまとめて表示しています。新機能はパッケージに含まれ、サイト(https://saitodev.co/soycms/)からダウンロードできます。ただし、古いバージョンからのアップデートでは、ブログページ毎のブロック使用設定でarchive_every_yearを有効にする必要があります。

 

ApacheでLet's Encryptの自動更新する為にCertBotを導入した

/** Geminiが自動生成した概要 **/
Let's Encryptの証明書更新を自動化するため、CertBotを導入した。以前設定したcronでの自動更新が機能せず期限切れメールが届いたため、新しい仕組みに切り替えた。CertBot公式サイトの手順でインストール後、Ubuntu 18.04環境でcronを設定し、毎日2時半に`certbot renew --force-renew`を実行するようにした。Apacheの停止と起動を更新前後に行うように設定し、起動は少し遅らせて実行するようにした。

 

SOY Shopで管理画面のロゴ画像等の設定を設けました

/** Geminiが自動生成した概要 **/
SOY Shopの管理画面のロゴとアプリ名を変更できる設定が追加されました。これは、SOY Shopがネットショップだけでなく、在庫管理、顧客管理、見積り作成など多様な業務アプリとして利用されるケースが増えたためです。管理画面のロゴをカスタマイズすることで、納品時の説明の手間を省き、それぞれの用途に合わせた表示を実現します。 従来のネットショップとしての利用に加え、プラグインによる機能拡張で、顧客名簿管理や土壌分析アプリ、パイプハウス施工管理アプリなど、多様な業務システム構築が可能となっています。SOY Shopはネットショップ構築だけでなく、様々なビジネスニーズに対応できる柔軟性を備えたプラットフォームへと進化しています。

 

SOY CMSのブログの説明でWYSIWYGエディタに対応しました

/** Geminiが自動生成した概要 **/
SOY CMSのブログ説明欄がWYSIWYGエディタに対応しました。従来はHTML編集ができなかったブログの説明文を、リッチテキストで記述できるようになりました。 これを実現する「ブログ説明WYSIWYGプラグイン」が新たに開発され、HTMLを許可する`b_block:id="blog_description_raw"`タグも追加されました。このプラグインにより、ブログページの設定画面で、説明文入力欄がWYSIWYGエディタに切り替わり、より表現力豊かなブログ説明を作成できます。 ダウンロードはsaitodev.co/soycms/から可能です。この改良は、以前のカテゴリー詳細表示プラグインへのWYSIWYGエディタ対応に続くものです。

 

SOY ShopでSTORES決済(旧Coineyペイジ支払い)モジュールを作成しました

/** Geminiが自動生成した概要 **/
SOY ShopにCoineyペイジ決済モジュールが追加されました。Coineyは、カードリーダー(Coineyターミナル)を用いた決済に加え、Coineyペイジを利用したオンライン決済にも対応しています。モジュール導入により、SOY Shop上でCoineyペイジへの遷移によるクレジットカード決済が可能になります。実店舗とネットショップ両方でCoineyを利用したい場合に最適です。設定方法はモジュール設定画面に記載されています。Coineyは交通系電子マネー決済にも対応しており、導入によりSuica等の電子マネー決済を簡便に導入できます。Coineyペイジは新機能のため、現時点ではテスト環境は未対応ですが、順次対応予定です。

 

サイトで業者を選ぶのに、何を参考にする?

/** Geminiが自動生成した概要 **/
不用品回収業者を探す際、検索上位の「最安値」を謳う業者に惹かれたが、高額な見積りに遭遇。その後、「くらしのマーケット」で人柄が伝わるコメントや高評価の口コミのある業者を選び、満足のいく結果を得た。 この経験から、価格競争の激しいサービス業のサイト構築においては、価格ではなく人柄をアピールすることの重要性を学んだ。ブログで個性を出し、顧客とのエピソードを交え信頼感を醸成する。最安値を謳うより、他社との差別化を明確にする。そして、顧客との良好な関係構築に基づく口コミ獲得とアフターフォローが、成功の鍵となる。

 

生きていた化石のメタセコイヤ

/** Geminiが自動生成した概要 **/
福井県立恐竜博物館で、恐竜時代の植物に関する本を購入した著者は、「生きていた化石メタセコイヤ」の記述に興味を持つ。メタセコイヤは化石発見後、現存種が見つかった珍しい植物である。帰路、滋賀県マキノ高原のメタセコイヤ並木に立ち寄る。並木は長く、時間の都合で正面から眺めるにとどまったが、間近で葉を観察できた。スギやヒノキと似た針葉樹だが、メタセコイヤの葉はより単調な形状をしている。絶滅種と思われていたメタセコイヤの葉の形は、現存するスギやヒノキに比べて不利だったのかもしれない、と著者は考察する。

 

石炭紀を生きたスギナの祖先は大きかった

/** Geminiが自動生成した概要 **/
かつて巨大だったスギナの祖先は、石炭紀にシダ植物として繁栄した。しかし、恐竜時代になると裸子植物が台頭し、シダ植物は日陰に追いやられたという説がある。スギナは胞子で繁殖するが、これは昆虫に食べられやすく、裸子植物のタネや花粉に比べて不利だったと考えられる。現代、畑でスギナが繁茂するのは、かつての繁栄を取り戻したと言えるかもしれない。人間による無茶な栽培が、皮肉にもスギナの祖先の念願を叶える手伝いをしたのだ。また、スギナが人体に有害なのも、胞子を食べられることに対する抵抗として獲得された形質かもしれない。

 

Go言語でQtを扱ってみる on Ubuntu

/** 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が自動生成した概要 **/
福井県勝山市にある恐竜渓谷ふくい勝山ジオパークの大矢谷白山神社には、巨大な岩塊が存在する。これは、約5km離れた山頂から山体崩壊による岩屑なだれで運ばれてきた安山岩・玄武岩類である。周辺の土壌は黒ボク土ではないが、山を下ると黒ボク土も見られる。神社手前の道路沿いには、岩屑雪崩堆積物の分布を示した看板がある。勝山ジオパークは恐竜化石の発掘地として有名だが、火山活動による山体崩壊地形も特徴の一つである。

 

恐竜渓谷ふくい勝山ジオパーク

/** Geminiが自動生成した概要 **/
福井県勝山市の恐竜渓谷ふくい勝山ジオパークは、日本最大の恐竜博物館を拠点とし、多くの恐竜化石が発掘されている。勝山市は日本最古の地質帯である飛騨帯に位置し、大陸から分離する前の地層から恐竜化石が発見された。これは、かつて日本に恐竜が生息していなかったという定説を覆す大きな発見であった。ジオパーク内では、中生代の恐竜化石だけでなく、新生代の火山活動や九頭竜川の浸食による地形も観察でき、多様な地質学的特徴を学ぶことができる。

 

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

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

 

あの山に海底火山の跡はあるか?

/** Geminiが自動生成した概要 **/
植物の光合成に不可欠な二価鉄と地質の関係から、筆者は「海底火山の痕跡がある山」や「海底火山由来の地質を水源に持つ土地」が植物の生育に特に恵まれていると仮説を提唱。京都高槻で隆起した海底火山地層を見つけた事例や、日本有数の好栽培地とされる徳島が海底火山(三波川変成岩)地質で構成されている点を根拠として示し、自身の仮説を裏付けます。記事では、栽培における水源と地質の重要性を説き、現在地の地質を確認できるオリジナルアプリ「Soil & Geo Logger」も紹介。土地の特性を理解することで、これまで見えなかった有用な発見があることを示唆しています。

 

二価鉄を求めて-後編

/** Geminiが自動生成した概要 **/
この記事は、鉱泉に含まれる二価鉄の起源を探る後編です。前編では山の岩石が水質に影響を与えていることを示唆し、後編では岩石の中でも特にかんらん石に着目しています。かんらん石は鉄やマグネシウムを含む有色鉱物で、苦土やケイ酸の供給源となるだけでなく、二価鉄(Fe2+)を含む(Mg,Fe)2SO4という化学組成を持ちます。かんらん石は玄武岩に含まれ、風化しやすい性質のため、玄武岩質の山の川はかんらん石の影響を受け、二価鉄を含む水質になると考えられます。実際に、含鉄(Ⅱ)の鉱泉の上流は玄武岩質であることが地質図から確認できます。最後に、この考察に基づき、各地の調査結果を次回報告するとしています。

 

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

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

 

Go言語でExcelからデータを取得する。

/** Geminiが自動生成した概要 **/
Go言語でExcelファイル(test.xlsx)のデータを取得するコードの説明です。`tealeg/xlsx`ライブラリを使用し、`OpenFile`でファイルを開き、シート、行、セルを順にループ処理します。`cell.String()`でセルの値を文字列として取得し、出力します。コードは、Excelファイルの全シートの全セル内容を文字列として表示するものです。

 

Go言語で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"を書き込んでいます。

 

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

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

 

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

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

 

Androidの内蔵GPSのキャッシュを削除したい

/** Geminiが自動生成した概要 **/
Android内蔵GPSのキャッシュ問題で、オフライン使用時に以前の緯度経度が返ってくる現象が発生。Geolocation APIのキャッシュ設定変更では解決せず、GPS StatusアプリでGPSキャッシュのリセットを試みた。一時的に改善するも、オフラインでの再発を確認。オンラインでGPS Statusアプリを使用する必要があると推測。Soil & Geoロガーのオフライン使用は5回程度が限度と考えられる。

 

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

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

 

SQLiteで集計をしてみる

/** Geminiが自動生成した概要 **/
SOY ShopのSQLiteデータベースから、姓が「齋藤」の顧客の注文回数を集計する方法を説明しています。`soyshop_order`テーブルと`soyshop_user`テーブルを`user_id`と`id`で結合し、`WHERE`句で名前を絞り込み、`GROUP BY`句でユーザーごとに集計します。注文金額の合計は`SUM(price)`、注文回数は`COUNT(o.id)`で算出できます。結果として、各「齋藤」さんの注文回数と名前が表示されます。

 

Soil & Geoロガーで現在地の土質と地質を調べよう

/** Geminiが自動生成した概要 **/
Android端末で現在地の土壌と地質を調べるWebアプリをHTML5、Service Worker、IndexedDBを用いて開発。GPSで緯度経度を取得し、オフラインでも動作。取得した情報は農研機構の土壌図、産総研の地質図、Googleマップへのリンク生成に利用。現在Android Chromeのみ対応で、ログは10件保持。Service Worker使用による位置情報取得の不具合調査中。開発中のロガー機能の一部公開で、正式版は非公開。機能追加要望や不具合報告は受け付けていない。Githubでソースコード公開中。

 

Go MobileでAndroidアプリの実行までを見てみる

/** Geminiが自動生成した概要 **/
Go Mobileは、GoでAndroidおよびiOSのネイティブアプリを構築するためのツールとライブラリを提供します。クロスコンパイルにより、Goのコードをモバイルプラットフォームのネイティブライブラリに変換し、既存のモバイルアプリに統合することも、スタンドアロンアプリとして構築することも可能です。 OpenGL ES 2や、タッチ、センサーイベントへのアクセスなど、モバイルプラットフォームの機能を活用するためのAPIを提供しています。ただし、Go Mobileはまだ実験的な段階にあり、完全な機能提供には至っていません。詳細な情報や最新の状況は、公式Wikiを参照ください。

 

Ubuntuで突然キーボードの操作が反応しなくなった時の対処のメモ

/** Geminiが自動生成した概要 **/
Ideapad 720SにUbuntuをインストール後、Wi-Fiが使用できない問題が発生。解決策として、追加ドライバのインストールが必要。具体的には、「ソフトウェアとアップデート」→「追加ドライバ」タブから、Broadcomワイヤレスアダプタ用のドライバを選択し適用する。再起動後、Wi-Fiが利用可能になる。 しかし、サスペンドからの復帰時にWi-Fiが切断される問題が残る。 これに対する解決策として、/etc/pm/config.d/configファイルを作成し、特定のコマンドを記述することで、サスペンドからの復帰後もWi-Fiが有効な状態を維持できるようになる。

 

SOY ShopのPAY.JPクレジットカード支払いモジュールでカード情報非通過化対応をしました

/** Geminiが自動生成した概要 **/
SOY ShopのPAY.JPクレジットカード支払いモジュールがカード情報非通過化に対応しました。2018年8月1日以降、加盟店はカード情報を直接扱うことが禁止され、トークン化が必須となりました。 そのため、モジュールはカード情報をPAY.JPサーバーに送信し、トークンを受け取って処理するように改修されました。既存モジュール利用者は、サイトのセキュリティ維持のため早急にバージョンアップが必要です。最新版はサイト(https://saitodev.co/soycms/soyshop/)からダウンロード可能です。詳細は「SOY CMSのバージョンアップについて」を参照ください。

 

Go言語 + kintone + チャットワークでタスクの自動登録アプリを作ってみる3

/** Geminiが自動生成した概要 **/
Go言語でkintoneとチャットワークを連携し、タスク自動登録アプリを作成する過程の3回目。今回はkintoneから取得したデータをチャットワークにタスク登録する処理を実装。kintoneアプリのラベルフィールド値をタスク名として登録するため、`RegisterTaskOnChatWork`関数を追加。この関数でチャットワークAPIを呼び出し、指定のルームにタスクを登録する。コード実行前にkintoneアプリにテストデータを追加し、実行後チャットワークでタスクが登録されていることを確認。データの絞り込みについては省略。

 

Go言語 + kintone + チャットワークでタスクの自動登録アプリを作ってみる2

/** Geminiが自動生成した概要 **/
kintoneアプリで設定した日付にチャットワークへタスクを自動登録するアプリ開発の続き。今回はGo言語でkintone REST APIから取得したJSONデータを扱うための構造体を設計し、マッピングを行った。取得データは「レコード番号」「月」「ラベル」「日」等を含み、これをGoの構造体へ変換することでデータ操作を可能にした。具体的には`Field`構造体でフィールドの型と値を、`Record`構造体でレコード群を表現し、`json.NewDecoder`を用いてJSONをデコードした。これにより、ラベル名等の値をプログラムから参照できるようになった。次回は取得値を用いてチャットワークへのタスク登録を行う。

 

Go言語 + kintone + チャットワークでタスクの自動登録アプリを作ってみる1

/** Geminiが自動生成した概要 **/
kintoneとチャットワークを連携し、タスクを自動登録するアプリをGo言語で開発する過程を説明。kintoneにアプリを作成し、Go言語でkintoneのREST APIを使用してデータを取得するコードを紹介。APIキー、ID、パスワードを用いて認証し、JSON形式のデータを取得することに成功。今後の課題として、取得したJSONデータをGo言語で扱うための構造体の作成が挙げられている。

 

Go言語 + Selenium + Agoutiでテスト自動化

/** Geminiが自動生成した概要 **/
agoutiはGo言語用のAcceptanceテストフレームワークです。Selenium WebDriverをラップし、CSSセレクタを用いてページ要素にアクセス、操作できます。`agouti.ChromeDriver()`でChromeDriverを起動、`driver.NewPage()`で新しいページを開き、`page.Navigate()`で指定URLへ遷移します。`page.HTML()`でHTMLソースを取得、`page.FindByButton()`でボタン要素を見つけ、`btn.Submit()`でフォームを送信できます。`agouti.Browser("chrome")` でブラウザを指定可能です。 主にWebアプリケーションのUIテストを自動化するために使用され、ユーザー操作をシミュレートして期待通りの動作をするか検証できます。

 

Go言語 + Selenium + Agoutiで自動でGoogle検索

/** Geminiが自動生成した概要 **/
`agouti`はGo言語用のAcceptance Testingフレームワークで、ブラウザの自動操作を可能にします。`ChromeDriver()`でChromeドライバーを起動し、`NewPage()`で新しいページを開きます。`Navigate()`で指定URLへ遷移し、`FindByID()`や`FindByButton()`で要素を取得。`Fill()`でフォーム入力、`Submit()`でボタン押下など、ブラウザ操作をコードで表現できます。`godoc`にはAPIの詳細が記載されており、`Selection`インタフェースが要素操作の中核を担い、様々な操作メソッドを提供しています。エラー処理も組み込まれており、`err != nil`で各操作の成否を確認できます。

 

Go言語 + Selenium + Agoutiでブラウザ操作の自動化

/** Geminiが自動生成した概要 **/
Go言語でSeleniumとAgoutiを使ってChromeブラウザを自動操作する方法を解説しています。まずJavaとSelenium Serverをインストールし、起動確認を行います。次にChromeドライバーをインストールし、環境変数Pathにドライバのパスを追加します。Go言語のパッケージ管理ツールgo getでAgoutiパッケージを取得後、サンプルコードを作成・実行します。サンプルコードでは、AgoutiでChromeDriverを起動し、新しいページを開いてGoogleのトップページに遷移させる処理を行っています。実行結果として、Chromeブラウザが起動しGoogleのトップページが表示されます。

 

褐色腐朽菌のいるところではリグニンはどうなるか?

/** Geminiが自動生成した概要 **/
水耕栽培に使用したヤシガラ培地に褐色腐朽菌が生えた場合、堆肥としての利用価値が問われる。褐色腐朽菌はリグニンを分解せず酸化型リグニンに変性させるため、土に馴染む断片化リグニンは少ない。そのため、堆肥としてそのまま利用する場合は、排水性向上等の効果は期待できるものの、土壌への馴染みは低い。より良質な堆肥にするには、乾燥・殺菌後、白色腐朽菌を繁殖させるか、おがくずと混ぜて撥水性を弱める方法が考えられる。培地にはコケも生えているため有機物量は多い。ただし、褐色腐朽菌は炭素量を多く残すため、酸化型リグニンの量は重要でない可能性もある。

 

Go言語でクライアントのレスポンスを見る

/** Geminiが自動生成した概要 **/
Go言語でHTTPクライアントを作成し、サーバーからのレスポンスを確認する方法を解説しています。`http.Get`でサーバーにリクエストを送信し、`httputil.DumpResponse`でレスポンス内容を人間が読める形式で取得します。サンプルコードでは、`localhost:8889`で動作するサーバーにアクセスし、レスポンスのヘッダーとボディを出力しています。出力例から、ステータスコード(200 OK)、コンテンツ長、コンテンツタイプ、日付、HTML本体などが確認できます。これにより、クライアントがサーバーからどのようなデータを受け取っているかを詳細に把握できます。

 

Go言語でサーバを立ち上げる

/** Geminiが自動生成した概要 **/
Go言語でlocalhost:8889で動作するシンプルなWebサーバを作成する手順と動作確認方法の説明です。 `server.go` はルートパスへのアクセスに対し、リクエスト内容をコンソールに出力し、"hello world"を含むHTMLをレスポンスとして返します。`httputil.DumpRequest`でリクエスト内容をダンプし、`fmt.Println`でコンソールに表示、`io.WriteString`でレスポンスを書き込みます。`http.ListenAndServe`でサーバを起動し、ブラウザでアクセスすると"hello world"が表示されます。同時にコンソールにはリクエストヘッダ情報(例:GETメソッド、Host、User-Agentなど)が出力されます。

 

南房総族よりビワが届いた2018

/** Geminiが自動生成した概要 **/
2018年に南房総の知人から枇杷が届いた。昨年にも送られてきており、今年も立派な枇杷が木盆に載せられた写真と共に紹介されている。送ってくれた人物は「ナイスガイ」と表現され、枇杷の味は言葉では言い表せないほど素晴らしいようだ。筆者は「南房総族」を自称し、ブログ「酒と泪とアイリス(花)とびわ(果樹)ぼく南房総族」を運営しているが、更新は2016年で止まっている。ブログでは枇杷の栽培や南房総での生活について綴られていると推測される。

 

kintoneで指定の個所だけ印刷範囲にしてみる

/** Geminiが自動生成した概要 **/
kintoneでカレンダーアプリを印刷する際、標準機能ではカレンダー部分のみを選択できない問題を、jQueryプラグイン「printElement」を用いて解決する方法を紹介。kintoneアプリにカレンダー形式の一覧ページを作成し、printElementとjQueryを読み込むよう設定。カスタマイズ用JavaScriptで印刷ボタンを配置し、クリックイベントにprintElementでカレンダー部分(id="view-list-data-gaia")を指定。これにより、ヘッダー/フッターを除くカレンダー部分のみが印刷範囲となる。kintoneのカスタマイズ性の高さとjQueryプラグインの活用例を示している。

 

Go言語でファイルの読み込み

/** Geminiが自動生成した概要 **/
Go言語で`template/header.txt`ファイルを読み込む方法を説明しています。`os.Open`関数でファイルを開き、エラー処理も実装しています。`defer file.Close()`で確実にファイルを閉じます。`ioutil.ReadAll`関数でファイルの内容をバイトスライス`content`に読み込み、`string(content)`で文字列`html`に変換します。最後に`fmt.Println(html)`でファイルの内容を表示します。 添付画像は`header.txt`の内容("string1")が表示された実行結果を示しています。

 

Go言語でhtmlからの文字の部分的取得

/** 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` ファイルに保存されます。

 

Go言語で特定のサイトの複数の画像を取得する

/** Geminiが自動生成した概要 **/
Go言語で特定サイトから複数画像を取得する処理を解説しています。まず、対象ページのHTMLを取得し、正規表現を用いて`img`タグの`src`属性から画像パスを抽出します。抽出したパスは`/site/files`を含むものだけをスライスに格納します。次に、スライス内の各パスに対して、サイトのドメインを付加して完全なURLを生成し、`http.Get`で画像データを取得します。取得したデータは`ioutil.ReadAll`でバイト型に変換後、ファイル名を取得するためにパスの最後の`/`以降の文字列をファイル名として新規ファイルを作成し、画像データを書き込み保存します。

 

Go言語でHTMLのイメージタグから画像を取得

/** 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`でファイルに書き込んでいます。

 

SOY CMSのブログブロックの使用を制限して、ブログページの高速化

/** Geminiが自動生成した概要 **/
Googleは常時SSL化をランキング要因の一つとしています。つまり、サイトがHTTPSを使用しているかどうかは、検索結果の順位に影響を与えます。しかし、その影響は軽微であり、他のSEO対策と比べると優先度は低いと言えるでしょう。 常時SSL化の主なメリットはセキュリティの向上です。ユーザーの情報を暗号化することで、盗聴や改ざんのリスクを軽減できます。これはユーザーの信頼感向上に繋がり、間接的にSEO効果に繋がる可能性があります。 また、常時SSL化によってサイトの表示速度が向上する可能性も指摘されています。Googleはサイトの表示速度もランキング要因としているため、結果的にSEOに良い影響を与える可能性があります。 しかし、常時SSL化自体が劇的なSEO効果をもたらすわけではないので、他の重要なSEO対策を疎かにしてまで優先するべきではありません。コンテンツの質やユーザーエクスペリエンスの向上など、他のSEO対策と並行して行うことが重要です。

 

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

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

 

Go言語でファイル作成

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

 

やまどうぐレンタル屋さんで顧客関連管理の機能の強化を行いました

/** Geminiが自動生成した概要 **/
登山用品レンタルの「やまどうぐレンタル屋」は、SOY Shopで運営しつつSalesforceを用いて顧客管理を行っていたが、SOY Shop内で完結させたいという要望からCRM機能強化を実施。オーダーカスタムフィールドや拡張ポイントを活用し、レンタル特有の発送・返却管理、納品書・検品書出力管理、配送状況連携、電話注文対応、実店舗受取管理などをSOY Shop内で実現。プラグインによる拡張のみでSalesforce並みの機能を実現し、本体のカスタマイズは行わずバージョンアップへの影響を排除。管理画面の表示速度最適化も実施。この機能強化は拡張ポイントを活用したプラグイン作成で再現可能。

 

今年も長野県栄村小滝集落のコメをいただきました

/** Geminiが自動生成した概要 **/
長野県栄村小滝集落産の極上米「コタキホワイト」を食した著者は、炊き上がった米粒の輝きと美味しさの関連性について考察する。粒の光沢は、表面の傷が少ないこと、そしてデンプンが水を吸って張りを出すことによるのではないかと推測。収穫機械の性能や米とぎの影響を考慮し、米粒自身の性質、特にデンプンの吸水性に注目する。デンプン量と食味の関係、地質や栽培技術との関連にも触れ、最終的に「米飯粒内の糊化進行過程の可視化」という論文に辿り着き、更なる考察を次回に持ち越す。

 

妻にプログラミングを教えることにした-続き

/** Geminiが自動生成した概要 **/
プログラマは、システム不具合の多くが「想定外の使い方」に起因するため、電話での口頭説明ではなく詳細な情報提供を求める。これは、プログラミングが物理法則に縛られず、思考がそのまま反映されるため、想定外の動作が顕著な不具合となる特性による。効率的な情報伝達と問題解決のため、プログラマはコーディング規約、高機能エディタ、テスト自動化、タスク管理ツール、オープンソースといった手段を活用し、思考すべき点とそうでない点を明確化し、再発防止と情報共有を促進する。妻にプログラミングを教えるのは、これらの思考プロセスと情報伝達の重要性を体験させ、世界中の資産を活用する術を学ばせるためである。

 

Apache上で利用しているLet's Encryptの失効

/** Geminiが自動生成した概要 **/
旧サーバーでLet's Encrypt証明書の失効、新サーバーで新規発行の手順を解説。 旧サーバーでは、`certbot`を使わず、`/opt/letsencrypt/letsencrypt-auto revoke`コマンドで証明書を失効、`delete`コマンドで関連ファイルを削除。ドメイン名(saitodev.co)を指定して実行。 新サーバーでの証明書発行手順は別記事を参照。

 

Go言語でHTTPのPOST

/** Geminiが自動生成した概要 **/
Go言語でChatWork APIを用いてマイチャットにメッセージをPOSTする手順を紹介。 `http.NewRequest`でPOSTリクエストを作成し、ChatWork APIトークンをヘッダーに設定、`http.DefaultClient.Do`でリクエストを送信する。記事では"GOからのテスト投稿"というメッセージを送り、レスポンスコード200を確認することで成功を確認している。 また、ChatWork APIのルームID、トークンの取得方法については別記事を参照している。

 

Go言語でHTTPのGET

/** Geminiが自動生成した概要 **/
Go言語でHTTP GETリクエストを実行する方法を解説しています。`net/http`パッケージの`Get`関数で指定URLにアクセスし、レスポンスを取得します。`ioutil.ReadAll`でレスポンスボディを読み込み、`string`型に変換してHTML内容を表示します。エラー処理も実装し、最後に`response.Body.Close()`でクローズします。記事では、各段階の出力を示しながら、最終的にHTMLを取得するコードを完成させています。

 

SOY CMSで一つのページで複数のブログページのカテゴリ一覧を出力してみる

/** 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が自動生成した概要 **/
妻にプログラミングを教えるのは、SOY Shop開発への協力を期待しているからではなく、プログラミングを通して「相手に的確に指示を伝える能力」を身につけてほしいからだ。事務職希望者が多い一方、経営者側は事務作業をコストと捉える現状がある。プログラミングは、パソコンを部下に見立て、明確な指示を出す訓練となる。これは事務作業の効率化にも繋がる。また、電話での行き違いによる業務の非効率性を指摘し、プログラミング的思考で事前に情報を整理し伝えることの重要性を説く。最終的には、どんな業種でも発生する事務作業を効率化し、円滑なコミュニケーション能力を養うことが目的である。

 

Ryzen搭載のノートパソコンにUbuntuのインストールで苦戦した

/** Geminiが自動生成した概要 **/
Ryzen 5 2500U APU搭載のノートPCにUbuntuをインストールすると、フリーズが発生し失敗した。翌朝、研究すると、Ryzen APUにはLinuxカーネル4.15のAMD GPUドライバーが必要であることが判明。Ubuntu 18.04のβ版イメージを作成し、UEFIから起動させるとインストールが成功した。現在は問題なく動作するが、正式版がリリースされる4月末までは仕事を保留する。

 

地衣類という菌たちの巧みな生き方

/** Geminiが自動生成した概要 **/
地衣類は、光合成を行うシアノバクテリアまたは緑藻と共生している菌類です。地衣類は、菌が光合成生物に必要な栄養を提供し、光合成生物が合成した産物を菌に返します。この共生関係により、地衣類は木の幹などの栄養分に乏しい環境でも生存できます。 地衣類の光合成にはマンガンが必要ですが、地衣類は宿主からマンガンを吸収していると考えられます。これは、死んだ幹に残った微量元素を活用している可能性を示唆しています。つまり、地衣類は木の残りを再利用することで、山の生態系における栄養循環に貢献している可能性があります。

 

プラグイン毎に詳細画面を持たせる拡張ポイントsoyshop.config.php

/** 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パラメータを追加してリダイレクトする際に使用します。

 

プラグイン毎の詳細画面へのリンクの拡張ポイントsoyshop.info.php

/** 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")`のように指定することで、注文ステータスが「発送済み」の注文一覧ページへのリンクを生成できます。

 

Jenkinsらをバージョンアップした後、エラーで動かなくなった時の対処

/** Geminiが自動生成した概要 **/
Jenkinsの動作が遅くなった場合、まずジョブの実行履歴を確認し、遅いジョブを特定します。次に、そのジョブの設定やビルド手順を見直し、不要な処理やリソースを消費する操作がないか確認します。 Jenkins自体の負荷が高い場合は、プラグインの無効化、古いビルドの削除、ディスク容量の確保などを行います。それでも改善しない場合は、Jenkinsの再起動や、リソースの増強を検討します。 パフォーマンス監視ツールを利用し、CPU、メモリ、ディスクI/Oなどを監視することで、ボトルネックの特定に役立ちます。

 

管理画面の新着に項目を追加する拡張ポイントsoyshop.admin.top.php

/** Geminiが自動生成した概要 **/
SOY Shop管理画面の新着に項目を追加できる拡張ポイント「soyshop.admin.top.php」について解説。インターフェースには、表示可否を制御する`allowDisplay`、タイトルを設定する`getTitle`、コンテンツを設定する`getContent`、リンクURLを設定する`getLink`、リンクテキストを設定する`getLinkTitle`のメソッドが存在する。各メソッドの出力箇所は画像で示され、ショップ情報表示プラグインを例に挙げて説明。`getLink`でURLを指定すると、`getLinkTitle`のテキストがリンク化される。

 

管理画面の注文検索の拡張ポイントsoyshop.order.search.php

/** Geminiが自動生成した概要 **/
管理画面の注文検索フォームを拡張するsoyshop.order.search.php拡張ポイントの説明。searchItemsメソッドでフォームに検索項目を追加し、setParameterメソッドで対応するSQLサブクエリを指定する。 searchItemsはラベルとフォーム要素を配列で返し、フォームのname属性は"search[customs][モジュールID][ユニークなパラメータ]"形式。setParameterは"id IN (SELECT ...)"形式のサブクエリを返す。伝票番号記録プラグインのコードを読むと理解が深まる。

 

開聞岳から降ってきた恵み

/** Geminiが自動生成した概要 **/
開聞岳付近の畑の土壌は、火山噴火由来の小石が多く含まれる未熟黒ボク土である。小石は安山岩質で、開聞岳の山頂付近に形成された溶岩ドームの噴火によるものと考えられる。安山岩は玄武岩より粘性が高く、開聞岳の安山岩は特に粘性が強いと推測される。安山岩の組成は斜長石が多く、雲母、角閃石を含み、石英は少ない。これらの鉱物は風化によって粘土やミネラルを供給するため、土壌にとって有益である。周辺の山の地質を理解することで、遠方でも土壌に関する情報を得る能力が向上する。

 

配送の拡張ポイントsoyshop.delivery.php

/** Geminiが自動生成した概要 **/
SOY Shopの配送拡張ポイント`soyshop.delivery.php`について解説。インターフェースは`onSelect`、`getName`、`getDescription`、`getPrice`など、支払い拡張ポイントと類似のメソッドを持つ。`onSelect`~`getPrice`はカートでの配送方法選択時の動作を定義し、`edit`と`update`はマイページの注文詳細編集で使用される。`edit`は編集フォームを出力するメソッドで、`update`はフォーム送信時の更新処理を行う。標準の配送モジュール(delivery_normal)のコードを読むことで、具体的な実装方法を理解できる。

 

支払いの拡張ポイントsoyshop.payment.php

/** Geminiが自動生成した概要 **/
SOY Shopの支払い拡張ポイント(soyshop.payment.php)は、`onSelect`、`getName`、`getDescription`、`getPrice`、`getMethod`、`hasOptionPage`、`getOptionPage`、`onPostOptionPage`などのメソッドを提供し、支払い方法のカスタマイズを可能にする。各メソッドは支払い方法名や説明、価格、追加ページの有無などを制御する。例として、クレジットカード決済では`hasOptionPage`でtrueを返し、`getOptionPage`で入力フォームを提供する。`getMethod`はカート内容に応じて支払い方法の表示を制御するが、最後のプラグインで全てのモジュールを制御する点に注意が必要。

 

SOY Shopプラグインの拡張ポイントについて

/** 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/以下にインターフェース定義がある。

 

SOY Shopの注文状態と支払状況でフラグを追加できる拡張ポイントを設けました

/** Geminiが自動生成した概要 **/
SOY Shopの注文状態・支払状況の拡張ポイントが追加されました。従来の注文状態変更項目の柔軟性不足を解消するため、プラグインで項目を追加できるようになりました。例えば、レンタル業務用の返送伝票番号記録プラグインでは、注文状態に「返却済み」フラグを追加できます。追加方法は、在庫確認中状態追加プラグイン(add_status_check_stock_in)を複製し、soyshop.order.status.php内のstatusItem()またはpaymentStatusItem()関数を編集します。配列で任意の数字とフラグ名を指定することで、注文状態と支払状況に項目を追加できます。拡張ポイントに関する詳細は別記事を参照ください。最新版はサイトからダウンロード可能です。

 

SOY CMSの開発秘話前編

/** Geminiが自動生成した概要 **/
SOY CMSは、WordPressなどと機能比較されがちですが、その真価は開発背景にあります。京都大学での業務アプリ開発で度重なる仕様変更によるプロジェクト炎上を経験したことがきっかけで、デザイナーとプログラマーの作業分離を目指しました。 SOY2フレームワークを基盤とし、プログラマーが機能をHTMLタグ(`cms:id`など)として提供し、デザイナーはそれを自身のデザインに組み込む形式を採用。これにより、デザイナーはプログラム知識なしにサイトの構築や変更を容易に行え、プログラマーも独立して修正できる。SOY CMSは、開発時や運営後のWebデザイナーの負担を最小限に抑えることを最大の目標としています。

 

Jenkinsの動作が遅くなった時の対処

/** Geminiが自動生成した概要 **/
Jenkinsの動作が遅くなり、ビルドの失敗が増えたため調査したところ、ビルドログの蓄積が原因と判明。ログディレクトリ(/var/lib/jenkins/jobs/プロジェクト名/builds/)内の古いログを削除することでJenkinsの動作は改善された。 ログ問題の恒久的な解決策として、Discard Old Build pluginをインストール。プロジェクト設定のビルド後の処理で、ビルドログの保存数を10個に制限する設定を追加し、様子を見ることにした。

 

植物はどのようにしてシリカを吸収するか?

/** Geminiが自動生成した概要 **/
植物は土壌中からケイ酸を吸収し、強度を高める。吸収の形態はSi(OH)4で、これはオルトケイ酸(H4SiO4)が溶解した形である。オルトケイ酸はかんらん石などの鉱物に含まれ、苦鉄質地質の地域ではイネの倒伏が少ない事例と関連付けられる。一方、二酸化ケイ素(シリカ)の溶解による吸収は限定的と考えられる。ケイ酸塩からの吸収は、酸による反応が推測されるが、詳細は不明。可溶性ケイ酸はアルミニウム障害も軽減する効果を持つ。つまり、イネのケイ酸吸収は、土壌中の鉱物組成、特にかんらん石の存在と関連し、可溶性ケイ酸の形で吸収されることで、植物の強度向上に寄与する。

 

植物が利用できるシリカはどこにある?

/** Geminiが自動生成した概要 **/
台風で倒伏しないイネの茎の強度向上にシリカが注目される一方、玄武岩質地質ではシリカ濃度が低いという矛盾から、土壌中の「ケイ酸塩の構造」に焦点を当てる記事。ケイ酸塩を、単独型のネソケイ酸塩(かんらん石)から、直鎖・複鎖型のイノケイ酸塩(輝石・角閃石)、平面的網状型のフィロケイ酸塩(粘土鉱物)、そして立体的網状型のテクトケイ酸塩(長石・石英)まで、5つの主要な構造に分類し、それぞれの結合形態、含有ミネラル、含水性、風化しやすさといった特徴を詳細に解説。植物が吸収しやすいシリカは、単純な土壌中の量だけでなく、その具体的なケイ酸塩構造が鍵であることを示唆します。

 

台風でも倒伏しないイネ

/** Geminiが自動生成した概要 **/
長野県栄村小滝集落では、特別な農法により高品質な米が栽培され、台風による倒伏被害もほとんど見られなかった。倒伏した一部の水田と健全な水田の違いは、赤い粘土の客土の有無であった。イネの倒伏耐性向上に有効とされるシリカに着目すると、赤い粘土に含まれる頑火輝石やかんらん石などの鉱物がケイ酸供給源となる可能性がある。これらの鉱物は玄武岩質岩石に多く含まれ、二価鉄やマグネシウムも豊富に含むため、光合成促進にも寄与すると考えられる。赤い粘土に含まれる成分が、米の品質向上と倒伏耐性の鍵を握っていると考えられるため、イネとシリカの関係性について更なる調査が必要である。ただし、玄武岩質土壌はカリウムが少なく、鉄吸収が阻害されると秋落ちが発生しやすい点に注意が必要。

 

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

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

 

粘土鉱物を理解する旅3

/** Geminiが自動生成した概要 **/
ブログ記事「粘土鉱物を理解する旅3」では、栽培に有用な粘土鉱物がアルミノ珪酸塩である長石が変質したものと解説しています。長石に含まれるアルミニウムは高い結合力で土壌中の腐植を蓄積し、これにより土壌の物理性が高まり、栽培に有利に働きます。火成岩の多く、特に安山岩や玄武岩には長石が豊富に含まれるため、これら由来の土壌は栽培に適していると言えます。実際に、関東ローム層は富士山由来の玄武岩質的安山岩の火山灰で形成されており、この理論が土壌のメカニズム解明に繋がることを示しています。

 

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

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

 

php-webdriverでconfirmダイアログをクリックする

/** Geminiが自動生成した概要 **/
php-webdriverでconfirmダイアログのボタンをクリックする方法について解説。`$driver->switchTo()->alert()`でダイアログを取得し、`$dialog->accept()`でOKボタン、`$dialog->dismiss()`でキャンセルボタンをクリックできる。例として「退会する」リンククリック時に表示されるconfirmダイアログを操作するコードを紹介。`findElement`でリンク要素を取得し`click`でクリック、その後`switchTo()->alert()`と`accept()`でOKボタンクリックを処理する。

 

ファームプロさんから緑茶の品種で作られた紅茶の茶葉を頂きました

/** Geminiが自動生成した概要 **/
ファームプロから緑茶品種で作った紅茶を頂いた。緑茶は未発酵茶、紅茶は発酵茶で、発酵は葉の酵素による。茶葉を揉むことでタンニンが紅茶特有の色や香りに変化する。ファームプロによると、緑茶品種は三番茶でタンニンが増加し、旨味成分テアニンも多い。この三番茶を使うことで味、見た目、香りの良い紅茶ができる。試飲したところ、緑茶の旨味と紅茶の特徴を併せ持つ仕上がりだった。テアニンはタンニンの前駆体で、遮光でタンニンへの変化が抑えられる。三番茶は遮光しないため、テアニン含有量が多い。発酵でタンニンが分解されてもテアニンには戻らない。紅茶の呈色成分はテルフラビン等、香気成分はリナロール等。

 

さくらVPSにJenkinsを入れて、Selenium + php-webdriverを動かせるようにする

/** Geminiが自動生成した概要 **/
さくらVPS(Ubuntu 16.04)にJenkinsを導入し、Seleniumとphp-webdriverでUIテストを自動化する方法を紹介。Jenkinsインストール後、初期設定、ジョブ作成、Git連携、ビルドトリガー設定、シェルスクリプト実行設定、メール通知設定を行い、Apacheの設定を調整してテスト実行環境を構築。15分毎にGitリポジトリをポーリングし、変更があれば自動的にテストを実行、結果をメールで通知。これにより、月700円のVPS費用で継続的なUIテストを実現。

 

さくらVPS上でSeleniumとphp-webdriverを利用する

/** 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の自動起動設定は今後の課題。

 

Seleniumとphp-webdriverでUIテストの自動化

/** 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を正常に操作できるようになり、テスト自動化が実行可能になります。

 

SOY ShopでFacebookログインプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop用Facebookログインプラグインが開発されました。管理画面で設定後、マイページログイン画面にFacebookログインボタンが表示されます。クリックするとFacebookログイン画面が開き、ログイン後にSOY Shopで新規会員登録とログインが行われます。既に登録済みの場合はログインのみ。シンプルな機能ですが、拡張性も考慮されています。プラグインはsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

SOY ShopでLINE Loginプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop用LINEログインプラグインが開発されました。このプラグインをインストール・設定すると、マイページログイン画面にLINEログインボタンが表示されます。ボタンクリックでLINEログイン画面に遷移し、ログインするとSOY Shopサイトにリダイレクトされ、新規会員登録とログインが自動で行われます。既にLINE連携済みの会員はログインのみ行われます。現在は基本的なログイン機能のみですが、今後の拡張が予定されています。プラグインはsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

土壌分析アプリSoil3 on SOY Shop

/** Geminiが自動生成した概要 **/
長野県栄村小滝集落は、標高が高く冬季の積雪が多い地域。良質な米作りには土壌の理解が不可欠で、土壌図インベントリーとシームレス地質図を活用。インベントリーからは「黒ボク土」と判明し、保水性が高い反面、養分保持力が低い特性が明らかに。地質図からは、付近に蛇紋岩が多く分布し、土壌が弱アルカリ性であると推測。これらの情報から、小滝集落の土壌は水はけがよく、ミネラル豊富な一方、窒素が流亡しやすい特徴を持つと結論づけ、適切な施肥設計の必要性を示唆した。実際、小滝集落の土壌はpH7.0~7.2を示し、分析結果と合致した。この事例は、公開データを用いた土壌分析の有効性を示している。

 

Node.jsとSocket.IOでリアルタイムのチャットアプリを作ってみる

/** Geminiが自動生成した概要 **/
Node.jsとSocket.IOを用いたチャットアプリ構築後、Let's Encryptで常時SSL化する方法を解説。自己署名証明書ではブラウザ警告が出るため、無料のLet's Encryptを利用。Certbotによる証明書取得手順、Nginxの設定変更(SSL設定追加、httpトラフィックのhttpsリダイレクト)を説明。 Socket.IOのサーバー側コード修正では、httpsオプションを追加し、取得した証明書と秘密鍵を指定。これにより、チャットアプリがセキュアなhttps接続で利用可能になる。

 

SOY ShopでSOY CMS連携プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSとSOY Shopの連携強化を図るプラグインが開発されました。従来、SOY CMSのブログパーツは標準ページでは利用できませんでしたが、最近のアップデートで可能になりました。今回さらに、SOY Shop側でSOY CMSの`cms:module`を利用できるプラグインが追加され、相互運用性が向上しました。これにより、ショップページでブログパーツや自作モジュールを容易に表示できるようになります。 この機能を利用するには、SOY CMSとSOY Shop両方のバージョンアップが必要です。 有料ブログ、販促ブログ付きネットショップ、カタログサイト構築など、多様な連携事例も紹介されています。

 

SOYCMS検索結果ブロックプラグインでページャを追加しました

/** Geminiが自動生成した概要 **/
SOY CMSの検索結果ブロックプラグインにページャ機能が追加されました。これにより、複数ページにわたる検索結果を容易に閲覧できるようになりました。以前の記事で紹介されたb_blockの問題を解決するcms:module="blogparts"に続き、今回は検索結果の質向上を目指した改善です。ページャはプラグインの詳細にあるサンプルコードを貼り付けるだけで設置可能。また、Gravatar連携プラグインと併用することで、複数人運営ブログでの表示も改善されます。これらのアップデートを含むパッケージはsaitodev.co/soycms/からダウンロードできます。

 

SOY CMSで標準ページでも任意のブログページのb_blockを使用できるようにした

/** Geminiが自動生成した概要 **/
SOY CMSの標準ページでブログページのサイドバー(b_block)を使えるようにするモジュールを追加しました。標準では検索結果ページなどでb_blockが使えず、不便でした。このモジュールは `<!-- cms:module="common.blogparts" cms:blog="ブログID" -->` で囲むだけで、指定ブログのb_blockが使用可能になります。ブログIDはブログ詳細画面のURL末尾から取得します。カテゴリ一覧、月別アーカイブ、最近の記事/コメント/トラックバック一覧などに対応。Gravatar連携は別プラグイン推奨。パッケージはsaitodev.co/soycms/からダウンロード可能です。

 

ApacheサーバでBrotliを使用してみた

/** Geminiが自動生成した概要 **/
常時SSL化はSEO上効果がある。GoogleはHTTPSをランキングシグナルとして使用しており、サイトのセキュリティ向上はユーザー体験の向上に繋がるため、間接的にSEO効果が見込める。ただし、HTTPS化自体が劇的なランキング上昇をもたらすわけではない。相対的にHTTPサイトより優位になる程度の影響と考えられる。また、サイト表示速度の向上も期待できるが、適切な設定が必要。常時SSL化は必須事項となりつつあり、SEO対策としてだけでなく、セキュリティ向上とユーザーへの信頼感醸成という観点からも重要である。

 

南房総族よりビワが届いた2017

/** Geminiが自動生成した概要 **/
2017年に南房総の知人から再び枇杷が届いた。昨年も送ってくれた彼については、過去のブログ記事「南房総族よりビワが届いた」で触れている。届いた枇杷は大きく、器に3つしか入らないほどだった。味は言葉で表現するのが難しく、ここでは控えるが、非常に美味しかったようだ。送り主のブログ「酒と泪とアイリス(花)とびわ(果樹)ぼく南房総族」は2016年で更新が止まっているものの、枇杷栽培の様子などが伺えるので、ぜひ見てほしいと勧めている。

 

Googleの圧縮アルゴリズムBrotliを試してみた

/** Geminiが自動生成した概要 **/
Brotli圧縮を試した結果、gzipよりも高い圧縮率を実現できることが分かり、サーバーでの利用を検討。Ubuntu 18.04ではaptでbrotliをインストール可能。画像ファイルの圧縮テストでは、オリジナル870.3kBに対し、Brotliは856.8kB、gzipは861.0kBと、Brotliが僅かに優れていた。圧縮コマンドは`brotli 元ファイル -o 圧縮ファイル`、解凍は`brotli -d 圧縮ファイル -o 元ファイル`。次の記事では、ApacheサーバーでBrotliを利用する方法を解説する。

 

注目の資材、グリーンタフについて知ろう

/** Geminiが自動生成した概要 **/
本記事は、大阪市立自然史博物館の展示を機に、土壌改良材として注目される「グリーンタフ」の特性を探求します。グリーンタフは、火山灰が堆積した凝灰岩(流紋岩質軽石凝灰岩)で、大谷石に代表される多孔質かつ淡い緑色の資材です。二酸化ケイ素が豊富でシラスに近い土質を持ち、重粘土の土を軽くしたり、多孔質性で微生物増殖を促したりする土壌改良効果が期待されます。追記では、緑色凝灰岩として緑泥石を主成分とし、金属鉱床を含む場合もあると説明。その効果は二酸化ケイ素含有量に左右されるとし、採掘のしやすさが利用の鍵となると考察しています。

 

大阪市内でシラスと出会った

/** Geminiが自動生成した概要 **/
大阪の鉱物展で鹿児島のシラスを初めて間近に観察し、その白さに驚いた著者は、シラスの成分を考察する。火山灰であるシラスは二酸化ケイ素を多く含み、石英とカリ長石が主成分だと推測。桜島の火山灰と比較しても白さが際立ち、石灰要素はほぼ無いと考える。酸性岩の組成から、石英とカリ長石が大半を占め、残りを斜長石が占める構成と推定。これらの鉱物の微細なものがシラスを構成しているため、保水性が低く排水性が高い。また、カリを多く含むため、カリを必要とするサツマイモ栽培に適していることを説明。長石由来の粘土は腐植を蓄積しにくい点にも触れ、火山灰だから良い土壌とは限らないと結論づけている。そして、作物によって適した火山灰の種類が異なると指摘する。

 

五代松鍾乳洞付近にあった深成岩

/** Geminiが自動生成した概要 **/
五代松鍾乳洞付近の鉱山はスカルン鉱床で、鉄や黄水晶、灰鉄輝石が産出する。黄水晶は石英に角閃石が混じることで生成される。付近に花崗岩らしき石が多く見られ、閃緑岩の特徴である輝石や角閃石の存在、そして石の色合いから、当初花崗岩と思われた石は石英を多く含む閃緑岩であると推測される。この地域の深成岩は、花崗岩と記載される場合と石英閃緑岩と記載される場合がある。

 

サイトを公開した直後にWordPressの管理画面ログインがあるか探られた

/** Geminiが自動生成した概要 **/
ブログ記事の要約です。 筆者は公開ページを持たない業務アプリ用サイトを立ち上げた直後、エラーログの急増に気づきました。確認すると、サイトがWordPressであると認識され、`wp-login.php`への総当たりログイン試行が繰り返されていることが判明。実際はWordPressではないにも関わらず、ターゲットとされたことに驚きとリソース消費への苛立ちを感じています。この記事は、WordPressがサイバー攻撃の「金の鉱床」であるほど狙われやすい現状を浮き彫りにし、その危険性を警鐘しています。また、安易なWordPress利用に疑問を呈し、素人が独自ドメインでブログを運営するならBloggerの利用を推奨しています。

 

白味噌はなぜ白い?

/** Geminiが自動生成した概要 **/
京都の一乗寺にある豆乳パティスリー「むしやしない」から自家製白味噌を貰い、味噌汁にして味わってみた。白味噌は甘みが強く塩気が少なく、独特の風味を持つ。白味噌と赤味噌の違いを調べると、コープこうべのサイトでメイラード反応による色の違いが説明されていた。どちらも大豆、米麹、塩が原料だが、大豆の処理方法と熟成期間が異なり、白味噌は短時間の煮豆を使用し、低温で短期間熟成させることでメイラード反応を抑え、淡い色になる。一方、赤味噌は大豆を蒸し、高温で長時間熟成させるため、メイラード反応が促進され色が濃くなる。

 

ブルカノ式火山の火山灰の土としてのポテンシャル

/** Geminiが自動生成した概要 **/
桜島の火山灰は、地元住民の言葉通り農作物に良い影響を与えている。ブルカノ式噴火による安山岩質の火山灰は、シラスとは異なり石英が少ない。その主成分は角閃石、輝石、磁鉄鉱、ガラス質で、黒色土壌を形成する。角閃石と輝石は鉄やマグネシウムを豊富に含み、植物の生育に有益だ。また、ガラス質が少ないため腐植蓄積も期待できる。実際に桜島大根の畑の土壌は軽く、腐植とよく混ざり合っており、良質な作物の収穫を裏付けている。火山灰はミネラル豊富な土壌改良材として機能し、桜島の農業を支えていると言える。

 

硫安が出来るところ

/** Geminiが自動生成した概要 **/
肥料成分の偽装問題に関する記事の要約です。栽培者視点から、硫安の生成について解説しています。硫安は硫酸とアンモニアから合成される他、石炭ボイラーの排ガス中の亜硫酸ガスをアンモニア液で中和する過程で副産物として回収される方法がありました。しかし、近年は石油製品の品質向上に伴い硫酸排出量が増加し、アンモニア注入法に代わり溶解塩噴霧システムが主流となっています。このシステムではNa系塩やMg系塩がコストパフォーマンスに優れ、Ca系塩はコストが悪いとのこと。以前は火力発電所などで副産物として硫安が得られましたが、新技術の普及により減少している可能性があります。肥料としても有用な水マグの使用が別用途に転用され、肥料価格の高騰につながらないことを願っています。

 

いわくらとチャート

/** Geminiが自動生成した概要 **/
京都北部の岩倉にある山住神社で、基盤岩であるチャートを観察した。茶色のチャートは酸化鉄を含み、周辺の土壌の色にも影響を与えていると考えられる。木の根元の土壌は教科書通りの茶色よりやや薄く、京都で見られる茶色っぽい土壌はチャート由来の可能性がある。山住神社は平安時代に石座神社に遷された歴史を持つ。

 

フェンスをしていたにも関わらずシカに突破された時の話

/** Geminiが自動生成した概要 **/
シカやイノシシによる深刻な農作物被害に悩まされ、筆者は自畑で獣害対策を試みた。まず、黒い車内で張り込み、侵入してきたシカを捕獲しようと試みたが、シカは鉄線フェンスに一時足止めされたものの、単管パイプを曲げて逃走した。この経験から、子シカでも単管パイプを曲げる力があり、獣害用フェンスの強度不足を実感した。 侵入経路を調べると、50cmピッチで張った鉄線の下段のわずかなたるみを利用していたことが判明。獣害対策にはわずかな隙も許されないことを痛感した。その後、シカの跳躍力(1.5~2m)を考慮し、50cm毎に電線を張ったフェンスに改良。下部の支柱については別記事を参照のこと。獣害の深刻化に危機感を募らせている。

 

イノシシ鍋を食す

/** Geminiが自動生成した概要 **/
筆者は知人の誕生祝いに、大阪高槻の原養魚場で評判の牡丹鍋(猪鍋)を堪能した。猪肉は獣害に悩まされていた頃に貴重なタンパク源として食べていたため、お金を払って食べる日が来るとは想像もしていなかった。 かつて農村で研修生だった頃、師の畑に猪が出たという連絡を受け、駆けつけた。現場では別の研修生が猪に襲われ重傷を負っていた。筆者も巨大な猪と遭遇し、突進されるも、寸前で猪がトラップに足を取られたことで難を逃れた。 翌日、猪に襲われて生還したことが村で話題となり、「どうやって生き残った?」と質問攻めにあった。この出来事をきっかけに、猪の侵入を防ぐ頑丈なフェンスが開発され、周辺地域に広まったという。

 

SOY Shopで顧客詳細にメールの送信履歴を表示するようにしました

/** Geminiが自動生成した概要 **/
SOY Shopの顧客管理画面に、メール送信履歴表示機能と仮登録ユーザーの視認性向上のための機能追加が行われました。顧客詳細ページに送信済みメールとエラーメールの履歴を表示することで、仮登録メールのURLを管理者が確認しやすくなりました。また、仮登録ユーザーの顧客詳細ページでは、仮登録状態であることを強調表示することで、管理者の識別を容易にしました。これらの変更は、顧客へのメール再送や仮登録解除の手間を軽減することを目的としています。修正はGitHub上のSOY Shopパッケージで公開されています。

 

SOY Shopで特別会員向けのページを作成する

/** Geminiが自動生成した概要 **/
SOY Shopで顧客属性を利用した特別会員向けページの作成方法を紹介します。顧客属性1を「会員」とした場合、カスタムスクリプトでアクセス制限を実現できます。手順は、特別会員向けページを作成後、ページ設定のカスタムスクリプトに下記コードを記述します。 ```php $mypage = MyPageLogic::getMyPage(); $user = $mypage->getUser(); if ($user->getAttribute1() !== "会員") { header("Location:/"); //リダイレクト先を適宜変更 exit; } ``` このコードは、ログインユーザーの属性1が「会員」でない場合、指定URLへリダイレクトします。「会員」やリダイレクト先は環境に合わせて変更可能です。

 

SOY CMSでwwwありとなしのどちらでもアクセスできるサイトでの管理画面の対応

/** Geminiが自動生成した概要 **/
SOY CMSのconfig.ext.phpは、管理画面のカスタマイズを可能にする強力なツールです。管理画面のURLの変更、ログイン画面へのリダイレクト設定、.htaccessを利用したアクセス制限、管理画面のデザイン変更、独自機能の追加などが実現できます。データベースへのアクセスやSmartyテンプレートの利用も可能です。ただし、PHPの知識が必要で、不適切な記述はシステムエラーに繋がるため注意が必要です。このファイルはバージョンアップの影響を受けず、安全にカスタマイズを維持できます。

 

SOY CMSのブログで地図アプリを作ろう3

/** Geminiが自動生成した概要 **/
SOY CMSのブログで地図アプリを作成する過程の記事です。前回はブログトップページに地図と詳細ページへのリンク付きインフォウィンドウを表示しました。今回は、詳細ページにも地図とGoogleマップへのリンクを表示する方法を解説しています。記事には、詳細ページに埋め込むHTMLコードが掲載されています。`cms:id="title_plain"`、`cms:id="lat"`、`cms:id="lng"`を使って記事のタイトル、緯度、経度を埋め込み、JavaScriptで地図を表示、Googleマップへのリンクを生成しています。これにより、詳細ページでも店舗の位置情報が確認できるようになりました。

 

SOY CMSのブログで地図アプリを作ろう2

/** Geminiが自動生成した概要 **/
SOY CMSのブログ機能を利用した地図アプリ作成の第2弾では、マーカークリック時のインフォウィンドウ表示を実装しました。前回設定したカスタムフィールド(サムネイル、緯度経度)に加え、ブログ記事のタイトルとリンクをインフォウィンドウに表示するようにテンプレートを修正。具体的には、JavaScriptでインフォウィンドウの内容を生成し、マーカークリックイベントで表示する処理を追加しました。これにより、地図上のマーカーから各店舗の詳細ページへ遷移できるようになりました。将来的にはSOY Shopと連携させ、カテゴリを店舗名として地図上に店舗を表示するショップページの作成も構想されています。

 

SOY CMSのブログで地図アプリを作ろう1

/** Geminiが自動生成した概要 **/
Google Maps APIを用いてSOY CMSのブログに地図アプリを作成する手順の第一段階を解説した記事です。まずGoogle API ConsoleでAPIキーを取得し、SOY CMSにカスタムフィールド「lat(緯度)」と「lng(経度)」を追加します。ブログページを作成し、提供されたHTMLテンプレートを貼り付け、地図の中心座標とズームレベルを調整します。座標はGoogle Mapsで場所を検索し、右クリックメニューの「この場所について」から取得できます。最後に、ブログ記事を作成し、タイトルと本文に加え、カスタムフィールドに取得した緯度経度を入力して公開します。これにより、ブログトップの地図上にマーカーが追加され、訪問場所を視覚的に表示できます。次記事ではマーカーに詳細情報を表示する機能を追加する予定です。

 

玄武岩を磨くと中は黒でした

/** Geminiが自動生成した概要 **/
夜久野高原で採取した玄武岩は、表面は赤褐色だったが、割ってみると内部は黒色だった。これは、玄武岩に含まれる鉄分が表面で酸化し、赤土と同じ原理で赤くなっていると考えられる。玄武洞博物館で入手した玄武岩の標本も同様に、風化面は赤褐色だったが、新鮮な破断面は黒色だった。これは、岩石の表面だけが酸化の影響を受けていることを示唆している。さらに、夜久野高原で採取した赤い石は、研磨すると鮮やかな赤色になった。これは、酸化鉄鉱物、おそらく赤鉄鉱の含有によるものと考えられる。これらの観察から、玄武岩の赤色は風化による酸化鉄の生成によるものであり、内部は鉄分を含むため黒色であることが確認された。

 

花の美しさと織物の絞り

/** Geminiが自動生成した概要 **/
京都の詩仙堂で京鹿子(キョウガノコ)という花を見て、その由来を調べたが、図鑑にも詳しい情報は少なかった。京鹿子絞りという織物との関連性から、花の美しさに着目。長い蕊が四方へ展開する様子が、絞りの模様を連想させたのではないかと推測。ウメにも同様の特徴があり、バラ科の植物の造形美への感受性の高さを示唆。海外でのバラの品種改良の盛況もその裏付けとなる。しかし、京鹿子の詳細は依然不明瞭なまま。

 

SOY CMSとSOY Shopで有料ブログを運営してみよう

/** Geminiが自動生成した概要 **/
SOY CMSとSOY Shopを組み合わせることで、有料ブログを簡単に構築できます。SOY Shopでライセンス商品を登録し、顧客情報入力やプラグインを簡素化することで、ユーザーの購入手続きをスムーズにします。SOY CMS側では、SOY Shopログインチェックプラグインを使って有料記事へのアクセス制限を設定し、特定の商品購入者を許可します。クレジット決済モジュールと連携すれば、スムーズな支払い確認が可能になります。さらに、PayPalやPAY.JPの継続課金モジュールを利用することで、月額課金型の有料会員制ブログ運営も実現できます。

 

SOY CMSとSOY Shopで会員制ブログを運営してみよう

/** Geminiが自動生成した概要 **/
SOY CMSはショップ系サイト開発に注力しているため、ブログ機能は弱いというイメージがあるが、ショップ特有のセキュリティ強化により、安全な会員制ブログ構築が可能になっている。方法は、SOY CMSとSOY Shopをそれぞれ顧客管理用とブログ投稿用に設置し、ブログ投稿サイトにSOY Shop連携プラグインとSOY Shopログインチェックプラグインを導入する。ログインチェックプラグインで顧客管理サイトを指定し、ブログ記事のテンプレートを編集。`cms:id="is_login"`でログイン時表示部分を、`cms:id="no_login"`で非ログイン時表示部分を囲むことで、閲覧制限を実現する。非ログイン時にはログインページへのリンクが表示され、ログイン後は制限されていたコンテンツが閲覧可能になる。この仕組みにSOY Mailを連携させれば、顧客情報に基づいたメルマガ配信も可能。HTMLのみで構築できるため、デザインの自由度やSEO対策も容易で、有料ブログや有料メルマガへの拡張も容易である。

 

開発元を退職した私がSOY CMSを開発し続けている訳

/** Geminiが自動生成した概要 **/
筆者はSOY CMSの開発元を退職後も、個人で開発を継続している。理由は、開発元代表の行動(SNSでの女装写真連投)と農業事業への注力により、開発が停滞し、経験豊富な開発メンバーが離脱したため。退職後、ユーザーの声を直接聞き、SOY CMSの価値を再認識し、開発継続を決意。公式フォーラムへの修正報告は反映されず、個人でパッケージを配布。開発元の事業不振を憂慮し、リポジトリの公開を提案。利用者がいれば開発を続けると宣言している。

 

幸せの四つ葉のクローバ

/** Geminiが自動生成した概要 **/
幸せの象徴である四つ葉のクローバーは、ハート型4枚の小葉のイメージがある。しかし、クローバーはマメ科植物で通常は丸葉である。それに対して、4枚の小葉を持つカタバミはハート型をしている。しかし、本物の四つ葉のクローバーも存在し、くぼみのある小葉を持っているものもある。このことから、四つ葉のクローバーの幸運の象徴は、小葉が4枚でハート型という条件が加わった可能性があると考えられる。

 

プログラミングで素数を探してみよう

/** Geminiが自動生成した概要 **/
プログラミング教育の一環として、中学生にエラトステネスの篩を使わずに素数を求める課題を与えた。5が素数である理由を問うことで、生徒に思考過程を明確に説明させることを促した。生徒たちは、与えられた自然数以下の既知の素数で割り切れないことを確認することで素数判定ができることに気づき、JavaScriptでプログラムを実装した。2を初期素数として配列に格納し、3以上の自然数について、配列内の素数で割り切れるか確認し、割り切れなければ配列に追加していくことで、指定範囲内の素数を全て出力することに成功した。この経験を通して、プログラミング教育における論理的思考の重要性を再認識した。

 

SOY Shopで運営者の購入代行時に顧客の情報を自動で入力する

/** Geminiが自動生成した概要 **/
SOY Shopの拡張機能で、運営者が顧客の購入を代行する際の手間を省く仕組みが開発されました。 公開側の商品ページに設置した注文ボタンから、管理画面へ特定の顧客情報で自動ログインする機能です。 ボタンにはGETパラメータが付与され、管理画面でログイン状態とパラメータを照合することで、指定顧客の自動ログインを実現しています。 これにより、購入代行時に顧客情報入力の手間が不要となり、電話注文の2回目以降の対応をスムーズに行えます。 この機能はGitHubで公開されているパッケージから利用可能です。

 

SOY ShopのMySQL版のクーポン自由設定プラグインで使用ログが動作していなかった件を修正しました

/** Geminiが自動生成した概要 **/
SOY ShopのMySQL版クーポン自由設定プラグインで、クーポン使用ログが記録されない不具合を修正しました。この不具合により、クーポンの使用回数がカウントされず、使用回数制限が正常に動作しない問題が発生していました。修正版パッケージはGitHubで配布しています。直接修正する場合は`ALTER TABLE soyshop_coupon_history CHANGE private price INTEGER NOT NULL DEFAULT 0;`を実行してください。

 

SOY CMSの確認のリンクをスラッシュ終わりにしました

/** Geminiが自動生成した概要 **/
SOY CMSのページ一覧の確認リンクで、URL末尾が拡張子でない場合にスラッシュを追加する修正が行われました。これは、スラッシュの有無で相対パス指定の画像やCSSの表示に差異が生じる問題への対応です。ブログページで確認リンクをクリックした際、一覧からはスラッシュなし、詳細からはスラッシュありで表示される不整合を解消しました。修正はGitHub上のパッケージに反映されています。

 

SOY CMSで新着情報をトップページに表示してみる

/** Geminiが自動生成した概要 **/
SOY CMSのブログでプレビュー用のページを作成する方法は、記事公開前に特定ユーザーだけに内容を確認させるためのものです。まず、ブログページとは別にプレビュー用の隠しページを作成し、ブログ記事と紐づけます。プレビューページのテンプレートには、ブログ記事の内容を表示するための記述を追加します。次に、ブログ記事編集画面にプレビューページへのリンクを追加します。このリンクは、特定の条件下でのみ表示されるように設定します。具体的には、記事の公開状態が非公開で、ログインしているユーザーがプレビュー権限を持っている場合にのみ表示させます。これにより、指定したユーザーだけがプレビューページにアクセスし、記事の内容を確認できるようになります。この方法を利用することで、公開前の記事を安全に確認し、修正を行うことができます。

 

私にとっての農業とSOY Shop

/** Geminiが自動生成した概要 **/
新規就農者は、野菜の栽培で手一杯のため、販売に割く時間がない。そのため、野菜の価格決定権が市場に握られ、価格が下がった際に収入が不安定になりやすい。この問題を解決するために、営業不要で販路を確保できるネットショップ活用が有効だ。研修中に開発したECサイト構築システム「SOY Shop」を導入し、自ら販売サイトを構築。ブログやSNSで情報発信し、顧客との直接的な関係を築くことで、安定した経営を実現した。この成功事例は他の新規就農者にも参考になるだろう。

 

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

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

 

SOY Shopでカートのエラーになった際に管理者に通知メールを送信機能を追加

/** Geminiが自動生成した概要 **/
SOY Shopでカートエラー発生時に管理者へ通知メールを送信する機能を追加する方法が解説されています。カートページのPHPファイル(/soyshop/webapp/src/cart/_common/page.php)の例外処理部分に、メール送信処理を記述することで実現します。エラー発生時に管理者のメールアドレスへ通知メールが送信されるように設定し、エラーの詳細な内容を含むことも可能です。ただし、セキュリティ上の理由から、エラーの詳細情報をメール本文に含めることは推奨されていません。修正済みパッケージはGitHubで公開されています。

 

SOY Shopの統計プラグインで注文件数が多くなったサイトでも快適に表示できるように修正しました

/** Geminiが自動生成した概要 **/
SOY Shopの統計プラグインの表示速度が改善されました。注文件数の多いサイトでは、統計計算に時間がかかっていましたが、原因は注文一覧ページの無駄な二重検索処理でした。統計処理時に、一覧用の検索結果を破棄して再度統計用の検索を行っていたため、メモリを浪費し、計算時間が増大していました。この無駄な処理を修正することで、表示速度が大幅に向上しました。修正版はフォーラムまたはGitHubのパッケージ置き場から入手できます。

 

フローラルディップ法で遺伝子組み換え

/** Geminiが自動生成した概要 **/
従来の遺伝子組み換え(アグロバクテリウム法)は、特定の細胞を改変後、培養して個体に育てる手間があった。これに対し「フローラルディップ法」は、開花前の蕾にアグロバクテリウムを感染させ、受粉・受精を経て得られた種子から直接遺伝子組み換え株を育成できる。これにより、面倒な細胞培養が不要となる。 筆者は、遺伝子組み換えは微生物の特性を最大限に活用するもので、イメージされる精密なメス操作とは異なると指摘。植物に他生物の遺伝子が入ることも自然な現象と強調し、医学的応用が進む中で、遺伝子組み換えへの最低限の理解が不可欠だと訴える。

 

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

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

 

インターネット内に流れているパケットを傍受してみる

/** Geminiが自動生成した概要 **/
WordPressなどのCMSは総当り攻撃の標的になりやすく、特にログインページがhttpの場合、IDとパスワードが傍受されやすい。Wiresharkのようなツールを使えば、ネットワーク上のパケットを解析し、http通信のログイン情報を簡単に盗み見ることが可能。httpsは通信を暗号化するため、傍受されても内容は解読できない。カフェなどのフリーWi-Fiでhttpのログインページを使うのは危険。https化はセキュリティ対策だけでなく、HTTP/2.0による高速化にも繋がるため重要。また、メールもhttpと同様に暗号化されていないと傍受される可能性があるため注意が必要。

 

SOY Shopで商品規格プラグインと入荷通知プラグインを一緒に使いたい

/** Geminiが自動生成した概要 **/
SOY Shopの商品規格プラグインと入荷通知プラグインを併用できるよう修正。入荷通知プラグインは在庫切れ商品に入荷通知登録リンクを追加し、在庫補充時に登録者にメールを送信する機能。今回の修正で、商品規格プラグイン利用時にも規格ごとの在庫管理と入荷通知が可能になった。つまり、規格ごとに在庫切れ/入荷通知リンクを表示し、特定規格の在庫補充時に該当規格の入荷通知登録者にメールを送信できる。最新パッケージはGitHubからダウンロード可能。

 

SOY Shopのマイページでログインの有無でテンプレートを分ける機能を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopのマイページで、ログイン有無によるテンプレート切り替え機能が追加されました。従来はログイン前後で同じテンプレートを使用していましたが、ログイン前は1カラム、ログイン後は2カラムといったレイアウト変更の要望に応えるため、ログイン時に別のテンプレートを読み込む仕組みが実装されました。 具体的には、`mypage.html` というテンプレートを使用している場合、ログイン時は `mypage_no_login.html` と `mypage_no_login.ini` があればそちらが優先的に使用されます。これらのファイルは管理画面からは生成できず、手動でサーバーにアップロードする必要があります。機能の詳細はSOY CMSフォーラムとGitHubリポジトリで公開されています。

 

SOY Shopのメールビルダから出力される商品一覧に並び順設定を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopのメールビルダープラグインに、注文メールの商品一覧の並び順設定機能が追加されました。 従来、自動出力される商品一覧の並び順は固定でしたが、このアップデートにより変更が可能になります。 メールビルダーの管理画面から、商品名、商品コード、数量、価格の各項目を昇順/降順に指定することで、希望の並び順で商品一覧を出力できます。 ダウンロードと詳細はSOY CMSフォーラムにて提供されています。 この機能により、注文メールの可読性向上や業務効率化に繋がります。

 

SOY CMSのサムネイルプラグインでラベル毎に標準画像の設定を追加しました

/** Geminiが自動生成した概要 **/
SOY CMSで記事投稿時に毎回サムネイル画像を用意するのは手間がかかる。特に、カテゴリ毎に同じようなサムネイルを使い回したい場合、作業効率が悪い。そこで、サムネイルプラグインの設定画面でラベル毎に画像を設定できるように機能拡張した。記事投稿時に該当ラベルにチェックを入れるだけで、予め設定した画像パスがアップロードフォームに挿入される。異なる画像を使いたい場合は、通常通りアップロードフォームから画像を指定すれば良い。この改良により、カテゴリ毎に共通のサムネイル画像を設定する場合の作業負荷が大幅に軽減される。尚、サムネイルプラグインを使わずとも、記事本文の画像をリサイズ表示する方法もある。

 

SOY CMSで表示直前で画像のリサイズ表示を行う

/** Geminiが自動生成した概要 **/
SOY CMSでサイト表示を高速化するために、表示直前にサーバ側で画像リサイズを行う方法を紹介しています。Google PageSpeed Insightsで低評価を受けた画像サイズの問題を解消するため、サムネイルプラグインではなく、SOY CMSの隠し機能を活用。 具体的には、カスタムフィールドに画像パスを入力し、imgタグのsrc属性に`im.php?src=[画像パス]&width=[幅]`を指定することで、動的にリサイズされた画像を表示。従来のHTMLのwidth属性による縮小表示よりもパフォーマンスが向上し、PageSpeed Insightsのスコアも改善。 記事では、設定変更前後の具体的なコード例やスクリーンショットを交えながら解説。リサイズ処理はJPEG、PNG、GIFに対応し、作業フローを簡略化しつつサイト高速化を実現。次回、CSSや画像のキャッシュ設定について解説予定。

 

CMSに不正にログインした後、何をする?

/** Geminiが自動生成した概要 **/
SOY CMSに不正ログイン後、ファイルマネージャからのPHPアップロードは不可だが、フロントコントローラ(index.php)に悪意あるPHPコードを埋め込み可能。これにより、サイト閲覧時に勝手にメール送信などの踏み台攻撃が可能になる。対策はindex.phpの書き込み権限を外すこと。SOY ShopのテンプレートやPHPモジュールも悪用されうる。

 

当サイトをHTTP/2対応して表示の爆速化してみた

/** Geminiが自動生成した概要 **/
Let's Encryptの証明書更新を自動化するため、CertBotを導入した。以前の方法は使えなくなったため、公式サイトの手順に従い、snapd経由でCertBotをインストール。`certbot certonly --apache`コマンドで証明書を取得し、Apacheの設定を自動更新。 cronで`certbot renew`を定期実行することで自動更新を実現。`--dry-run`オプションでテストも可能。以前の`letsencrypt-auto`コマンドは非推奨となったため、CertBotへの移行が必須。

 

SOY CMSのブログで記事表示順番号(通し番号)を出力させたい

/** Geminiが自動生成した概要 **/
SOY CMSのブログで記事の表示順番号(通し番号)を出力する方法を紹介します。記事一覧を出力するブログテンプレートで、`<div>この記事は何記事目?→<strong><!-- soy:id="index" --></strong>1<strong><!-- /soy:id="index" --></strong>記事目</div>`のように`soy:id="index"`を記述することで、記事の表示順番号が出力されます。これはSOY2HTMLのHTMLListクラスの機能を利用しています。HTMLListには最初/最後の記事用のタグや、特定の条件に一致する記事用のタグなども用意されています。

 

SOY CMSに総当り攻撃を仕掛けてみる。その3

/** Geminiが自動生成した概要 **/
Go言語で書かれたコードを用いて、SOY CMSへの総当たり攻撃を試行。パスワード候補の配列を定義し、ループ処理でログインを試みる。一致するパスワードが見つかった場合、処理を中断し「ログイン成功」とID、パスワードを表示する。今回は"********"でログイン成功。このコードはパスワード候補を増やすことで、複雑なパスワードでも突破可能。しかし、SOY CMS側では複数回ログイン失敗するとエラーが表示される対策が取られていることが確認された。

 

SOY CMSに総当り攻撃を仕掛けてみる。その2

/** Geminiが自動生成した概要 **/
Go言語でSOY CMSへの総当り攻撃コードを改良した。前回はトークンチェックで攻撃が無効化されたため、今回はトークン取得とセッションキー保持の処理を追加した。具体的には、ログインページからトークン値を抽出し、自作のCookieJarを用いてセッションキーを保持することで、正規のログインと同様にトークンを送信できるようにした。この改良により、辞書攻撃が可能になった。 最後に、管理画面URLの特定の容易性と攻撃のしやすさを指摘し、URLを複雑にする、IDを辞書攻撃されにくいものにするなどの対策の必要性を訴えている。

 

ブログで絵文字の機能は使わない方が良いかもしれない

/** Geminiが自動生成した概要 **/
SOY CMSで絵文字を使うと、画像パスにCMSのインストールディレクトリが含まれるため、管理画面のURLが推測されやすく、総当り攻撃の標的になる危険性がある。記事に絵文字を使いたい場合は、画像パスを外部の無関係な場所に配置し、管理画面URLを特定できないようにする必要がある。そうでない場合は、侵入検知機能の導入が必須となる。 記事では絵文字の危険性を指摘し、対策として画像パスの変更と侵入検知システムの導入を推奨している。

 

SOY CMSのブログで投稿されたコメントを編集したい

/** Geminiが自動生成した概要 **/
SOY CMSブログのコメント編集機能が拡張されました。従来はコメント本文のみ編集可能でしたが、要望に応えタイトルと投稿者名の編集も可能になりました。管理画面のコメント一覧から該当コメントを選択し、「タイトル」または「投稿者名」ボタンをクリックすると編集フォームが表示され、変更が可能になります。投稿日時と記事タイトルの編集には未対応です。この機能の詳細はSOY CMSフォーラムで公開されています。

 

予約フォーム開発でSOY Shopのマイページを活用する

/** Geminiが自動生成した概要 **/
SOY Appで予約フォームに会員機能を追加する際、SOY Shopのマイページ機能を活用することで開発工数を削減できる。ログイン画面への遷移は、URLパラメータ`r`にリダイレクト先を指定することでログイン後に元の予約フォームへ戻れる。本記事では、会員登録後も同様に`r`パラメータでリダイレクト先を指定することで、登録完了後に予約フォームへ戻れるよう改良したパッケージをGitHubで公開している。この仕組を活用すれば、会員限定ページへのアクセス制御なども容易に実装できる。

 

UbuntuでWindowsが入ったSSDを開こうとするとエラーになる

/** Geminiが自動生成した概要 **/
Windows10入りSSDをUbuntuマシンに外付け接続した際、マウントエラーが発生。ntfsfixコマンド(sudo ntfsfix /dev/sdb6)を実行することで、ファイルシステムのエラーを修正し、無事マウントに成功した。SSD/HDDどちらでも同様の対応が可能。

 

南房総族よりビワが届いた

/** Geminiが自動生成した概要 **/
南房総の知人から枇杷が届き、早速食べた。味は言葉で表現できないほど美味であったため、詳細な感想は控える。もっと詳しく知りたい方はブログ「酒と泪とアイリス(花)とびわ(果樹)ぼく南房総族」を参照してほしい。昨年も枇杷をもらったかのように書いているが、サイト開設は今年のため、事実とは異なる。

 

Go言語で認証鍵を使ってSSHの接続を行う

/** Geminiが自動生成した概要 **/
Go言語でSSHの秘密鍵認証によるリモートサーバ接続を実装する方法が紹介されています。 `ioutil.ReadFile` で秘密鍵ファイル(id_rsa.pem)を読み込み、`ssh.ParsePrivateKey` でパース、`ssh.PublicKeys` で公開鍵を設定することでパスワード認証から秘密鍵認証に変更できます。`id_rsa.pem` ファイルは `openssl` コマンドで `id_rsa` から変換する必要があります。 サンプルコードでは、接続後、リモートサーバに空ファイルを作成する処理を実行しています。

 

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

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

 

Go言語でサーバのバックアップの仕組みを作ろう。ファイルの更新編

/** Geminiが自動生成した概要 **/
Go言語でサーバのバックアップスクリプトを改良し、ファイルの更新日時をチェックするようにした。前回は全ファイルをコピーしていたが、今回はバックアップ元と先のファイルの更新日時を比較し、元ファイルが新しい場合のみコピーする処理を追加。`os.FileInfo`の`ModTime()`メソッドで更新日時を取得し、Unixタイムに変換して比較することで実現した。コード例では`filepath.Walk`でファイルを走査し、更新日時が新しいファイルのみ`io.Copy`でコピーしている。

 

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

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

 

最高の開発環境を求めて

/** Geminiが自動生成した概要 **/
レシピのない環境で最高の開発環境を目指し、WindowsからUbuntuに移行した筆者は、Emacsを選択。シェルモードの使いにくさに悩み、zshを導入するもEmacsとシェルを同時に表示できない問題に直面。最終的にターミナルマルチプレクサtmuxを用いて、Emacsとzshを左右に配置する理想的な開発環境を実現した。今後の記事では、環境構築の詳細な手順を公開予定。

 

SOY CMSのブログのページ生成設定で404になる条件がある不具合を修正しました

/** Geminiが自動生成した概要 **/
SOY CMSのブログ設定で、トップページ以外(記事、カテゴリ、月別アーカイブ)のURLを空にすると、表示はされるもののHTTPステータスが404になる不具合を修正。アクセス解析で該当ページが404エラーとして記録される問題が発生していた。修正ファイルはフォーラム(http://www.soycms.org/viewtopic.php?f=7&t=1775)に、修正版パッケージはGitHub(https://github.com/inunosinsi/soycms/tree/master/package/soycms)に公開。soycms_1.8.12p7.4以降で適用可能。

 

SOY Shopの商品一覧ページでカスタムフィールドの値で商品の並び替え

/** Geminiが自動生成した概要 **/
SOY Shopのソートボタン設置プラグインでカスタムフィールドの値によるソートが可能になりました。商品カスタムフィールドの「高度な設定」で「ソートに使用する」にチェックを入れると、プラグイン管理画面にソート用タグが表示されます。このタグを商品一覧ページテンプレートに貼り付けることで、カスタムフィールド値に基づくソートボタンが設置できます。機能はsoyshop_1.17.3p7.2.zip以降のパッケージか、フォーラムの修正ファイルで利用可能です。

 

SOY CMSのブロックで記事のランダム表示

/** Geminiが自動生成した概要 **/
SOY CMSのブロックで記事をランダム表示するスクリプトモジュールブロックのコードが紹介されています。指定したラベルの記事をランダムに並び替え、指定件数分出力します。 `/site(サイトID)/script/soycms_random.php` にPHPコードを記述し、テンプレートで `cms:label` にラベルID、`cms:count` に取得件数を指定することで利用できます。コードはフォーラムにもアップロードされています。記事の取得件数を指定しない場合は、該当ラベルのすべての記事を取得しランダムに表示します。

 

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

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

 

Goで運営しているサイトでLet's Encryptを利用してみた

/** Geminiが自動生成した概要 **/
Go製WebアプリをHTTP/2で運用するために、Let's EncryptでSSL証明書を取得した。取得手順は、letsencryptコマンドで証明書を作成し、Goのコードに証明書のパスを指定するだけ。`http.ListenAndServe`を`http.ListenAndServeTLS`に変更し、fullchain.pemとprivkey.pemのパスを設定することでHTTPS化。証明書取得後、サイトはHTTP/2で動作するようになった。

 

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

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

 

さくらのVPSにPHP7を入れてSOY CMSを動かしてみた

/** Geminiが自動生成した概要 **/
さくらのVPSにPHP7をインストールし、SOY CMSを動かす手順を解説した記事。共有サーバーの表示速度低下を改善するため、VPSに移行。手順は既存記事を参考に、PHPインストール部分を更新。 Apache2.4インストール後、Ondřej Surý氏のPPAを用いてPHP7.0を導入し、関連モジュールをインストール、Apache2の設定を行った。PHP7でSOY CMSを動かすにはファイル修正が必要で、修正済みパッケージはsaitodev.co/soycms/からダウンロード可能。

 

Dockerで構築したPHP7の環境でSOY CMSを動かしてみる

/** Geminiが自動生成した概要 **/
Docker上のPHP7環境でSOY CMSを動かす手順を解説。前回はmbstringが不足しエラーが発生したが、Dockerfileに`docker-php-ext-install mbstring`を追加し解決。elfinderは未対応だが、その他は動作し爆速に。Dockerfileとphp.iniの設定例、コンテナ起動コマンドも紹介。修正版SOY CMSはGitHubで公開中。

 

DockerでPHP7の環境を構築してみる

/** Geminiが自動生成した概要 **/
Dockerを使ってPHP7環境を構築する方法を紹介しています。UbuntuへのDockerインストール手順、Dockerfileの作成、コンテナイメージのビルド、コンテナの起動、PHPバージョン確認、ブラウザでのphpinfo表示確認までを解説。Dockerを使うことで、簡単にPHP7環境を構築し、動作確認できることを示しています。ルートディレクトリ操作の課題は残っていますが、Apache設定などを省略できる手軽さがメリットです。

 

さくらのVPSでSOY CMSを動かした時のメモ

/** Geminiが自動生成した概要 **/
Apacheサーバのバージョン表示はセキュリティリスクとなるため、非表示にすることが推奨されています。本記事では、Apacheの設定ファイル`httpd.conf`または`apache2.conf`を編集することで、バージョン情報を隠す方法を解説しています。具体的には、`ServerTokens`ディレクティブを`Prod`に設定することで、公開されるサーバ情報を最小限に抑えられます。また、`ServerSignature`ディレクティブを`Off`にすることで、エラーページなどからサーバのバージョン情報が削除されます。これらの設定変更後、Apacheを再起動することで変更が反映されます。さらに、セキュリティ対策としてmod_securityなどのセキュリティモジュール導入も推奨しています。

 

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

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

 

SOY Shopの商品レビュープラグインでレビュー投稿時にポイントを付与

/** Geminiが自動生成した概要 **/
SOY Shopの商品レビュープラグインに、レビュー投稿時にポイントを付与する機能が追加されました。 プラグイン設定画面で付与ポイント数を指定し、簡易ポイント制設定プラグインと併用することで、レビュー投稿時にユーザーにポイントが付与されます。ポイントはレビューが公開されたタイミングで付与され、誹謗中傷対策として、管理画面でレビューを承認後に公開する設定も可能です。この機能を含むパッケージはsaitodev.coからダウンロードできます。また、以前の改修では、スパム対策としてCAPTCHAも追加されています。

 

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

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

 

SOY Shopでログインしているお客様へポイントの使用期限を表示する

/** Geminiが自動生成した概要 **/
SOY Shopでログイン中のお客様にポイント残高と使用期限を表示するモジュール作成方法を紹介。モジュールID「parts.point_limit」を作成し、提供されたPHPコードを記述することで実現。コードは、ログイン状態、ポイントプラグインの有効性を確認後、ユーザー情報を取得し、ポイント残高と使用期限を表示。期限切れや無期限の場合の表示も追加可能。コードにはコメントが添えられており、カスタマイズのヒントも提供。ポイントはログインユーザーのみに表示され、未ログイン時は何も表示されない。より詳細なカスタマイズや機能要望は問い合わせフォームから。

 

SOY Shopで商品詳細ページの下に同じカテゴリの商品一覧を表示する

/** Geminiが自動生成した概要 **/
SOY Shopの商品詳細ページ下部に、同カテゴリ商品一覧を表示する方法を解説。 パーツモジュールを追加し、IDを「parts.item_list」、モジュール名を「商品一覧モジュール」とする。 モジュール内では、商品詳細ページの場合のみ、表示商品のカテゴリIDを取得し、DAOで同カテゴリの公開商品を取得、`SOYShop_ItemListComponent`を用いて商品一覧ブロックを生成する。 商品詳細テンプレートに`shop:module="parts.item_list"`を記述し、内部に`block:id="item_list_by_detail"`と商品表示用のcms:idを記述することで、一覧表示を実現する。 カート追加機能も確認済。 パーツモジュールを活用すれば、簡単なプラグイン機能を開発可能。

 

SOY CMSの常時SSL化で対応したこと

/** Geminiが自動生成した概要 **/
さくらインターネットの共有サーバーでSOY CMSを常時SSL化するために実施した手順を紹介。画像パスの修正、SNI SSL対応、リダイレクト設定、サイトURLの変更、サイトマップ作成とSearch Console登録を行った。画像パスは絶対パスに変更し、SNI SSLのためにSOY CMS本体のコードを修正。リダイレクトはindex.phpに記述、サイトURLもhttpsに変更した。最後にサイトマップを作成しSearch Consoleへ登録。SOY Shopの場合は別途対応が必要。

 

SOY CMSで総当たり攻撃に対応してみた

/** Geminiが自動生成した概要 **/
SOY CMSのセキュリティ強化として、総当たり攻撃対策機能を追加しました。同一IPからの短期間でのログイン試行を検知し、警告表示を行います。突破された場合は試行回数も表示し、対策のヒントを提供します。将来的にはブラックリストやメール通知機能も検討中。管理画面URLの特定防止対策と合わせて利用することで、より安全性を高めることができます。本機能を含むパッケージはsaitodev.co/soycms/からダウンロード可能です。メール通知機能も追加済みです。

 

そもそもSOY CMSを使っていると特定されないために

/** Geminiが自動生成した概要 **/
SOY CMS使用の痕跡を隠す方法を紹介。404 Not FoundページはCMS、ショップ共にデザイン変更可能。ブログ記事URLも設定で変更できる。お問い合わせフォームはCMSスタイルシートを停止すればSOY Inquiryタグは消える。ただし、フォーム設置プラグイン使用時はSOY CMS特有の文字列がソースコードに残るため、完全な隠蔽は難しい。

 

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

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

 

運営しているサイトがSOY CMSであるか調べてみる

/** Geminiが自動生成した概要 **/
SOY CMSで構築されたサイトを特定する方法を紹介。HTML出力のためソースコードからは判別不可。特有のNot Foundページ(/jfoewajfoiwaejflaleiofjwaefwaeのような無意味な文字列へのアクセス)の存在が手がかりとなる。また、ブログ記事URL(/article/記事タイトル)、月別(/month/YYYY/MM)、カテゴリ(/category/カテゴリ名)ページのURL構造も参考になる。その他、問い合わせフォームページのソースに"SOY_Inquiry"や"soy2_token"の文字列があれば、SOY CMSの可能性が高まる。

 

SOY CMSで記事の内容ごとに文末のリンクを出し分けたい

/** Geminiが自動生成した概要 **/
SOY CMSで記事の内容ごとに文末リンクを出し分ける方法を解説しています。テンプレートにPHPを記述せず、モジュール機能を利用することで実現しています。記事に設定されたラベルIDを取得し、条件分岐で表示するリンク内容を決定します。ラベルIDが9なら栽培系セミナー、5か16ならSOY CMS関連のリンクを表示します。モジュールタグをテンプレートに挿入するだけで、PHPを記述することなく、記事の内容に合わせた文末リンクの出し分けが可能です。

 

ギザギザは調整され過ぎた結果

/** Geminiが自動生成した概要 **/
葉の縁の形状は、成長の調整機構の働きによって決まる。波打つ葉は調整不足、ギザギザの葉(オークリーフ)は調整過剰の結果と考えられる。本来は単純な丸い葉になるはずが、局所的な調整の過剰によって切れ込みが生じ、オークリーフのような形状になる。つまり、一見シンプルな形の葉も、実は緻密な調整機構によって形成されている。このことから、複雑な形状を持つカエデの葉も、様々な調整の過程を経て形成されたと推測できる。

 

Golangのsessionの取り扱いの際の型で苦戦した

/** Geminiが自動生成した概要 **/
Go言語でgorilla/sessionsを使ってセッションを扱う際、セッションから取得した値の型がinterface{}となり、string型の構造体フィールドに代入できない問題が発生した。ログ出力ではstring型に見えたが、構造体への代入時に型エラーが発生。stringへの型アサーションを試みても解決せず、最終的に構造体のフィールド型をinterface{}に変更することで回避した。セッション値取得時の動的な型定義と構造体の静的な型チェックの不一致が原因と考えられる。より良い解決策を模索中。

 

「虫が付いてる野菜は美味しい」は嘘 エンジニア思考で考える新しい農業という記事に対して

/** Geminiが自動生成した概要 **/
筆者は、日本情報化農業研究所で農業事業に従事していたが、CEO古荘氏の言動に不信感を募らせ退職した。古荘氏は、筆者らの農業調査を誇張したプレゼンを行い、西前氏が立ち上げたセレクトファームの成果を自分のもののように語り、資金調達に利用した。筆者らは畑で地道に努力していたにも関わらず、古荘氏は現場に来ず、農業を軽視する態度を取り続けた。その結果、関係者や取引先からの信頼を失墜させ、筆者も西前氏も会社を去ることになった。筆者は農業をエンジニアリングと同一視する古荘氏の考えに反論し、生き物を育てる仕事は知識を駆使したサポートだと主張する。 開発元退職後のSOY CMS開発継続理由は、オープンソース化により生まれたコミュニティへの責任感、ユーザーからの信頼、そしてSOY CMS自体への愛着による。退職後も開発を続け、改良を重ねることで、ユーザーにとってより良いCMSを提供し続けたいと考えている。

 

ヨガスタジオCORE様サイトの予約管理アプリを開発しました

/** Geminiが自動生成した概要 **/
池田・川西・箕面・北摂の空中ヨガスタジオCORE様の予約管理アプリを開発。SOY ShopとSOY Calendarをベースに、複数インストラクター・レッスンの登録、会員による予約状況確認・予約機能を実現。会員管理はSOY Shopの顧客管理機能を活用し、ネットショップ展開やSOY Mail連携によるメルマガ配信も容易に実現可能。少ない労力で多様なニーズに対応できる設計となっている。予約ページは https://ys-core.com/schedule/ 。

 

アンモニア臭は酸化で消そう

/** Geminiが自動生成した概要 **/
アンモニア臭の消臭方法として、酸化に着目。プロピオン酸のように塩にするのではなく、アンモニア酸化細菌の反応を参考に、アンモニアを酸化することで硝酸に変える方法を検討。アンモニアは酸化によってヒドロキシルアミン、さらに亜硝酸へと変化する。この過程で電子が放出されるため、酸化反応が成立。アンモニアが別の物質に変化することで臭いも軽減される。結論として、悪臭物質を酸素に晒すと酸化によって臭いが消える可能性がある。

 

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

/** Geminiが自動生成した概要 **/
SOY CMSで検索機能を実装する方法を解説。`/site(サイトID)/script/soycms_search.php`に検索スクリプトを記述。SQLで記事タイトル、本文、追記フィールドを検索し、公開期間内の記事を抽出。結果はEntryオブジェクトに変換後、配列`$soycms_search_result`に格納。テンプレートには`<form method="get" action="/search">`で検索フォームを設置し、クエリパラメータ`q`で検索文字列を受け取るようにする。`$dao->getObject($row)`で検索結果をEntryオブジェクトに変換することで、テンプレートに記述した`<!-- block:id="result" -->`で表示可能になる。

 

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

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

 

パーツモジュールでカノニカルタグを作ってみた

/** Geminiが自動生成した概要 **/
SEO対策のカノニカルタグを、ページ毎に挿入する手間を省くため、パーツモジュールで自動生成する仕組みを作成した。 ブログページとそれ以外のページで処理を分け、ブログページでは記事、カテゴリ、月別アーカイブそれぞれのモードに応じてURLを生成。HTMLテンプレートに`<link rel="canonical" href="生成したURL">`を出力することで、どのページでも正しいカノニカルタグが自動で挿入されるようになった。 実際にカテゴリページで確認した結果、期待通りのURLが出力され、今後の作業効率化に繋がることが期待される。

 

SOY CMSでどのページでも使えるブログのサイドバーを作ってみた

/** Geminiが自動生成した概要 **/
SOY CMSのPHPモジュールを使用して、ブログページのサイドバーコンテンツを他のページでも表示できるようになった。最新の投稿、カテゴリー一覧、月別アーカイブを取得するロジックを実装し、表示を整形した。これにより、ブログページと同様のコンテンツを非ブログページでも表示できるようになった。また、使用したSOY2DAOFactoryとSOY2Logicはデータベース操作やロジック処理を行うために使用された。

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

Powered by SOY CMS   ↑トップへ