ブログ内検索

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

SOY CMSのキーワード自動抽出プラグインで入力補完機能を追加しました

/** Geminiが自動生成した概要 **/
SOY CMSのキーワード自動抽出プラグインに、検索フォームへの入力補完機能が追加されました。プラグインは生成AIを利用し、サイト内のコンテンツからキーワードを抽出して検索性を向上させます。 この機能追加を含む最新版はsaitodev.co/soycms/からダウンロード可能です。 以前、生成AIによる記事概要自動生成機能も紹介されました。これは記事の内容をAIが解析し、指定文字数で概要を作成する機能です。これにより、SEO対策や記事一覧での魅力的な表示が容易になります。

 

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

/** Geminiが自動生成した概要 **/
SOY CMSとSOY Shopは、2024年11月末に公開されたPHP8.4に対応済みです。SOY CMSはPHP8.3対応以降、廃止された機能を使用していなかったため、PHP8.4への対応に伴う大規模な改修は不要でした。PHP8.4対応版はsaitodev.co/soycms/からダウンロードできます。

 

SOY CMSとSOY Shopで多言語サイトの構築を見直しました

/** Geminiが自動生成した概要 **/
SOY CMSとSOY Shopの多言語サイト構築方法を大幅に改修しました。 従来はテンプレート数増加による管理コスト増大が課題でしたが、今回は以下の改善を行いました。 * 日本語ページと英語ページで同じテンプレートを使用可能に * 画像ファイル名に言語キーを付与することで自動切り替え * 記事とラベルを他言語のものと紐付け可能に これらの改善により、管理画面の簡素化、多言語サイト構築の効率化を実現しました。 新パッケージはサイトからダウンロード可能です。

 

SOY CMSで$_SERVER["PATH_INFO"]の補完を追加しました

/** Geminiが自動生成した概要 **/
SOY CMS 3.14.0以降では、エックスサーバー等のサーバーで発生するPATH_INFOの自動付与による問題を解消しました。従来は「https://example.com/hoge」にアクセスすると「https://example.com/hoge?pathinfo=hoge」にリダイレクトされていましたが、最新版では内部処理でPATH_INFOを補完するため、リダイレクト無しで動作します。 自動付与機能を無効にする場合は、サイトの.htaccessファイルの末尾を以下のように変更してください。 **変更前:** ``` RewriteRule ^(.*)$ index.php?pathinfo=$1&%{QUERY_STRING} [L] ``` **変更後:** ``` #RewriteRule ^(.*)$ index.php?pathinfo=$1&%{QUERY_STRING} [L] RewriteRule ^(.*)$ index.php/$1 [L] ```

 

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

/** Geminiが自動生成した概要 **/
SOY CMSとSOY Shopが最新のPHP 8.3に対応しました!2023年11月末に公開されたPHP 8.3の廃止機能は使用していないため、PHP 8.2対応版からの大きな変更はありません。PHP 8.3対応版は、下記URLからダウンロードできます。 https://saitodev.co/soycms/

 

青石の考古学、青石で石器を作った古代人

/** Geminiが自動生成した概要 **/
徳島県阿波町の日吉谷遺跡では、弥生時代から青色片岩製の石器生産が行われていました。吉野川流域では、頑丈な石が容易に手に入り、石器の材料に適していました。弥生時代、徳島は稲作に適した土壌と気候に加え、石器の材料となる石も豊富に存在しました。このことから、徳島では古代より人口増加と強大な集落形成が可能であったと考えられます。

 

SOY CMSで多言語ラベルプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSで英語サイトを同じURLで運営したい方向けに、多言語ラベルプラグインを作成しました。 このプラグインにより、ラベルごとに日本語と英語の両方の表記を管理できます。 ただし、同一URLでの多言語サイト運営には、PHPモジュールや画像パス変換プラグインなど、追加の対応が必要です。 これらの対応が必要な方は、フォーラムからお問い合わせください。 プラグインを含むパッケージは、サイトからダウンロードできます。

 

ChromecastでSteam Linkを試してみた

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

 

SOY CMSで管理画面のIPアドレス制限を追加しました

/** Geminiが自動生成した概要 **/
SOY CMSの管理画面に、IPアドレス制限機能が追加されました。 従来の.htaccessによる制限だと、出張先などIPアドレスが異なる場所からアクセスする際に、都度設定変更が必要でした。 新機能では、管理画面から一時的に制限を解除する「アンロック」が可能になり、利便性が向上しました。 解除方法は、セキュリティに配慮し、URLを手動で作成する方式を採用しています。 今回のアップデートにより、柔軟かつ安全な管理画面へのアクセス制限が可能になりました。ダウンロードは公式サイトからどうぞ。

 

Minecraft: Pi Edition: RebornのSDKを使ってみる

/** Geminiが自動生成した概要 **/
Minecraft: Pi Edition: Reborn (MCPI) の拡張SDKを使い、ターミナルに"Helloworld"を出力する手順を紹介しています。 まずMCPI++ 2.4.3-3をインストールし、C++コンパイラなどの開発環境を整えます。 次に、"Helloworld"を出力するコードを記述した"hello.cpp"を作成し、共有ライブラリとしてコンパイル、MCPIのmodsディレクトリに配置します。 MCPIを実行すると、起動時に"Helloworld"が出力されます。これは、共有ライブラリ内の特定の関数がエントリポイントとして機能するためです。 記事では最後に、ゲーム画面に影響を与えるコードの作成に意欲を示しています。

 

SOY CMSでページカスタムフィールドを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSユーザーからブログページ設定に説明文追加の要望があり、ページカスタムフィールドプラグインを作成しました。このプラグインは、ブログページ以外の標準ページにも項目を追加できます。 追加項目は公開側表示と管理画面メモ双方を想定し、公開側表示速度への影響を抑えるため、cms:moduleを介して出力します。 公開側での使用方法詳細はプラグイン詳細画面に記載しています。 対応パッケージは下記サイトからダウンロード可能です。 https://saitodev.co/soycms/

 

SOY Shopで設定周りのデータベース参照回数を減らし表示速度を改善

/** Geminiが自動生成した概要 **/
SOY Shopの表示速度改善のために、データベース参照回数を減らす対策を行いました。 従来は各種設定状況やプラグインの有効状態確認の度にデータベースを参照していましたが、これを改善し、必要な設定を事前に取得・保持するように変更しました。具体的には、よく参照する設定はメモリ上に保持し、プラグインの有効状態は配列で管理することで、データベースへのアクセス回数を減らしています。 この結果、ページ表示の度に発生していたデータベースへのアクセスが減少し、表示速度の向上が期待できます。

 

キーボード一体型のRaspberry Pi 400を購入した

/** Geminiが自動生成した概要 **/
子供がRaspberry Pi 4B 8GBでマインクラフトをプレイするため、発熱と火傷が心配で購入に至った。ケースに入れているものの電子工作がしにくいという欠点もあった。マイクラを通してプログラミングに興味を持ち、Pythonでコードを書きながらプレイするようになった。Raspberry Pi 400の発熱がどれ程なのか検証したい。

 

第二世代遺伝子組み換え作物のゴールデンライス

/** Geminiが自動生成した概要 **/
この記事は、飼料米に含まれないカロテノイドを補う方法として、遺伝子組み換え作物であるゴールデンライスに着目しています。 筆者は、飼料米とトウモロコシの違いを比較し、カロテノイドを多く含むパプリカは海外依存度が高いため、飼料米の代替にはならないと述べています。 そこで、ビタミンA(ベータカロテン)を豊富に含むよう遺伝子組み換えされたゴールデンライスが、トウモロコシの利点を補完する可能性があると指摘しています。 さらに、ゴールデンライスに使われている遺伝子の由来やカロテノイドの含有量など、詳細な情報についてさらに調べていく意向を示しています。

 

SOY CMSのカノニカルURL挿入プラグインでshortlinkのメタタグを挿入するようにしました

/** Geminiが自動生成した概要 **/
SOY CMSのカノニカルURL挿入プラグインに、shortlinkメタタグを自動挿入する機能が追加されました。記事公開時に生成される長いURLと短いURLの混乱を避けるため、カノニカルURLに加えてshortlinkメタタグを自動で挿入します。 従来は記事タイトルをrawurlencodeした長いURLが生成されていましたが、記事IDを付与した短いURLも同時に生成されます。この場合、検索エンジンがどちらのURLを優先してインデックスするか不明瞭になるため、カノニカルURLとshortlinkメタタグで明示する必要があります。 今回のアップデートにより、カノニカルURLメタタグの下にshortlinkメタタグが自動挿入されるようになり、SEO対策が強化されます。アップデートパッケージはサイトからダウンロード可能です。

 

OpenStreetMap API版Soil & Geoロガー

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

 

抵抗値の表示

/** Geminiが自動生成した概要 **/
この記事では、抵抗器の抵抗値を読み取る方法について解説しています。抵抗値は、抵抗器に塗られた色のパターンによって識別できます。各色の帯は数字を表し、計算式を用いることで抵抗値を特定できます。 しかし、抵抗値の範囲が広いにもかかわらず、抵抗器の物理的な大きさが同じであることに疑問が生じます。これは、抵抗器の材料である金属の電気伝導率に関係する可能性があります。 この記事では、抵抗値の読み取り方について詳しく説明し、抵抗器の大きさと抵抗値の関係についての疑問を提起しています。

 

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

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

 

水田でカワニナの餌の付着珪酸を増やすには

/** Geminiが自動生成した概要 **/
## 中干しをしない稲作で利益率向上の確信を得た理由(250字以内) 著者は、水田における中干しの効果に疑問を持ち、試験的に中干しを行わない稲作を実践しました。その結果、収量や品質に問題はなく、むしろ収量が増加する傾向が見られました。 中干しを行わないことで、用水量の削減、稲の根の成長促進、土壌の生物活性向上などの効果が期待できます。これらの効果により、稲の生育が促進され、結果として収量の増加につながると考えられます。 さらに、中干し作業の省略により、労働時間や燃料費などのコスト削減も実現しました。これらの結果から、中干しを行わない稲作は、従来の方法と比べて収量や品質を維持しながら、コストを削減できる可能性があり、利益率向上につながると確信を得ています。

 

SOY CMSのカスタムフィールドアドバンスドでリストフィールドを追加しました

/** Geminiが自動生成した概要 **/
SOY CMSのカスタムフィールドアドバンスドに、複数の値を管理できる「リストフィールド」が追加されました。記事投稿画面ではリスト形式で値を入力し、公開側ではul/liタグで出力できます。 特徴的なのはテンプレートへの記述方法です。通常のフィールドと異なり、 `cms:id="{フィールドID}_list"` で囲んだ部分が繰り返し出力となり、繰り返しの中では `cms:id="value"` で各値を出力します。 このアップデートを含むパッケージは、サイトー開発のSOY CMS公式サイトからダウンロードできます。

 

コオロギせんべいを食べてみた

/** Geminiが自動生成した概要 **/
著者は無印良品のコオロギせんべいを試食し、エビのような味と食感だったと報告しています。コオロギは、高タンパクで環境負荷の低い食品として注目されています。飼育に必要な資源が少なく、成長も早いため、持続可能なタンパク源として期待されています。一方で、キチンによるアレルギー concerns も存在します。著者は、将来的に大豆肉やコオロギなどの代替タンパク質が、牛肉や牛乳に取って代わる可能性を示唆しています。鶏肉は環境負荷が比較的低いため、動物性タンパク質としては残ると予想しています。さらに、コオロギパウダーには鉄分や亜鉛が豊富に含まれているという利点も追記されています。

 

水耕栽培のアップ剤とダウン剤

/** Geminiが自動生成した概要 **/
水耕栽培では養液のpH管理が重要で、成分の吸収に影響を与える。pH調整にはアップ剤とダウン剤を使用するが、成分が非公開の製品が多い。しかし、General Hydroponicsの製品は成分を公開しており、アップ剤は水酸化カリウムと炭酸カリウム、ダウン剤はリン酸を使用している。これらは高濃度では危険な劇物であるため、取り扱いに注意が必要。pH調整は経験だけでなく、化学的な理解も重要であることを示唆している。農業高校の生徒に肥料の話をした経験から、土壌のpHや肥料成分の知識不足を実感し、経験だけでなく科学的知識に基づいた農業の必要性を訴えている。

 

SOY CMSのモジュールで公開期限付きのcms:ignoreのようなものを作成してみる

/** Geminiが自動生成した概要 **/
SOY CMSで公開期限付きcms:ignoreを実現するモジュールの作成方法を解説。指定期間内のみコンテンツを表示する機能で、`/ドキュメントルート/サイトID/.module/parts/ignore.php`にPHPコードを記述する。コードでは`mktime`と`time`関数で期間を指定し、`addModel`で表示条件を設定。テンプレートには`<!-- cms:module="parts.ignore" -->`等を記述して使用する。SOY Shopでは`soycms_ignore`を`soyshop_ignore`に、`cms:module`を`shop:module`に変更すれば利用可能。

 

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

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

 

SOY Shopで子商品の検索回数の設定で高速化

/** Geminiが自動生成した概要 **/
SOY Shopリリース10年を経て、一部ショップで商品データ増加による表示速度低下が見られた。高速化のため、商品一覧・詳細ページで子商品データ取得設定を追加。これにより、表示件数分のSQL実行を伴う`child_item_list`処理を省略可能に。商品数と表示件数によってはDBアクセス数が膨れ上がるため、今回の対応でパフォーマンス改善を見込む。最新版はサイト(https://saitodev.co/soycms/soyshop/)からダウンロード可能。

 

SOY CMSでラベルフィールドを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSのカスタムフィールドアドバンスドで記事フィールドを拡張し、ラベルのみを選択して紐付いた記事一覧を出力する要望に応えるため、ラベルフィールドプラグインを開発。記事投稿画面にラベル選択項目を追加し、記事詳細画面で選択したラベルに関連する記事一覧を表示する機能を提供。当初はカスタムフィールドアドバンスドへの実装を試みたが、メモリ使用量の問題で断念し、プラグインとして独立させた。このプラグインを含むパッケージはsaitodev.co/soycms/からダウンロード可能。

 

スダジイの尾状花序の上をハナバチが歩く

/** Geminiが自動生成した概要 **/
近所の街路樹のスダジイが満開となり、多数のハナバチが訪花し、翅音が響き渡っていた。筆者は、ハナバチが雄花序の上を歩く様子を初めて観察できた。これは、知人の養蜂家の動画で見て以来、念願だった。スダジイの尾状の雄花序は、ハナバチにとって効率的に花粉を集められるため、春のボーナス期間と言える。街路樹だけでなく、本来森に生息するスダジイの保全は、ミツバチ保護にも繋がる。適切な森林管理の重要性を再認識した。

 

SOY Shopのクーポン自由設定プラグインでクーポン検索を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopのクーポン自由設定プラグインに、クーポン検索機能が追加されました。これは、期限切れクーポンが増え、管理画面の一覧が見づらくなったというユーザーからの要望に応えたものです。 従来、プラグインの詳細画面には検索フォームがなかったため、今回新たに実装されました。このアップデートにより、多数のクーポンの中から目的のクーポンを素早く見絞ることが可能になります。SOY Shopはリリースから10年以上が経過し、今後もユーザーの利便性向上のための改善が続けられます。最新版はsaitodev.co/soycms/soyshop/からダウンロードできます。

 

SOY CMSでカスタムフィールドアドバンスド イメージフィールドコピープラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSのカスタムフィールドアドバンスドで画像フィールドを使用する際、alt属性を含めて複数箇所に表示したい場合の課題を解決するプラグインが開発されました。標準機能では、2回目以降の表示に`cms:id="img*"`を使用するとalt属性が出力されない問題がありました。このプラグインを使用すると、`cms:id="img_copy"`のように指定することで、alt属性を含めたimgタグを出力できます。`_copy`の部分は設定で変更可能です。このプラグインを含むパッケージはsaitodev.co/soycms/からダウンロードできます。

 

SOY Shopで簡易ショッピングモール運営プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop用の簡易ショッピングモール運営プラグインが開発されました。従来、複数ショップでは顧客ポイントの共有化が課題でしたが、本プラグインは単一ショップに複数の「出店者」アカウントを追加することで解決。各出店者は自身の商品登録・注文情報・顧客情報(閲覧のみ)へのアクセスに制限され、他出店者の情報は見えません。これにより、顧客ポイントの共有が可能になります。現状、出店者用ページやカテゴリ管理機能は未実装。ショッピングモール運営希望者は問い合わせを推奨。プラグインはSOY Shopパッケージに同梱されています。

 

SOY CMSでページ切り替えプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSのページ切り替えプラグインは、指定期間中に特定のURLでアクセスされた際に、別のページコンテンツを表示する機能を提供します。 例えば、キャンペーン期間中のみトップページをキャンペーン専用のデザインに切り替えることができます。 管理画面で切り替え期間と対象ページ、表示ページを設定するだけで、URLを変更することなくコンテンツを切り替えられます。 さらに、意図しないアクセスを防ぐため、切り替え先ページへの直接アクセスはリダイレクトで元のページへ戻されます。 ダウンロードはsaitodev.co/soycms/ から可能です。

 

SOY Shopで自動注文無効プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shopのクレジットカード決済では、カード入力前に在庫を確保するため、入力を中断すると在庫が減ったまま注文が確定しない問題があった。これを解決するため、自動注文無効プラグインを作成。 設定した時間より前の仮登録注文を無効化し在庫を戻すことで、カード入力中断による在庫の減少を防ぐ。プラグインは仮登録から無効化までの時間を設定可能。クレジットカード決済特有の問題への対策として、在庫管理の精度向上に貢献する。

 

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

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

 

SOY CMSで複数ページフォームプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMS向け複数ページフォームプラグインが開発されました。このプラグインは、管理画面でページ構成と遷移を設定し、公開側でフォームを表示します。各ページの設定、完了ページでのSOY Inquiry連携、高度なページでのSOY2HTML利用、フォームデザイン変更といった機能を提供します。これにより、複雑な複数ページフォームの作成コストを大幅に削減できます。プラグインはsaitodev.co/soycms/からダウンロード可能です。

 

SOY Shop 2.0.0

/** Geminiが自動生成した概要 **/
非公式にメンテナンスされているSOY Shop 2.0.0βが公開されました。データベース構造は1系とほぼ変わらず、通常のバージョンアップ手順で適用可能です。主な変更点は、Bootstrapを使ったレスポンシブ対応の管理画面UIと、公開側ページの読み込み速度最適化です。後者は必要なクラスファイルのみを読み込むことでメモリ消費量を削減し、表示速度向上と同時アクセス耐性向上を実現しています。 HTMLキャッシュプラグインも同梱され、キャッシュ機能で更なるメモリ消費削減が可能です。ダウンロードはsaitodev.co/soycms/soyshop/ から。一部プラグインのUIはまだ2系に対応していませんが、順次修正予定です。

 

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

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

 

SOY Shop 2.0.0 β

/** Geminiが自動生成した概要 **/
SOY Shop 2.0.0βでは、管理画面のUIをSOY CMS 3系に刷新。開発元の停滞を受け、非公式ながらバージョンアップを実施。拡張性向上のため、デザイン崩れを防ぐ3系テンプレートを採用した。標準機能のUI変更は完了し、プラグイン対応を進めている。現在はカスタムフィールド系、初期プラグイン、PAY.JP/Coiney決済プラグインが対応済み。今後、予約カレンダーや伝票管理プラグインへの対応を予定。データベース構造は変更なし。ダウンロードはsaitodev.co/soycms/soyshop/ から可能。管理画面のみ使用モードの追加により、ECサイト構築だけでなく、会員管理システムなど多様な用途にも対応できるようになった。

 

SOY CMSで記事毎画像アップロードプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSの記事毎に無制限に画像をアップロードできるプラグインを開発。カスタムフィールドでは複雑になる複数画像管理を、独立したプラグインで実現。記事投稿画面にアップロードフォームを設置し、公開側のブログ詳細ページで表示できる。SQLのTEXTカラム容量分まで画像パスを保存可能。操作性には改良の余地があるものの、即興で開発したパッケージはsaitodev.co/soycms/からダウンロードできる。

 

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

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

 

SOY InquiryでParsley.jsを利用する際のチェックボックスの対応

/** Geminiが自動生成した概要 **/
SOY InquiryでParsley.jsを使用する際のチェックボックス対応方法として、管理画面で「required」属性と「data-parsely-trigger」属性を追加します。これにより、Parsely.jsと連携し、フォーム送信時にチェックボックスが選択されていない場合にエラーメッセージが表示されます。対応済みのパッケージは公式サイトよりダウンロードできます。

 

SOY InquiryでParsley.jsを利用する

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

 

SOY CMSでページ毎表示制限プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSのページ毎表示制限プラグインは、サイト運営中に追加するページを、管理画面ログイン時のみ表示可能にする機能を提供します。CMS組み込み時の全ページ非表示機能を、個別のページに適用できる形にしたものです。設定したページは、管理画面ログイン中であれば、別タブでも表示制限が有効です。このプラグインを含むパッケージはsaitodev.co/soycms/からダウンロードできます。

 

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

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

 

Ubuntuのサーバで特定のユーザのみSSHでパスワード認証を禁止したい

/** Geminiが自動生成した概要 **/
Ubuntuサーバーで特定ユーザ(例:hoge)のみSSHのパスワード認証を禁止し、公開鍵認証のみに制限する方法。 `/etc/ssh/sshd_config`を編集し、`PasswordAuthentication yes` (全体としてはパスワード認証有効)と`Match User hoge` `PasswordAuthentication no` (ユーザhogeはパスワード認証無効)を設定。 `sudo sshd -t`と`sudo service ssh restart`で設定を反映。hogeユーザは公開鍵認証でのみログイン可能となる。

 

SOY Shopで出荷予定日通知プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop用出荷予定日通知プラグインが開発されました。注文から即時出荷を売りにするサイト向けに、サイト上で現在の注文の出荷予定日を表示できます。営業日カレンダーと連携し、定休日を考慮した正確な日付を表示。表示文言は営業日・定休日の午前・午後それぞれ設定可能です。通常版に加え、商品ごとに異なる出荷日・文言を設定できる商品毎出荷予定日通知プラグインも追加されました。パッケージはsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

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

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

 

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

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

 

SOY Shopの商品詳細表示プラグインでパンくず中のリンクの設定を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの商品詳細表示プラグインで、パンくずのリンク先をカスタマイズできるようになりました。従来、商品詳細ページのパンくず内の「商品一覧」リンクは固定でしたが、今回のアップデートにより、管理画面の商品情報編集画面で任意のURLに変更可能になりました。 これにより、商品カテゴリページ以外にも、特定の特集ページなど、任意のページへリンクさせることができます。変更したURLは、商品詳細表示プラグインで出力されるパンくずに反映されます。 最新版はsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

SOY CMSのカスタムフィールドアドバンスドでペアフィールドを追加しました

/** Geminiが自動生成した概要 **/
SOY CMSのカスタムフィールドアドバンスドに、セレクトボックスの値に紐づく値を出力できる「ペアフィールド」が追加されました。記事投稿画面ではセレクトボックスと同様に表示され、設定画面で各項目に「ペア」となる値を設定できます。公開側では`cms:id="****_pair_1"`でペアの値を出力可能。****はフィールドIDです。例えば、`<img src="/img/<-- cms:id="staff_pair_1" /-->.png"`のように複雑なHTMLをシンプルに記述できます。複数ペア設定も可能になりました。この機能を含むパッケージはsaitodev.co/soycmsからダウンロードできます。

 

SOY Shopの商品詳細表示プラグインで商品の公開状態等を加味するように変更しました

/** Geminiが自動生成した概要 **/
SOY Shopの商品詳細表示プラグインが更新され、商品の公開状態と公開期間が反映されるよう改善されました。さらに、パンくずモジュールと連携して、フリーページで商品詳細ページと同様のパンくず表示が可能になりました。キャッシュ削除時の不具合も修正され、PHP Noticeエラーも表示されなくなりました。この更新により、商品ページの表示が正確かつ安定したものになります。

 

SOY Inquiryのアップロードカラムで画像のリサイズを追加しました

/** Geminiが自動生成した概要 **/
SOY Inquiryでアップロードフォームを設置した際、確認メールに画像を表示するには、PHPのメール送信機能では画像を直接埋め込めないため、HTMLメールで画像のURLを指定する必要がある。 送信メール設定でHTMLメールを利用し、メール本文にアップロードファイルへのURLを記述するSmartyタグを追加する。ただし、このURLは管理画面からのみアクセス可能なので、.htaccessでBasic認証を設定してセキュリティを確保する。 画像のURLは、SOY Inquiryのバージョンによって記述方法が異なり、古いバージョンではファイルIDを直接URLに含める方法、新しいバージョンでは専用のSmartyタグを使用する方法があるため、バージョンに合わせて適切な方法を選択する必要がある。

 

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

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

 

SOY Shopでキャンセルが頻繁に発生する事業向けの予約アプリを開発しました

/** Geminiが自動生成した概要 **/
SOY Shopの顧客管理機能を活用し、キャンセル発生頻度の高い就学前児童向けWebサービスの予約カレンダーを開発。Googleアカウントログイン機能、仮登録による会員限定アクセス制限、運営者による本登録承認フローを実装。スマホで空き状況確認・予約を簡素化し、クリック操作で予約完了までスムーズな導線を構築。Bootstrapテンプレートのカスタマイズにより操作性を向上。兄弟利用を想定した予約時情報入力機能も搭載。キャンセル発生時の迅速な空き状況更新にも対応。

 

SOY InquiryでjQuery UIのDatepickerを利用してみる

/** Geminiが自動生成した概要 **/
SOY Inquiryで日付入力にカレンダー形式を追加するには、jQuery UIのDatepickerを利用します。まず、フォーム設置ページのテンプレートにjQueryとjQuery UI、日本語化ファイルのCDNを読み込むscriptタグを追加します。次に、SOY Inquiryで日付のカラムを作成し、属性に`id="datepicker"`を設定します。これにより、フォームにフォーカスを当てるとカレンダーが表示され、日付を選択できるようになります。Datepickerは日付選択の制限等、高度な設定も可能です。詳細はjQuery UIの公式ドキュメントを参照ください。

 

SOY Inquiryで連番カラムを追加しました

/** Geminiが自動生成した概要 **/
SOY Inquiryにフォーム毎の通し番号を自動生成する機能が追加されました。この機能は、送信完了画面、自動返信メール、管理画面の受信一覧に表示可能です。通し番号は連番カラムで管理され、非表示設定も可能です。管理画面で連番カラムをフォームの最初に配置すれば、受信一覧での表示も実現できます。「次回お問い合わせ時に生成する番号」を設定することで、番号を飛ばすことも可能です。機能追加版はサイトからダウンロードできます。ただし、自作デザインのフォームを使用する場合は、PHPファイルの修正が必要です。修正方法の解説ページも用意されていますが、難しい場合はサイトから問い合わせも可能です。

 

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

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

 

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

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

 

カスタムフィールドアドバンスドの記事フィールドの使いどころ

/** Geminiが自動生成した概要 **/
SOY CMSのGravatar連携プラグインは、ブログ投稿者のプロフィール画像を簡単に表示できるツールです。Gravatarに登録されたメールアドレスと連携し、自動的に画像を取得・表示します。プラグイン設定画面でGravatarの画像サイズを指定でき、記事詳細ページやブログのサイドバーなど、任意の場所に設置可能です。 記事投稿時に投稿者のメールアドレスを入力するだけで、Gravatar画像が反映されるため、ユーザーの手間を省き、サイトの見栄えを向上させます。 画像がない場合はデフォルト画像が表示され、Gravatar未登録ユーザーにも対応しています。このプラグインで、手軽にブログに個性を加えることができます。

 

SOY CMSのカスタムフィールドアドバンスドで記事フィールドを追加しました

/** Geminiが自動生成した概要 **/
SOY CMSのカスタムフィールドアドバンスドプラグインに、記事を出力できる「記事フィールド」機能が追加されました。記事の投稿・編集画面で、ラベル設定済みの公開記事を選択し、任意の場所にその記事内容を出力できます。 現状は試作段階で、パフォーマンスへの影響を考慮し、選択可能な記事はラベル設定済みの公開記事20件までに制限されています。これは、長い定型文を記事によって出し分けたいというニーズに応えるための機能で、セレクトボックスから記事を選択する方式です。 制約事項として、記事の投稿・編集画面で指定できるのはラベル設定済みの記事のみ、ラベル指定時のセレクトボックスに表示される記事数は20件、選択できるのは公開記事のみとなっています。これらの制約は、今後の使用状況に応じて調整される予定です。

 

SOY ShopでSOY Shop新機能紹介プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shopの新機能紹介プラグインが開発されました。このプラグインは、SOY Shop管理画面の新着ページに、開発ブログで紹介されている新機能の記事一覧を表示します。開発者は、SOY Shopの豊富な機能をユーザーに最大限活用してほしいと考えていますが、新機能の情報が届きにくいことが課題でした。そこで、管理画面に新機能紹介記事を表示することで、ユーザーのオペレーション効率化や売上向上に繋がるヒントを提供することを目指しています。ただし、開発者寄りの情報になる可能性もあるため、掲載内容については、事例紹介なども含めて検討していく予定です。新機能紹介プラグインを含むパッケージはsaitodev.coからダウンロードできます。

 

SOY Shopで管理画面のみ使用モードを追加しました

/** Geminiが自動生成した概要 **/
SOY Shopは、9年の歴史の中で機能強化を重ね、ネットショップだけでなく業務アプリとしての需要が高まっている。今回、業務アプリ利用時のサンプルデータ削除の手間を省くため、「管理画面のみ使用モード」が追加された。サイト作成時にチェックを入れるだけで、サンプルデータなしで管理画面を利用できる。 業務アプリとして利用する場合はMySQLデータベース推奨。併せて、管理画面の使い始めのガイダンスも追加された。このアップデートにより、在庫管理や顧客管理など、SOY Shopを業務システム基盤として活用する際の初期設定が簡素化される。ダウンロードは公式サイトから可能。

 

SOY ShopでSQLiteからMySQLに移行するプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shopの長年の運営でSQLiteからMySQLへのデータベース移行の需要が高まり、今回専用の移行プラグインが開発された。SQLiteはファイルベースでサーバーのスペックに依存する一方、MySQLはサーバーベースでリソース割り当てによるパフォーマンスチューニングが可能となる。ただし、MySQL移行自体が速度改善を保証するわけではなく、サーバー環境によっては逆効果になる場合もある。特に共有サーバーでは注意が必要。移行プラグインは、サーバー移転を伴うデータベース移行作業の簡素化を目的としており、チューニング可能なサーバーへの移転と合わせて検討することが推奨される。プラグインはsaitodev.coからダウンロード可能。

 

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/ からダウンロードできます。

 

SOY CMS ASP版運営プラグイン

/** Geminiが自動生成した概要 **/
SOY CMSのASP版を提供するためのプラグインが開発されました。このプラグイン「SOY CMS ASP版運営プラグイン」は、SOY CMSのマルチサイト機能を活用し、利用登録フォームからアカウントと紐付いたサイトを自動作成します。ASP運営者はサーバーにSOY CMSとプラグインをインストールし、利用登録フォームを設置するサイトを作成。フォーム設置後、公開側からの登録でアカウントとサイトが作成されます。これにより、簡単にSOY CMSのASPサービスを提供可能になります。パッケージはsaitodev.co/soycms/からダウンロードできます。

 

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

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

 

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

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

 

SOY Shopの管理画面で業務に関係ない項目を非表示にして業務改善を行おう

/** Geminiが自動生成した概要 **/
SOY Shop管理画面の業務改善として、BtoC商売に不要な「勤務先名称」などの項目を非表示にする機能が実装されました。これは、特に電話注文時の入力ミスを減らし、オペレーターが入力に迷う状況を解消するためです。不要な項目を非表示にすることで、キーボード操作の時短、確認作業の効率化、新入社員向けマニュアル作成の手間削減など、多岐にわたる業務改善と間接的な経費削減が期待されます。本改修は、業務フローの見直しを促し、よりスムーズなショップ運営に貢献します。最新パッケージは公式サイトからダウンロード可能です。

 

SOY Shopの注文編集で配達時間帯の編集をセレクトボックス形式に変更しました

/** Geminiが自動生成した概要 **/
SOY Shopの注文編集画面で、配送時間帯の入力をテキストエリアからセレクトボックスに変更しました。 従来、ヤマト運輸B2等外部システムとの連携時に、時間帯の書式誤りによる不具合が発生する可能性がありました。今回の変更で、管理画面上で正しいフォーマットを選択式で指定できるようになり、操作ミスを防止、作業効率改善を実現します。 最新版はsaitodev.co/soycms/soyshop/ からダウンロード可能です。

 

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

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

 

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

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

 

Go言語でユニットテスト

/** Geminiが自動生成した概要 **/
Go言語では、関数の動作を検証するためにユニットテストを行います。テストコードの作成には、以下のような手順があります。 1. テストしたい関数の前に「Test」を付け、テスト関数を作成する。 2. テスト関数に「(t *testing.T)」パラメータを渡す。 3. 関数の引数と期待される値を設定する。 4. 関数を実行し、期待される値と実際の結果を比較する。 テストを実行すると、「ok」または「FAIL」が出力されます。「ok」はテストが成功したことを示し、「FAIL」はテストが失敗したことを示します。 テストを失敗させるには、期待される値と実際の結果を意図的に不一致にします。この場合、テスト結果は次のように表示されます。 ``` --- FAIL: TestJudgeEo (0.00s) func_test.go:10: 5は奇数なのでfalseを返さなければいけない ```

 

Ideapad 720SにUbuntuを入れてWi-Fiを使用する

/** Geminiが自動生成した概要 **/
Lenovo Ideapad 720SにUbuntu 18.04β版をインストールしたが、内蔵Wi-Fiアダプタは使用できなかった。Wi-Fiアダプタ自体はRealtek製で物理的には動作しているものの、対応するドライバが見つからない。ArchWikiやRealtek、Githubのリポジトリを調査した結果、rtl8821ceドライバが必要だとわかったが、Ubuntuに導入できる形では提供されていない。そのため、現時点ではUSB接続のPocketWifiを利用してインターネットに接続している。

 

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

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

 

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

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

 

SOY2HTMLでsoy:idを作る - HTMLLabel編

/** Geminiが自動生成した概要 **/
SOY2HTMLでPHPの処理結果をHTMLに表示するには、`soy:id`を利用します。PHP側では`addLabel`メソッドを使い、`soy:id`と同じ名前を第一引数、表示する値を`text`か`html`プロパティに設定した配列を第二引数に渡します。`text`は文字列をエンコードし、`html`はHTMLタグをそのまま出力します。`addLabel`は`createAdd`メソッドの簡略形で、本来は第二引数に`HTMLLabel`クラスを指定します。`soy2prefix`を指定すれば`soy:`部分を変更できます。

 

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個に制限する設定を追加し、様子を見ることにした。

 

Google Apps ScriptのHTML Serviceを試してみた

/** Geminiが自動生成した概要 **/
Google Apps Script (GAS) のHTML Serviceを利用して、HTMLファイルとGASのコードを連携させる方法を紹介しています。 具体的な手順として、Googleドライブ上にGASプロジェクトを作成し、index.htmlファイルに"Hello, World!"と記述、コード.gsファイルにはdoGet関数でHTMLファイルを読み込むコードを記述します。 その後、ウェブアプリケーションとして公開することで、ブラウザでHTMLの内容が表示されることを確認しています。 さらに、GASを学ぶ上でJavaScriptの知識が重要であることを補足し、関連技術としてNode.js、NW.js、GoogleドキュメントのOCR機能についても言及しています。

 

最近、WordPress疲れの方からのお問い合わせが増えました

/** Geminiが自動生成した概要 **/
WordPress疲れのユーザーからSOY CMSへの問い合わせが増加し、情報不足を訴える声が寄せられている。彼らは情報が少ないことを理由に公式マニュアルの拡充や書籍化を求めるが、開発元はこれに対応する意思はない。開発元はSOY Shopの業務効率化に注力しており、WordPressからの乗り換えユーザー獲得を目指していない。情報が少ない現状はチャンスであり、ユーザー自身が情報発信すればコアユーザーとしての地位を確立し、書籍化も可能だと考えている。開発元の動機は優れた販売方法を学ぶことであり、「まとめれば売れる」という意見より、「勝機を見出し、まとめて売ったら売れた」という報告を期待している。よって、情報不足に関する問い合わせへの対応強化は行わない。

 

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で全ての子商品の在庫数を確認する

/** Geminiが自動生成した概要 **/
SOY Shopで商品規格プラグインを利用している場合、全子商品の在庫数を簡単に確認する方法として、在庫管理プラグイン(または在庫数一括設定プラグイン)の活用が推奨されています。商品規格プラグインは子商品を利用するため、CSVエクスポートでの確認が煩雑になるためです。在庫管理プラグインでは、検索条件を指定して商品一覧を表示、在庫数の一括変更が可能ですが、今回、親商品を非表示にする機能が追加されました。具体的には、「表示件数:100件」、「公開状態:公開のみ」、「子商品の表示:通常商品以外」を設定することで、各規格ごとの子商品の在庫数のみが表示されるようになります。アップデート版はサイト(/soycms/soyshop/)からダウンロード可能です。

 

SOY CMS3.0.1とSOY Shop1.18.1の差分をマージしました

/** Geminiが自動生成した概要 **/
開発元退職後もSOY CMS開発を続ける理由は、情熱、責任感、コミュニティへの貢献にあります。SOY CMSのシンプルさと柔軟性は魅力であり、ユーザーにとって使いやすいCMSであり続けることを目指しています。退職によって開発が停滞する不安を解消し、継続的な改善とサポートを提供することで、ユーザーの信頼に応えたいと考えています。また、オープンソースの精神に基づき、コミュニティと協力しながらSOY CMSを発展させ、貢献していくことが重要です。個人的な思い入れだけでなく、ユーザーとコミュニティのための開発を続けることが、私のモチベーションとなっています。

 

SOY Shopで会員検索サイトを構築しました

/** Geminiが自動生成した概要 **/
SOY Shopの顧客管理機能を活用し、新潟県司法書士会の会員検索サイトを構築。標準機能とプラグイン(ユーザーカスタムサーチフィールド、顧客グループ、顧客住所GoogleMaps連携、ストレージ)を組み合わせ、簡裁代理権などのカスタム項目や事務所情報、地図連携を実現。管理画面は不要な注文・商品関連機能を非表示化し、会員管理に最適化。カート・マイページ機能も無効化。都道府県の標準設定を新潟県に設定するなど、ユーザビリティも向上。構築手順を紹介しつつ、検索結果・詳細ページ作成については問い合わせを促している。

 

SOY Shopでダウンロード販売商品グループを追加しました

/** Geminiが自動生成した概要 **/
SOY Shopのダウンロード販売機能が拡張され、子商品を持つグループ化が可能になった。これにより、例えば10巻の電子書籍を1商品として管理し、各巻を子商品として登録できる。商品規格プラグインと連携すれば、購入画面で巻数をセレクトボックスから選択できるようになる。このアップデートは、PAY.JPクレジットカード支払いモジュールとの併用で、ダウンロード販売サイトの開設をより手軽にし、ノウハウ販売などのビジネス展開を容易にする。

 

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

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

 

SOY ShopでGoogle Sign-In for Websitesプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop用Googleサインインプラグインが開発されました。このプラグインをインストール・設定すると、マイページログイン画面にGoogleログインボタンが表示され、クリックでGoogleアカウントでのログイン・新規登録が可能になります。既存ユーザーはログイン、新規ユーザーは登録後ログインとなります。シンプルな機能ですが、今後の拡張が予定されています。ダウンロードはsaitodev.co/soycms/soyshop/ から可能です。

 

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

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

 

SOY ShopでPAY.JPクレジットカード支払いモジュールを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop用のPAY.JPクレジットカード支払いモジュールが開発され、無料で簡単にクレジットカード決済を導入できるようになった。PAY.JPは初期費用・月額固定費不要のプランもあり、導入障壁が低い。モジュールの利用には、PAY.JPでアカウント作成後、APIキーを取得し、SOY Shop管理画面のモジュール設定に入力する。設定完了後、購入画面でクレジットカード支払いが選択可能になる。カード情報非通過にも対応済み。詳細はサイト(saitodev.co/soycms/soyshop/)で確認できる。定期課金モジュールも提供されている。

 

苗場山麓ジオパークの小滝四ツ廻りの運河跡

/** Geminiが自動生成した概要 **/
長野県栄村にある苗場山麓ジオパークの小滝四ツ廻りの運河跡を訪れた。ここは千曲川の河川敷にあり、かつて運河として利用されていた。時間の都合上、河川敷に降りて運河跡を間近に見ることはできなかったが、遠くからでも岩に掘られた穴を確認できた。この運河は凝灰円礫岩層を掘って作られたが、岩盤が非常に硬いため、綺麗な穴を空けるのは大変な作業だったようだ。栄村では山だけでなく、川も巧みに利用する文化があったことを感じさせる場所である。

 

土壌分析アプリSoil3 on SOY Shop

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

 

SOY CMS3.0.0とSOY Shop1.18.0の差分をマージしました

/** Geminiが自動生成した概要 **/
SOY CMS 3.0.0とSOY Shop 1.18.0が公開され、筆者がコードを検証しました。SOY ShopがPHP7に対応し、データベースに変更がない点は評価されるものの、懸念点が複数指摘されています。フォーラムで要望の多かったブログ記事の自動保存や総当たり攻撃対策、標準プラグインの機能追加(検索フォームなど)、SOY Shopの外税計算修正は未実装です。さらに、jQuery読み込み最適化により、既存のjQuery利用プラグインの大半が動作不能になっているため、バージョンアップの際は特にjQuery関連の動作確認を十分に行うよう強く推奨されています。

 

SOY CMSのブロックから出力されるリンクで外部サイトのURLを使用したい

/** Geminiが自動生成した概要 **/
SOY CMSのブロックで、タイトルリンクを外部サイトに設定する方法を紹介します。まず、カスタムフィールドアドバンスドをインストールし、リンクタイプのフィールド(例:out_site_link)を追加します。記事投稿時に、このフィールドに外部サイトのURLを入力します。次に、ページテンプレートのブロック内にあるタイトル出力部分の`<a>`タグに、`cms:id="out_site_link"`属性を追加します。例:`<a cms:id="out_site_link"><cms:id="title_plain" /></a>`。これで、ブロックのタイトルが指定した外部サイトへのリンクになります。この方法は、ブログページ専用の`b_block:id="entry"`や`b_block:id="entry_list"`内でも同様に利用可能です。

 

SOY CMS3.0.0βの差分をマージしました

/** Geminiが自動生成した概要 **/
開発元退職後も私がSOY CMS開発を続ける理由は、情熱と責任感にあります。SOY CMSは私の人生の一部であり、ユーザーにとって無くてはならない存在だと認識しています。退職によって開発が滞り、ユーザーに迷惑をかけることは避けたい。オープンソース化という選択肢もありましたが、継続的な開発とサポートを提供するため、個人で開発を引き継ぎました。収益化は二の次で、ユーザーのニーズに応え、SOY CMSを成長させることが最優先です。この決断は私にとって大きな挑戦ですが、SOY CMSとユーザーへの愛着が原動力となっています。

 

級化層理、どちらが上か?

/** Geminiが自動生成した概要 **/
城ヶ島の砂岩層に見られる級化層理から地層の上下を判断する方法について解説されています。級化層理とは、水中での粒子の沈降速度の違いにより、粗い粒子から細かい粒子へと粒径が変化する堆積構造です。写真では砂岩層の左(南)側が粒径が細かく、右(北)側が粗いため、級化層理の法則(細かい方が上)に従い、左上が新しい地層と判断できます。この知識は、今後の植生観察にも役立つと述べられています。

 

SOY Shopでカテゴリ用のカスタムサーチフィールドを追加しました

/** Geminiが自動生成した概要 **/
SOY Shopはカテゴリ向けカスタムサーチフィールドを追加。既存のカスタムサーチフィールドに統合し、カテゴリ詳細検索を強化しました。これにより、親子関係を超え、特定の条件を満たす複数カテゴリに紐付く商品を検索可能に。より詳細な商品検索フォームの設置を実現します。新機能は公式サイトで提供中です。

 

SOY Shop1.17.4分の差分をマージしました

/** Geminiが自動生成した概要 **/
SOY Shop 1.17.4はPHP7非対応、常時SSL未対応、税率計算の誤りが未修正のまま公開されたため、筆者はこれらの問題を修正。公式版の差分をマージした独自パッケージ「SOY CMS 1.17.4p7.X」をsaitodev.coで配布開始しました。このバージョンではオーダーカスタムフィールドの表示不具合も修正されています。カート部分の修正が多いため、バージョンアップの際は一部プラグインが動作しなくなる可能性があり、注意が必要です。

 

カスタムサーチフィールドでラジオボタン等の検索項目の多言語化対応を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopのカスタムサーチフィールドに、ラジオボタンなどの検索項目の多言語対応が追加されました。管理画面で各言語ごとに項目を設定することで、公開側では検索フォームの項目が自動的に多言語化され、検索も多言語の値に対応します。これにより、多言語サイトにおける高度な検索フォームの設置が容易になります。

 

SOY Shop商品紹介プラグインでカスタムサーチフィールドの値を出力可にしました

/** Geminiが自動生成した概要 **/
SOY CMSのブログ記事にSOY Shopの商品情報を表示する「SOY Shop商品紹介プラグイン」が、カスタムサーチフィールドの値を出力可能になりました。商品紹介プラグインは、ブログ記事に商品コードを紐づけることで、記事詳細画面に商品情報を表示する機能です。カスタムサーチフィールドは、商品名以外のスペック等で商品検索を可能にするSOY Shopのプラグインです。今回のアップデートにより、商品紹介プラグイン内でカスタムサーチフィールドの値(csf:id)が利用可能になります。最新パッケージはsaitodev.co/soycms/からダウンロードできます。

 

SOY CMSのバージョンアップについて

/** Geminiが自動生成した概要 **/
SOY CMSを古いバージョンから最新版にバージョンアップするには、0.1ずつ段階的にバージョンアップし、公式サイトのバッチファイルを適用します。1.5系以降は一気にバージョンアップできますが、初期管理者でログインしてキャッシュをクリアしてください。1.11系以降のSOY Shopは自動バージョンアップに対応しています。

 

SOY CMS1.8.14分の差分をマージしました

/** Geminiが自動生成した概要 **/
開発元退職後もSOY CMS開発を続ける筆者は、顧客からの要望とOSSへの貢献を動機としています。退職前は開発に携われなかったものの、現在は時間的制約がなくなり、積極的に取り組んでいます。PHP7対応など、公式版では対応が遅れている部分も独自に対応することで、顧客のニーズに応え、より良いCMSの提供を目指しています。また、オープンソース化によってコミュニティへの貢献も実現し、開発の喜びを感じています。将来的には公式版への還元も視野に入れ、SOY CMSの発展に尽力していく姿勢を示しています。

 

SOY Shopの商品情報の出力時にカテゴリのリンクを追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの商品情報出力にカテゴリリンクを追加しました。商品一覧と商品詳細ブロック内でカテゴリへのリンクを出力するタグが利用可能になります。商品グループの場合は、親商品名、詳細ページリンク、カテゴリ名とリンクも出力可能です。 また、商品一覧と検索結果ページのデータベース読み込み回数を最適化し、表示速度を向上させました。特に商品数が多いサイトで効果的です。更新版パッケージはsaitodev.co/soycms/soyshop/からダウンロード可能です。追加タグの詳細は同サイトのブロックタグページに記載されています。

 

SOY Shopで商品ごと送料設定モジュールの試作を作成してみました

/** Geminiが自動生成した概要 **/
SOY Shop用の商品ごと送料設定モジュールが試作されました。複数の作家がそれぞれ異なる送料で商品を販売する場合、商品ごとに送料とメールアドレスを設定できるようになります。同じ作家から複数商品を購入しても送料は1個分のみ加算されます。注文時には作家にも通知メールが送信されます。デモ画像では商品情報登録画面に地域別送料とメールアドレス入力欄が追加されています。このモジュールはサイト(/soycms/soyshop/)からダウンロード可能です。商品ごとではなくカテゴリごとに設定すれば、カテゴリ=作家として複数商品の送料を一括管理も可能になります。作家の商品販売に関する要望は問い合わせページ(/soycms/inquiry)から受け付けています。

 

SOY Shopのカスタムサーチフィールドの多言語化対応

/** Geminiが自動生成した概要 **/
SOY Shopのカスタムサーチフィールドが多言語化対応しました。商品名・カテゴリ名に続き、カスタムサーチフィールドの値も各言語毎に設定可能になり、CSVのインポート/エクスポートにも対応。管理画面では、各言語商品編集画面からカスタムサーチフィールドの設定を開き、言語ごとの値を入力できます。CSVによる多言語データの一括登録も可能になり、運用負荷を軽減。カスタムサーチフィールドは、カスタムフィールドと比べデータベーススキーマが洗練されており、表示速度の低下が起こりにくいメリットがあります。多言語対応版はsaitodev.coからダウンロード可能です。

 

SOY Shopでカスタムサーチフィールド(子商品一覧)を追加しました

/** Geminiが自動生成した概要 **/
SOY Shop向けプラグイン「カスタムサーチフィールド」に新機能「子商品一覧」が追加されました。この機能により、子商品のみを表示する商品一覧ページと検索結果ページを作成できます。親商品名とカテゴリ名も表示可能で、深い階層の商品カタログサイト構築に役立ちます。同時に、カスタムサーチフィールドで範囲項目と商品情報項目の併用時に検索機能が動作しない不具合も修正されました。改良版プラグインはサイト(https://saitodev.co/soycms/soyshop/)からダウンロード可能です。

 

SOY CMS1.8.13分の差分をマージしました

/** Geminiが自動生成した概要 **/
筆者はSOY CMSの開発元を退職後も開発を継続している。公式版1.8.13が1年半ぶりにリリースされたものの、フォーラムで報告済みの修正やPHP7対応は反映されておらず、ファイルマネージャのエラーも残存していた。そこで、自身で開発・公開しているパッケージに1.8.13の差分をマージし、PHP7対応版「SOY CMS1.8.13p7.X」として公開するに至った。公式版の更新内容の乏しさに対し、継続的な改善とサポートを提供することで、ユーザーニーズに応え続けている。

 

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

/** Geminiが自動生成した概要 **/
SOY CMSに総当り攻撃を仕掛けてみる。その4では、パスワードリスト攻撃への対策を検証しています。辞書攻撃ツールを使い、短いパスワードやありがちなパスワードを設定した場合、数秒で突破される危険性を示しています。対策として、パスワードの最低文字数を10文字以上に設定し、ランダムな文字列を使うことを推奨。ブルートフォース攻撃対策として、ログイン試行回数に制限を設けるプラグイン「Limit Login Attempts Reloaded」を紹介し、複数回のログイン失敗でアカウントをロックする方法や、一時的にIPアドレスをブロックする方法の効果を解説しています。また、WAF(Web Application Firewall)の利用も推奨し、既知の攻撃パターンをブロックすることでサーバー負荷を軽減できることを説明しています。

 

カスタムサーチフィールドのチェックボックスで商品詳細ページで選択した項目を表示したい

/** Geminiが自動生成した概要 **/
SOY Shopのカスタムサーチフィールドでチェックボックスの値を商品詳細ページに表示、更にリンク化する方法。管理画面でチェックボックス型のカスタムサーチフィールド(例:フィールドID「custom_check」、ラベル「カスタムチェック」)を作成し、各項目を設定。商品詳細テンプレートに`<!-- csf:id="custom_check_番号_visible" -->`と`<!-- csf:id="custom_check_番号" -->`を記述することで、選択された項目のみ表示される。番号は設定した項目の順番(0始まり)。リンク化は`<a href="{url}=<!-- csf:id="custom_check_番号" /-->">`で囲み、{url}をサイトURLに置き換える。

 

SOY Shopで管理画面の注文でもダミーアドレスを使用できる設定を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの管理画面での注文においても、ダミーアドレスを使用できる設定が追加されました。以前は公開側のみで利用可能だったダミーアドレス挿入モードを、管理画面側でも有効化できるようになりました。設定方法は公開側と同様で、有効化すると管理画面の注文画面でもダミーアドレスが挿入されます。これにより、メールアドレスをあまり使用しない業種でもSOY Shopを販売管理アプリとして活用しやすくなりました。このアップデートを含むパッケージはsaitodev.coからダウンロード可能です。

 

SOY CMSの404NotFoundページをカスタマイズしてみよう

/** Geminiが自動生成した概要 **/
SOY CMSのデフォルト404 Not Foundページはシステムが判別できるため、カスタマイズしてみた。外部サイトからのリンクで404 Not Foundにアクセスした場合、そのまま離脱される可能性を考慮し、サイト内のよく読まれている記事一覧を表示するように変更。これにより、偶発的な404アクセスでも他の記事に興味を持ってもらい、離脱防止を図る。

 

SOY Shopで予約サイトを運営する

/** Geminiが自動生成した概要 **/
スパーク運動療育西京極スタジオ様のWebサイト制作では、SOY Shopを活用した予約システムが導入されました。これにより、保護者はサイト上で簡単に療育の予約を行うことが可能になり、スタジオ側の手間も軽減されました。サイトデザインは、子供たちの成長をイメージした明るい色使いと、スタジオの温かい雰囲気を伝える写真が特徴です。また、レスポンシブデザインを採用し、様々なデバイスで快適に閲覧できます。さらに、SEO対策も施され、検索エンジンからの集客向上も期待できます。ブログ機能も備え、スタジオの最新情報や療育に関する有益な情報を発信することで、保護者とのコミュニケーション強化にも繋がっています。このサイトは、SOY Shopの柔軟性と拡張性を活かした好例と言えるでしょう。

 

SOY Shopの商品一覧ページでカスタムフィールドによるソートを設定する

/** Geminiが自動生成した概要 **/
SOY Shopで商品一覧をカスタム順に表示するには、カスタムフィールドを利用します。プラグインでカスタムフィールドを有効化し、「一行テキスト」型のフィールドを作成、これをソートに使用することを指定します。ページ管理から対象の商品一覧ページの設定を開き、「カスタム項目でソート」を選択、作成したフィールドを指定します。商品ごとに並び順を設定するには、各商品詳細ページのカスタムフィールドに数値を入力します。文字列としてソートされるため、1, 2, 11ではなく、101, 102, 111のように3桁の数値を使うことで意図しない並び順を回避できます。

 

SOY Shopの商品詳細ページで商品コードの置換文字列を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの商品詳細ページでSEO対策と商品コード表示の課題を解決するため、タイトルフォーマット等のメタタグに商品コードとカテゴリ名の置換文字列を追加。商品名に商品コードを含めることで発生するデータベース肥大化や表示変更の煩雑さを解消。商品名は本来の役割に特化させ、商品コードはメタタグで管理することで、システムの効率化と柔軟な表示を実現。この変更はGitHub上の最新SOY Shopパッケージに含まれており、SEO効果の向上と運用コストの削減に貢献する。

 

SOY Shopでカートかマイページの機能を使用しない場合は404を返そう

/** Geminiが自動生成した概要 **/
SOY Shopでカートやマイページ機能を使用しない場合、404エラーを返す設定が可能になった。カート設定でカートIDを「none」にすることで、カートページへのアクセス時に404エラーが返される。マイページも同様に、マイページIDを「none」に設定することで404エラーを返すことができる。これにより、顧客管理のみを行う場合などに、不要な機能へのアクセスを制限できる。表示内容はテンプレート管理の「none」テンプレートで編集可能。この機能はGitHub上のパッケージに含まれている。

 

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

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

 

ネットショップ用CMSはカタログサイトの構築にも向いている

/** Geminiが自動生成した概要 **/
カタログサイト構築にネットショップ用CMS(例:SOY Shop)を推奨。理由は、将来的な物販開始時のデータ移行が不要になるため。ブログ利用の場合、商品登録のインポートが煩雑になる。 CMSなら注文ボタン設置で物販開始が可能。事例としてコトブキ園のサイトを紹介。商品一覧・詳細ページがあり、豊富なコンテンツ登録が可能。高度な検索フォーム設置も容易。 会員制カートプラグインで直購入防止、SOY Inquiry連携で商品毎の問い合わせフォーム設置も実現できる。これにより、情報豊富で問い合わせ対応も可能なカタログサイトが構築できる。

 

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

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

 

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

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

 

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

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

 

Dropboxにバックアップする時はパスワード付きzipにしておく

/** Geminiが自動生成した概要 **/
Dropboxへのバックアップ時に、個人情報を含むデータベースをzip圧縮する際のセキュリティ強化策として、パスワード付きzipファイルの作成方法を紹介している。 zipコマンドの-eオプションで暗号化が可能だが、対話式でパスワード入力を求められるため、crontabでの自動化にはexpectコマンドを使用する必要がある。サンプルスクリプトでは、expectでパスワード入力を自動化し、指定ディレクトリをパスワード付きzipファイルとしてDropboxにバックアップする方法を示している。 スクリプトの実行例として、Dropboxへのアップロードとダウンロード後の解凍時にパスワードが要求されることを確認し、セキュリティが向上したことを示している。さらに、パスワードの強度を高める方法や都度生成する仕組みの必要性にも言及している。

 

SOY CMSのサイトのバックアップをDropboxで行う

/** Geminiが自動生成した概要 **/
SOY CMSサイトのDropboxバックアップ方法を紹介。まずDropboxアカウントを作成し、サーバーに64ビット版CLI版Dropboxをインストール。サーバをDropboxアカウントにリンク後、バックアップスクリプト(dbbackup.sh)を作成し、cronで毎朝3時にサイトディレクトリをzip圧縮してDropboxへ同期させるよう設定。自動起動設定としてcrontabの@rebootを利用。debファイル経由のインストール方法も追記。再起動しない場合はdropbox start -iコマンドを試す。パスワード付きzip化などの関連記事へのリンクも掲載。

 

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

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

 

SOY Shopでダミーのメールアドレスを挿入する設定を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopで電話注文時の商品オプション・規格対応のため、ダミーメールアドレス自動挿入機能を追加。管理画面で設定を有効化し、公開側で注文手続きを行うと、重複チェック済みのランダムな「...@dummy.soyshop.net」がメールアドレス欄に自動入力される。 このアドレスで注文すると確認メール等の送信が抑制され、メールボックスの圧迫を防げる。 パスワード設定で顧客情報の再利用も可能。 電話注文対応の課題を解決し、運営者の注文代行を効率化するアップデートとなっている。

 

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

 

私にとっての農業とSOY Shop

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

 

2016年初旬に使用していた栽培者向けの勉強会の資料の一部を公開します

/** Geminiが自動生成した概要 **/
京都農販と実施している栽培者向け勉強会が農閑期に再開されます。再開に先立ち、前回使用した「土壌分析の見方と活用法」の資料を京都農販サイトと当ブログで公開します。内容は肥料や農薬の無駄施肥による経費圧迫を避けるための基礎知識です。肥料の残留性や土壌劣化と経費増大の関係、その回避策についても触れています。内容は必要最低限に絞っているため、専門家には物足りない部分もあるかもしれません。

 

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

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

 

GitHub Pagesでページを作成してみた

/** Geminiが自動生成した概要 **/
GitHub PagesでWebページを公開する方法を解説した記事です。まず、GitHubでリポジトリを作成し、ローカルでindex.htmlを作成、プッシュします。次に、GitHub上でブランチをgh-pagesに切り替えることでページが公開されます。記事では画像付きで手順を説明し、最終的にhttps://{username}.github.io/{repository}でアクセスできることを示しています。

 

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

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

 

SOY ShopのURLの設定方法

/** Geminiが自動生成した概要 **/
SOY ShopのサイトURLは、`/CMSインストールディレクトリ/soyshop/webapp/conf/shop/`にある`サイトID.conf.php`(例:soy.conf.php)内の`soy_SOYSHOP_SITE_URL`で定義されています。 例えば`http://localhost/soy/`を`http://example.com/`に変更すれば、公開側のURLが変わります。サイトディレクトリは`soy_SOYSHOP_SITE_DIRECTORY`で変更可能です。ただし、ルート直下以外の運用は動作保証外のため、変更時はconf.phpのバックアップ必須です。

 

SOY Shopで注文の変更の際の内税の計算に誤りがあったため修正しました

/** Geminiが自動生成した概要 **/
SOY Shopの注文変更時に、内税計算に誤りがあったため修正されました。具体的には、管理画面で注文変更を行う際、内税が代金合計に含まれてしまう不具合と、数量変更時に以前の内税額が代金合計に加算される不具合が修正されました。修正により、内税は代金合計に含まれず、購入金額や手数料の変更ごとに消費税が再計算されるようになりました。この修正は本体への変更を含むためプラグイン配布はされず、GitHubからダウンロードする必要があります。

 

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

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

 

商品規格プラグインと非同期カートボタンプラグインで各規格の金額を調べてカートに入れる機能を追加した

/** Geminiが自動生成した概要 **/
SOY Shopの商品規格プラグインと非同期カートボタンプラグインの連携強化により、各規格の価格がカート投入前に動的に反映されるようになりました。従来、親商品の価格しか表示されなかった非同期カートの吹き出しに、選択した規格の価格と在庫状況が表示されるように改良。管理画面で規格ごとの価格を設定することで、在庫切れ表示にも対応。これにより、ユーザーは規格ごとの正確な価格情報を確認した上でカートに追加できます。新機能はGitHub上の最新パッケージから利用可能です。

 

WordPressのウィジェットを作ってみた2

/** Geminiが自動生成した概要 **/
WordPressウィジェット作成の続きで、設定画面を追加する方法を解説。前回作成したウィジェットにフォームを追加し、入力値を`$instance`に格納、`update`メソッドで保存、`widget`メソッドで表示する処理を実装。フォームの追加は`form`メソッド内でHTMLを記述、`update`メソッドでは入力値のサニタイズを行い、`widget`メソッドで`$instance`から値を取得し表示。管理画面と公開側で動作確認を行い、意図通り表示されることを確認し、簡易的なウィジェット作成が完了した。

 

WordPressのウィジェットを作ってみた1

/** Geminiが自動生成した概要 **/
WordPressプラグインのPHP記述を簡略化するため、ウィジェットを作成する方法を紹介。ウィジェットとは、プラグイン的な機能をサイドバーなどに挿入できる機能。HogeWorldウィジェットを作成し、hoge_world_widget.phpにWP_Widgetクラスを継承したコードを記述。プラグインを有効化し、ウィジェットをサイドバーに挿入することで"hoge world!!"と表示されることを確認。設定画面の追加については次回へ続く。

 

WordPressのプラグインを作ってみた2

/** Geminiが自動生成した概要 **/
WordPressプラグイン開発の続き。プラグイン用の管理画面を作成し、設定値を反映させる方法を紹介。add_action('admin_menu')で管理画面へのメニュー登録、add_menu_page()でメニュー表示設定、hoge_world_option_page()で管理画面のHTMLを記述。get_option()で設定値取得、update_option()で設定値保存。フォームからの入力値を保存し、更新メッセージを表示する処理を追加。最後に、保存した設定値(名前)をプラグインの出力に反映させ、公開側で表示を確認した。

 

WordPressのプラグインを作ってみた1

/** Geminiが自動生成した概要 **/
WordPressプラグイン作成の入門記事。REST APIサービスのWordPress対応のため、プラグイン「hoge_world」を作成する例を紹介。プラグインファイル(/wp-content/plugins/hoge_world/hoge_world.php)を作成し、コメントと`HogeWorld::call()`関数を定義。管理画面のプラグイン一覧に表示され、テーマファイル(例:sidebar.php)に`<?php HogeWorld::call(); ?>`を記述することで「hoge worldだー!」と表示されることを示している。

 

SOY Shopで初回登録時にメルマガ会員になるとポイントをプレゼントする機能を追加しました

/** Geminiが自動生成した概要 **/
SOY ShopのSOY Mail連携プラグインで、初回登録時にメルマガ会員になるとポイントプレゼントする機能が追加されました。プラグイン設定画面でポイント数を指定すると、カートとマイページの会員登録時に「メルマガ会員でポイントプレゼント」と表示され、登録完了後にポイントが付与されます。ポイントは顧客のポイント履歴に記録されます。この機能を利用するには、GitHubにある最新版SOY Shopをダウンロードする必要があります。

 

SOY Shopのクーポン自由設定プラグインで送料無料クーポンを発行できる様にしました

/** Geminiが自動生成した概要 **/
SOY Shopのクーポン自由設定プラグインに送料無料クーポン発行機能が追加されました。管理画面で「送料無料」にチェックを入れてクーポンを作成すると、カートで利用時に送料と同額が値引きされます。値引き額/率に加えて送料無料クーポンも発行可能になったことで、より柔軟なクーポン設定が可能になります。最新版はGitHub(https://github.com/inunosinsi/soycms/tree/master/package/soyshop)からダウンロードできます。

 

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

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

 

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

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

 

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

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

 

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

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

 

EC CUBEからSOY Shopにデータベースを引っ越す

/** Geminiが自動生成した概要 **/
EC-CUBEの動作遅延に悩むユーザーが増加し、高速なSOY Shopへの移行ニーズが高まっている。そこでEC-CUBEからSOY Shopへのデータ移行プラグインが開発された。このプラグインはEC-CUBEのデータベースから直接データを読み込み、SOY Shop用に変換・挿入する。パスワードはセキュリティ上、ランダムに設定され、ユーザーには再設定を促すメルマガ送信が推奨される。EC-CUBE2系と3系のデータ移行実績があり、フォーラムで配布されている。

 

SOY Shopで非同期カートボタンプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shopで非同期カートを実現するプラグインが開発されました。以前の記事で紹介された非同期カートボタンの実装方法では、特定IDの要素がない場合に動作が停止したり、カート追加時の商品個数が1に固定される問題がありました。このプラグインは、これらの問題を解決し、商品個数の指定も可能にします。インストールするだけで必要なスクリプトが自動挿入されるため、導入も簡単です。ダウンロードはsaitodev.co/soycms/soyshop/ から可能です。

 

SOY Shopでキャンペーンプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop用のキャンペーンプラグインが開発されました。管理画面でブログのようにキャンペーンコンテンツを作成・編集し、公開期間を設定できます。自動バックアップ機能も搭載。トップページやフリーページ、マイページ、カートページなど、表示場所を自由に指定可能です。キャンペーン詳細は専用のページに表示されます。利用にはSOY Shop 1.17.3p7.3以降、SOY CMS 1.8.12p7.6以降が必要です。GitHubからパッケージを入手できます。意見・要望はフォーラムへ。

 

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

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

 

SOY CMSのカスタムフィールドをCSVで並べ替え

/** Geminiが自動生成した概要 **/
SOY CMSのカスタムフィールドは、記事に様々なフォームを追加できる便利な機能だが、管理画面での表示順の変更が手間だった。特に数が増えると、一つずつ上下させる従来の方法は非常に面倒。この問題を解決するため、カスタムフィールドアドバンスにCSVによる並び替え機能が追加された。CSVをエクスポートし、ファイル内で順番を調整後、インポートすることで、自由に並び替えが可能になった。

 

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以降で適用可能。

 

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で動作するようになった。

 

土壌分析アプリsoil2 by Go

/** Geminiが自動生成した概要 **/
Go言語で開発された土壌分析Webアプリ「soil2」の紹介。 入力された土壌分析値をグラフ化し、将来的にはサードパーティアプリとの連携も視野に入れている。Go言語採用理由は、コンパイル言語のためサーバー環境によるコード変更の手間を省き、処理速度の向上も見込めるため。REST APIと管理者機能を実装し、グラフ表示にはChart.jsを使用。当初は身内向け公開予定だったが、最終的にはSOY Shopのマイページ機能に統合された。

 

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

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

 

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/からダウンロード可能です。メール通知機能も追加済みです。

 

サイバー攻撃が何と多いことか

/** Geminiが自動生成した概要 **/
知人の知人のWordPressサイトが乗っ取られ、攻撃サーバーとして悪用された事例を紹介。脆弱なCMSバージョン、簡単なパスワード、推測されやすい管理画面URLが原因だった。また、知人はトロイの木馬、他の知人は無害なファイル増産プログラムの被害に遭い、筆者自身もIEの設定を書き換えられる被害を受けた。攻撃者は無防備なサイトやPCを狙うため、セキュリティ対策は必須。対策学習として、攻撃者の心理を理解できる「サイバーセキュリティプログラミング」や、Webセキュリティの基礎知識を学べる「徳丸浩のWebセキュリティ教室」などを推奨。インターネットの危険性を常に意識し、無関係な人などいないことを認識すべきだと警告している。

 

京都市内で起こったすごいこと

/** Geminiが自動生成した概要 **/
京都農販がウェブサイト公開を記念し、黒腐菌核病への画期的な取り組みを公開した。決定的な対処法がないこの病気に対し、土壌のpHを上げることで感染拡大を抑えるという仮説を立て、肥料選定が課題となった。消石灰は弊害が多いため却下され、著者の提案した炭酸苦土も採用されなかった。最終的に選ばれた重炭酸カリ(サンパワーカリ)の選定理由は京都農販の今後の発表に委ねられる。この事例は、施肥の組み合わせ次第で予想外の成果が得られる可能性を示唆しており、農業における更なるイノベーションへの期待を高めている。著者は現場で活躍する人々への支援を表明している。

 

Webでの肥料の販売の開始です

/** Geminiが自動生成した概要 **/
京都農販のWebサイトが公開されました。SOY Shopで構築されたこのサイトは、現在は商品カタログですが、将来的にはネットショップとして運用予定です。開発者はSOY Shopに5年間携わっており、そのノウハウを活かし、特に商品詳細ページに注力しています。商品情報に加え、「この肥料を使うために、これは知っておきたい!」セクションでは、SOY CMSで作成した関連コラム記事を自動表示。肥料の使用方法や実際の栽培事例を学ぶことができます。これにより、ショップ管理者は商品情報に集中し、営業担当者はブログ投稿でサイトを盛り上げることが可能になります。スマホ対応も実装済みです。今後はコンテンツ拡充に注力していきます。

 

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

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

 

SOY ShopでGoogle+の投稿ウィジェットを作成してみた

/** Geminiが自動生成した概要 **/
SOY ShopでGoogle+の投稿を表示するウィジェットを作成する方法を紹介しています。Google+は投稿表示ウィジェットを公式に提供していないため、自作する必要があります。 SOY Shopのパーツモジュール機能を利用し、PHPで記述することで実現しました。`http://rss2lj.net/g+/{Google+ID}` からGoogle+の投稿をXML形式で取得し、PHPの`simplexml_load_file()`関数で解析、整形して表示します。具体的には、日付とタイトル、リンクを取得し、リスト形式で5件まで表示する処理を実装しています。

 

SOY Shopで商品規格毎に在庫数と価格を設定する

/** Geminiが自動生成した概要 **/
「SOY Shop」の拡張機能として、商品の規格ごとに在庫数と価格を設定できるプラグインを紹介。このプラグインにより、サイズや色などの規格を登録し、それぞれに在庫と価格を割り当てることができる。規格の選択によって、商品詳細ページにセレクトボックスが表示され、選択内容に応じた商品がカートに追加される。これにより、商品バリエーションを柔軟に管理し、顧客の利便性を向上させることが可能となる。

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

Powered by SOY CMS   ↑トップへ