ブログ内検索

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

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

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

 

SOY CMSで一つ深い階層にサイトを作成する

/** Geminiが自動生成した概要 **/
SOY CMSで、サイトを一つ深い階層に作成する方法を解説します。 まず、サイトIDを「hoge」として、/var/www/html/hogeにサイトを作成します。次に、/var/www/html/hoge/huga のように、hugaディレクトリを作成し、必要なファイルを配置します。 データベースのSiteテーブルを開き、サイトIDが「hoge」のレコードのurlとpathを、それぞれ `http://example.com/hoge/huga/` と `/var/www/html/hoge/huga/` に変更します。 最後に、/var/www/html/hoge/huga/.htaccess の RewriteBase を `/hoge/huga` に変更します。 稼働中のサイトのURLを変更する場合は、上記の手順に加えて、SOY CMS管理画面でサイトURLを変更する必要があります。

 

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

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

 

SOY Shopのタグクラウドプラグインでカテゴリ分けの機能を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopのタグクラウドプラグインに、タグ候補のカテゴリ分け機能が追加されました。タグ数増加に伴うユーザビリティ向上のため、候補をカテゴリで絞り込めるようになりました。アップデート版パッケージはsaitodev.co/soycms/soyshop/からダウンロード可能です。以前公開されたタグクラウドプラグイン(記事ID:4008)の機能拡張となります。

 

SOY Shopの商品名検索でオートコンプリートを追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの商品検索にオートコンプリート機能を追加するプラグインがリリースされました。商品ごとに読み方を登録することで、ひらがな・カタカナでの検索や、漢字・ひらがな・カタカナの部分一致検索が可能になります。 プラグインはJSライブラリを自動で読み込みますが、HTMLの記述によってはうまくいかない場合もあるため、その際は掲示板への連絡を推奨しています。最新版はサイト(https://saitodev.co/soycms/soyshop/)からダウンロード可能です。

 

SOY Shopの標準配送モジュールの配送料無料設定で例外の設定を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの標準配送モジュールに、特定商品を含む場合に配送料を無料にする例外設定機能が追加されました。 設定方法は、指定商品がすべてカートにある場合(AND)、いずれか1つでもあれば(OR)、指定商品のみカートにある場合(MATCH) の3種類。複数設定も可能です。 例えば、AとB商品を指定しAND条件なら、AとB両方カートにあると送料無料。OR条件ならAかBどちらかあれば送料無料。MATCH条件ならAとBのみカートにある場合のみ送料無料となります。 新機能は最新パッケージ(https://saitodev.co/soycms/soyshop/)から利用可能です。

 

SOY Shopで注文検索の条件の自動入力で教育コストと人的ミスを減らす

/** Geminiが自動生成した概要 **/
SOY Shopの注文検索に、配送条件を自動入力するボタンを追加することで、配送漏れなどの人的ミスを削減する拡張機能を開発しました。従来、複数の検索条件を手動入力する必要があり、ミスが発生しやすい状況でした。この拡張機能により、ボタン一つで必要な条件が自動入力されるため、操作手順が簡略化され、教育コストと人的ミスが大幅に削減されます。繁忙期のアルバイト教育も効率化され、クレーム対応の減少も見込めます。この機能は標準搭載ではなく、個別の相談に応じて実装します。

 

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 Shopでクレジットカード支払いが正常に終了しなかった注文を通知する機能を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopで、クレジットカード決済は完了したのに注文が未完了となる問題が発生。原因はスマホのWiFiとセッションの喪失によるもので、決済モジュールのリダイレクト処理中に発生すると注文受付処理が失敗する。この問題に対処するため、決済成功&注文未完了の状態(仮登録&支払確認済)の注文を管理画面の新着ページにエラー通知として表示する機能を追加。通知機能は「新着注文一覧表示プラグイン」の一部として実装。この対応で、注文の見落としを防ぎ、問題発生時の早期発見を目指す。ただし、注文数の少ないサイトでは有効性低いため、更なる改善が必要。

 

SOY CMSのサイトマッププラグインでカノニカルURL挿入プラグインの設定を加味するようにしてみた

/** Geminiが自動生成した概要 **/
SOY CMSのサイトマップがSearch Consoleで重複URLとして除外される問題が発生。原因は、Googleがクロール時にカノニカルURL挿入プラグイン適用後のURLを正規URLとして認識していたため。サイトマップはプラグイン適用前のURLを出力していたため、両者に差異が生じ、重複と判断された。 この問題を解決するため、サイトマッププラグインがカノニカルURL挿入プラグインの設定を反映するように改修。修正版はサイトオーナー向けパッケージ(https://saitodev.co/soycms/)で提供。SOY Shopにも同様の対応済み。

 

SOY Shopで管理画面からの注文で0円商品の追加の設定を設けました

/** Geminiが自動生成した概要 **/
SOY Shopの管理画面からの注文機能が強化され、未登録商品を0円かつ0個で追加できるようになりました。これは、購入商品に付随するサービス品を納品書に含めるニーズに応えるための改修です。 従来、カートには0円商品は追加できましたが、在庫管理ができない点が課題でした。今回のアップデートで、サービス品も商品登録することで在庫管理が可能になります。管理画面の注文時に商品ごとの価格設定を確認する機能と合わせて、より柔軟な注文処理を実現します。最新版は公式サイトからダウンロード可能です。

 

Let's Encryptでwwwありなしに対応する

/** Geminiが自動生成した概要 **/
Let's Encryptを用いて、wwwあり(www.example.com)なし(example.com)両方のドメインでhttpsアクセスを実現する方法。Ubuntu 18.04、Apache2環境を前提とする。 まず、certbotをsnapでインストールし、example.comのhttps化を行う。その後、www.example.comの証明書取得のため、`certbot certonly --webroot`コマンドを実行(webroot-pathはドキュメントルート)。最後に、Apacheの設定ファイル(000-default-le-ssl.conf)にwww.example.comのVirtualHost設定を追加し、example.comへのリダイレクトを設定、Apacheを再起動する。

 

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

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

 

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

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

 

SOY Board on SOY Shop

/** Geminiが自動生成した概要 **/
SOY Shop向け掲示板アプリプラグイン「SOY Board on SOY Shop」を開発中。顧客とマイページ機能を活用し、手軽に掲示板を設置できる。中小企業のWeb活用増加を背景に、古くからある掲示板の価値が見直されていると判断。既存のSOY Boardの改修が困難だったため、SOY Shop上に構築する形とした。PHP最新バージョンへの対応、多様なXML出力、HTML投稿を重視し、既存のOSSではなく独自開発を選択。特にXML出力は、サイトマップ登録や新着通知の細分化に活用予定。HTML許可によるXSS対策の難しさは課題。ローカル環境での動作確認推奨、試用時は新規ショップサイト作成必須。最新パッケージはsaitodev.co/soycms/soyshop/からダウンロード可能。

 

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

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

 

さくらインターネットでテスト環境を作って、SOYCMSとSOYShopを動かしてみる

/** Geminiが自動生成した概要 **/
さくらインターネットの2週間お試しで、SOYCMSとSOYShopのテスト環境を構築する方法。Windows10環境で、共有サーバプレミアムプランに申し込み、Filezillaでサーバに接続する。接続情報は仮登録メールに記載されている。wwwフォルダにSOYCMSをアップロードし、「http://(ドメイン)/cms/admin」で管理画面を確認。次に、SOYShopをダウンロードし、appとSOYShopフォルダをwww/cms直下に置く。管理画面にSOY Shopログインが表示されれば完了。

 

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

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

 

PHPのハッシュテーブルを見る

/** Geminiが自動生成した概要 **/
PHPのハッシュテーブルの実装を調査した。`HashTable`は`_zend_array`構造体で定義され、`Bucket`構造体の配列`arData`を持つ。`Bucket`は値(`zval`)、ハッシュ値(`h`)、キー(`key`)を保持する。`zval`は`zend_value`共用体を含み、関数ポインタ`zend_function`もそのメンバの一つ。`zend_function`自体は共用体で、内部関数やユーザー定義関数の情報を保持する構造を持つ。関数登録は`HashTable` - `Bucket` - `zval` - `zend_value` - `zend_function`と複数のデータ構造を介して行われることが判明した。

 

ハッシュテーブルのチェイン法を見る

/** Geminiが自動生成した概要 **/
PHPのハッシュテーブルの実装であるチェイン法を、単方向連結リストを用いて再現した。ハッシュテーブルへの要素追加、検索、初期化、リサイズの関数をPHPで作成し、衝突が発生するケース(アズキとショウブ)で動作を確認した。結果、インデックス2にアズキとショウブが連結リストで格納され、検索関数も正しく動作することを確認できた。この実装はPHPのzvalや変数登録の仕組みを理解する上で役立つ。ただし、PHPのチェイン法は双方向連結リストを用いており、また、連結リストではなく配列を用いる実装もある。

 

データ構造のハッシュテーブルを見る

/** Geminiが自動生成した概要 **/
PHPの関数はハッシュテーブルというデータ構造で管理される。ハッシュテーブルは高速な検索が可能だが、ハッシュ値の衝突という問題がある。この記事では、簡単なハッシュ関数とハッシュテーブル操作関数を作成し、文字列を登録する例を通してハッシュテーブルの基本的な動作を説明する。複数の文字列を登録する際に、ハッシュ値の衝突が発生し、一部の文字列が登録されないことを示し、衝突回避のための方法としてハッシュテーブルのリサイズやハッシュ関数の改良、そしてチェイン法の存在を示唆している。

 

PHPの関数の登録2

/** Geminiが自動生成した概要 **/
PHPの関数の登録は実行時に動的に行われる。includeされたファイル内の関数は、includeされるまで定義されない。また、条件分岐で囲まれた関数は、条件が満たされなければ定義されない。つまり、関数の定義記述が実行時に通過しなければ、関数は登録されない。この挙動は、`get_defined_functions()` の結果で確認できる。これらの結果から、PHPはマルチパス方式ではなく、実行時にコードを解釈・実行しながら関数を登録していることがわかる。

 

PHPの関数の登録

/** Geminiが自動生成した概要 **/
PHPの関数登録について`get_defined_functions`関数を用いて調査。ユーザー定義関数は'user'配列に、ビルトイン関数は'internal'配列に格納される。関数の定義箇所に関わらず、実行前に`get_defined_functions`を実行すると、定義済みの全関数が取得できる。これはPHPがマルチパス方式を採用し、実行前にファイル全体を読み込んで関数登録を完了させているためと考えられる。

 

PHPのzvalと変数の作成を見る

/** Geminiが自動生成した概要 **/
PHPの変数はzval構造体とzend_value共用体で表現される。zvalは型情報を持ち、zend_valueは実際の値を保持する。整数、文字列、配列など、型の違いはzend_valueの異なるメンバを使用することで実現される。変数名とzvalの関連付けはシンボルテーブルを介して行われる。`$a = 1`のような代入では、zvalが初期化され、zend_valueの`lval`に1がセットされ、シンボルテーブルに"a"というキーでzvalへのポインタが登録される。これにより、変数名から対応する値にアクセスできるようになる。

 

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

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

 

さくらのメールボックスからのメールをGmailで受信した際の?のアイコンを回避

/** Geminiが自動生成した概要 **/
さくらのメールボックスからGmailへメール送信時、送信元認証がされていないため「?」アイコンが表示される問題を解決する方法。お名前.comで取得したドメインのDNS設定で、さくらのメールボックスのホスト名を用いてSPFレコード `v=spf1 a:ホスト名 mx ~all` をTXTレコードとして追加する。設定後、mxtoolbox.comでSPFレコードを確認し、Gmailで受信したメールのアイコンが「?」から人物アイコンに変われば成功。

 

株式会社フィールド&マウンテン様のヤマトリップショップの制作を行いました

/** Geminiが自動生成した概要 **/
株式会社フィールド&マウンテン様の山小屋グッズECサイト「ヤマトリップショップ」(https://yamatrip.com/shop/)を制作しました。既存顧客基盤を持つ「やまどうぐレンタル屋」の緑白カラーを基調としたスマホ向けデザインを採用し、リリース後すぐに注文が続々と入っています。 特徴的な機能として、商品詳細ページに100円~5000円を選択できる投げ銭ボタンを実装。商品と投げ銭の同時購入も可能です。また、複数の商品を同時にカートに追加する隠し機能も搭載しています。 ボトル、手ぬぐい、Tシャツなど魅力的な商品が揃っており、やまどうぐレンタル屋が築き上げてきた顧客との信頼関係が、ECサイトの初期の成功に繋がっていると感じています。

 

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/)からダウンロード可能。

 

【SEO対策】IPv6

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

 

SOY Shopの顧客機能を活用して買取管理アプリを開発しました

/** Geminiが自動生成した概要 **/
SOY Shopを活用した買取管理アプリが人文と社会の書林様サイト(https://www.tetsugakukaitori.com/)に導入されました。従来のSOY Inquiryでの買取依頼フォームに加え、SOY Shopの顧客管理機能と連携し、買取依頼の一元管理を実現。管理画面には専用の買取管理ページが設けられ、SOY Inquiryからの申込情報と連携。顧客はマイページから査定手続き、身分証登録、問い合わせ、査定額承認などが行えます。運営側は手続き状況変更、状況に応じたメール送信、査定結果アップロード、集荷伝票自動作成が可能。顧客情報はSOY Shopの顧客データベースと連携し、2回目以降の買取依頼を簡略化。管理画面のみ使用モードも活用しています。

 

SOY CMSでドメインが異なる複数のサイトを運営する

/** Geminiが自動生成した概要 **/
SOY CMSで異なるドメインの複数サイト(example.kyoto, other.example.kyoto)をさくらVPS上の単一サーバーで運用する手順を記述。Let's Encryptでワイルドカード証明書(*.example.kyoto)を取得し、既存証明書を削除後、お名前.comのDNS設定でTXTレコードを追加。SOY CMSでサイト毎にURLを設定し、Apacheのドキュメントルートにindex.phpと.htaccessを設置、ドメインに応じてサイトを切り替えるよう設定。ワイルドカード証明書の更新は、お名前.comでは自動化できないため手動、またはさくらのクラウドDNSへの移管が必要。

 

SOY Shopで商品毎パーツモジュール選択読み込みプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shopの商品詳細ページで商品ごとに異なる定型文を表示するプラグインが開発されました。 通常、プラグインで定型文を設定するところを、このプラグインはパーツモジュール内で他のパーツモジュールを呼び出すことで実現しています。商品情報に設定したモジュールIDに対応するパーツモジュールを`shop:module="common.fixed_form_module"`で呼び出すと、商品に応じた定型文が表示されます。HTMLだけでなくPHPのモジュールも使用可能なので、動的な表示にも対応できます。このプラグインを含むパッケージはsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

SOY Shopで振込先情報プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop管理画面に振込先情報編集機能を追加するプラグインを作成しました。このプラグインを使用すると、顧客の振込先情報を管理し、返金時の送金に利用できます。顧客はマイページからも振込先情報を登録可能です。

 

SOY Shopで商品管理のみの権限の設定を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopに商品管理のみの権限設定が追加されました。外部委託業者などに商品登録業務を依頼する場合、この権限を付与することで、商品ページ関連の操作のみを許可できます。管理画面へのログイン後、ナビゲーションには商品関連の項目のみ表示され、URL直打ちによる未許可ページへのアクセスも制限されます。今回のアップデートでは権限周りのコードもリファクタリングされ、新たな権限の種類を容易に追加できるようになりました。最新版はsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

SOY Shopで販売管理アプリの構築に挑戦

/** Geminiが自動生成した概要 **/
SOY Shopで販売管理アプリ構築に挑戦中。仕入・入出金管理に注力し、既存の販売管理アプリの課題である価格バリエーションの不足に対応するため、SOY Shopのプラグインを活用し無制限登録を実現。商品規格を応用し、仕入値の異なる同一商品を管理。管理画面からの注文登録時に仕入値パターンを表示する機能も追加。ネットショップにおける仕入の概念の重要性も認識。販売管理機能強化により、ネットショップ機能全体の向上を目指す。

 

SOY Shopでマイページログイン用パスワード自動生成プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shopのマイページログイン用パスワード自動生成プラグインがアップデートされ、管理画面から顧客を追加する際にもパスワードが自動生成されるようになりました。従来は顧客がマイページ登録時のみ自動生成でしたが、今回の更新で管理画面からの登録にも対応。これにより、顧客情報のCSVインポートや一括登録時にもパスワードが自動生成され、管理者の負担を軽減します。生成されたパスワードは登録完了メールに記載され、顧客はすぐにマイページにログインできます。この機能はプラグインの設定画面で有効/無効を切り替え可能です。

 

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

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

 

SOY Shopの管理画面からの注文で未登録商品の設定を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの管理画面からの注文で、誤操作により在庫管理などに不整合が生じる問題を解消するため、「未登録商品を指定する」ボタンの表示有無を設定できる機能が追加されました。 業務アプリとしてSOY Shopを活用する際、この新機能により、新規スタッフの教育コスト削減と誤操作による損害リスク軽減に繋がります。このアップデートを含む最新パッケージはsaitodev.co/soycms/soyshop/ からダウンロード可能です。

 

SOY Shopの消費税別表示モジュールで軽減税率の設定を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの消費税別表示モジュールが軽減税率に対応しました。2019年10月からの消費税増税に伴い、モジュールで増税日と税率を設定できる他、軽減税率の設定も可能になりました。軽減税率対象商品は、各商品の編集画面でチェックボックスにより指定します。対象商品の一覧表示機能は現状ありませんが、要望があれば追加予定です。最新版はsaitodev.co/soycms/soyshop/からダウンロードできます。

 

生ゴミの消臭はベントナイトで

/** Geminiが自動生成した概要 **/
生ゴミの消臭にベントナイトが効果的であることが実体験を通して紹介されています。糖質や油分の多い生ゴミでも、ベントナイトを混ぜて土に埋めることで臭いがほぼ解消されたとのこと。これは猫砂にも利用されるベントナイトの消臭力の高さを示しています。 この消臭効果を魚粕の臭い軽減に応用できないかと提案しており、粉状のベントナイトを混ぜることで効果が期待できると述べています。ベントナイトは消臭効果に加え、微量要素も含むため、肥効への影響を懸念しつつも、秀品率向上に繋がる可能性も示唆しています。有機JAS認定品もあるため、有機栽培にも利用可能です。

 

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

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

 

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

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

 

SOY Shopで商品毎にメール文面に挿入できる定型文のプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shopの商品毎にメール文面に定型文を挿入できるプラグインが開発されました。特定商品の注文時にのみ必要な情報を伝えるため、ワインの管理方法など、商品に応じた定型文をメールに自動挿入できます。プラグイン設定画面で定型文を作成し、商品登録時に選択することで、注文受付メールに反映されます。これにより、不要な情報を含めずに商品固有の注意点を伝えられます。現在は注文受付メールのみ対応ですが、今後の要望に応じて対応範囲を拡大する可能性があります。プラグインはsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

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

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

 

SOY Shopの管理画面からの注文で商品毎の価格設定を確認する

/** Geminiが自動生成した概要 **/
SOY Shopを顧客管理業務アプリとして活用する中で、顧客ごとに異なる価格設定が必要になったため、特別会員価格設定プラグインを導入。しかし管理画面からの注文登録時に商品ごとの価格一覧が確認できない問題が発生した。そこで、注文登録画面で商品に追加価格設定がある場合、価格一覧ボタンを表示し、ポップアップで確認できるように改良。これにより、商品編集画面を開かず価格を確認できるようになり、問屋業などでの利便性向上に繋がる。改良版はサイトからダウンロード可能。合わせて顧客管理機能強化、管理画面のみ使用モード、注文状態並び替え、商品確認済ステータス追加など関連記事も紹介。

 

さくらの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;`で変更を適用します。

 

太陽と海と藻類たち

/** Geminiが自動生成した概要 **/
海中の太陽光到達深度と藻類の色素の関係が、生育する藻の種類を決定づける。浅瀬では赤色の波長が減衰し、深くなるにつれ黄色、そして青色以外の波長が消失する。藻類の色素は補色の波長を吸収するため、緑色の陸上植物や緑藻は浅瀬で緑色の光を反射し、過剰な受光を防ぐ。一方、紅藻は緑〜青色の補色である赤い色素を持つため、より深い場所で生育する。海苔として食用にされる様々な藻類は、生物学的には大きく異なり、栄養価も異なる。紅藻(スサビノリ)はビタミンB12(コバラミン)を合成する細菌と共生している。

 

SOY Shopで注文番号をCODE39規格でバーコードを作成してみる

/** Geminiが自動生成した概要 **/
SOY Shopで注文番号をバーコード化できるプラグインを開発。CODE39規格を採用し、ハイフンを含む注文番号に対応。生成されたバーコードはCCDバーコードリーダーで読み取り可能だが、初期設定では長すぎて認識エラーが発生。リサイズで対応。プラグインはsaitodev.coからダウンロード可能。バーコード生成にはPHP Barcode Generatorを使用。現時点ではSOY Shop標準機能としての用途は未定だが、活用アイディア募集中。

 

SOY Shopで商品毎でJANコードを登録しバーコードを作成してみる

/** Geminiが自動生成した概要 **/
SOY Shopで商品ごとにJANコードを登録・バーコード表示するプラグインが開発されました。管理画面の商品詳細画面にJANコード入力欄が追加され、入力するとバーコード画像が生成されます。生成されたバーコードは市販のバーコードリーダーで読み取り可能であることが確認されています。プラグインはsaitodev.coからダウンロードできます。バーコード生成にはPHP Barcode Generatorが使用されています。現状、SOY Shop標準機能でのこのプラグインの用途は未定ですが、活用アイデアは問い合わせフォームから募集中です。

 

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が自動生成した概要 **/
SOY Shopで商品登録時に商品コードを手動で入力するのは手間がかかる。特に、商品コードが見積書などに必要ない場合でも、システム上必須となるため、重複しないコードを考える負担が生じる。この問題を解決するため、商品コードの自動生成機能が追加された。管理画面で設定を有効にすると、ランダムなコード、もしくは指定した接頭語と連番を組み合わせたコードが自動で挿入される。これにより、商品登録作業の効率化と時間短縮を実現する。この機能を含むパッケージはsaitodev.coからダウンロード可能。

 

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

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

 

SOY Shopの管理画面からの注文で商品オプションプラグインの見直し

/** Geminiが自動生成した概要 **/
京都農販は、多様なニーズに対応するパイプハウス施工の実績を持つ。カタログでは、強度と耐久性に優れた単棟ハウスから、連棟ハウス、特殊ハウスまで幅広い施工事例を紹介。環境制御技術を駆使した温度・湿度管理、CO2施用、養液栽培システムなど、高品質な農作物生産を支援する設備も提案。 耐候性・耐食性に優れた資材を使用し、積雪や強風対策も万全。施工事例を通して、設計から施工、アフターサービスまで一貫体制によるサポートを提供することで、顧客の農業経営の成功に貢献する姿勢を示している。カタログは、パイプハウス導入を検討する農業者にとって、貴重な情報源となるだろう。

 

SOY Shopで下書き通知プラグインを作成しました

/** Geminiが自動生成した概要 **/
京都農販は、SOY Shopを活用し農業用パイプハウスの見積り作成システムを構築。従来のエクセル作業を1時間程度に短縮、大幅な効率化を実現した。しかし、見積り作成途中での保存・復元に関するUIの課題から、下書き通知プラグインを開発。管理画面の新着ページに下書きの有無を通知し、バックアップ復元へのアクセスを容易にしたことで、作業開始の遅延を解消。 この改善により、マニュアル作成の手間も削減。パイプハウス見積り作成の効率化をさらに促進している。詳細はsaitodev.coで公開されているパッケージから確認可能。京都農販のパイプハウス施工事例は別途PDFで公開されている。

 

SOY CMS ASP版運営プラグイン

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

 

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リポジトリを参照ください。

 

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

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

 

Go言語でsyncパッケージを使ってみる

/** Geminiが自動生成した概要 **/
Goの`sync`パッケージは、複数のゴルーチン間での共有リソースへのアクセスを同期するためのプリミティブを提供します。`Mutex`は相互排他ロックを提供し、一度に1つのゴルーチンだけがクリティカルセクションにアクセスできるようにします。`RWMutex`は、複数の読み取りゴルーチンと単一の書き込みゴルーチンを許可する読み取り/書き取りロックです。`WaitGroup`は、ゴルーチンのグループが完了するのを待つためのメカニズムを提供します。`Cond`は、ゴルーチンが条件変数で待機し、他のゴルーチンによって通知されることを可能にします。`Once`は関数が一度だけ実行されることを保証します。これらのプリミティブを使用して、データの競合を回避し、ゴルーチン間の協調を実現できます。

 

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

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

 

SOY Inquiryで悪質なお問い合わせをブロックする機能を追加しました

/** Geminiが自動生成した概要 **/
SOY Inquiryに、悪質な問い合わせをブロックする機能が追加されました。qq.comドメインからのスパム問い合わせが急増したため、設定画面でカンマ区切りでドメインを指定してブロックする機能を実装。メールアドレス必須設定時に限り、アドレス未入力もブロック対象となります。 この機能追加により迷惑問い合わせは解消されました。ただし、完璧な対策ではないため、将来的には画像認証の改善も検討されます。更新版パッケージはサイト(https://saitodev.co/soycms/soyinquiry)からダウンロード可能です。

 

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

/** Geminiが自動生成した概要 **/
Windows10でGo言語とQtの開発環境を構築する方法を解説。MSYS2とQtをインストールし、Go言語のパッケージを取得・設定後、サンプルコードを実行する手順を説明。環境変数の設定やQtインストール時のコマンド、Goのパッケージ設定コマンド、サンプルコード実行コマンド、発生したエラーと解決策(libicudt61.dll不足)について記述。

 

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

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

 

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

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

 

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

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

 

SOY Shopでキャンセルと仮登録の注文の自動削除プラグインを作成してみた

/** Geminiが自動生成した概要 **/
オープンソースのネットショップパッケージは自由度が高い反面、軌道に乗った後に予期せぬ問題に直面することがある。記事ではSOY Shopを例に、月商1000万円を超えるとキャンセルや仮登録注文データの蓄積が処理速度に影響することを指摘。標準機能ではこれらのデータは削除されず残り続けるため、パフォーマンス低下を招く。解決策として、一定期間以前の不要な注文データを自動削除するプラグインを独自開発。管理画面を開く度に自動で削除を実行することで、データ量の増加を抑え、サイトのパフォーマンス維持を図る。この事例は、オープンソース利用における自由と引き換えに、独自対応が必要な場面が存在することを示している。

 

jQuery.uploadプラグインをjQuery3系でも動作するように修正してみた

/** Geminiが自動生成した概要 **/
jQuery.uploadプラグイン (v1.0.9) をjQuery 3.3.1で使用した際、「a.indexOf is not a function」エラーが発生。原因は`iframe.load()`の廃止。jQuery3以降では`.load()`メソッドがオブジェクトに対して使用できなくなっていた。解決策として、`iframe.on('load', function(){})`と書き換え、`load`イベントを`on`メソッドで登録することで動作するようになった。この修正は後にプルリクエストとして採用され、本家コードに反映済み。

 

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言語で扱うための構造体の作成が挙げられている。

 

PHPでチャットワークAPIを介してタスクを登録してみる

/** Geminiが自動生成した概要 **/
PHPでChatwork APIを使ってタスクを登録する方法を解説。メッセージ投稿APIを元に、エンドポイントを`/rooms/{roomId}/tasks`に変更し、パラメータに`body`(タスク内容)と`to_ids`(担当者アカウントID)を追加する。アカウントIDは、自分のメッセージを引用することで`aid=********`の形式で取得できる。コード例では、cURLでPOSTリクエストを送信し、タスクを登録。実行結果、指定のルームにタスクが追加されることを確認。

 

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

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

 

SOY Shopの注文詳細の支払い方法の変更をラジオボタン式に変更した

/** Geminiが自動生成した概要 **/
SOY Shopの注文詳細画面で、支払い方法の変更方式がテキストエリア入力からラジオボタン選択に変更されました。従来は支払い方法のラベル表示のみ変更可能で、注文データ上のモジュール自体は変更されませんでした。今回の変更により、ラジオボタンで選択した支払い方法のモジュール自体が変更されるようになりました。これにより、注文検索画面での絞り込み検索が正しく機能するようになります。ただし、手数料は変更時に削除されるため、手動で再設定が必要です。将来的には送料の自動計算機能も追加予定です。変更を含むパッケージはsaitodev.co/soycms/soyshop/からダウンロードできます。

 

SOY Shopの注文検索でオーダーカスタムフィールド(日付)の項目を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの注文検索機能を拡張し、オーダーカスタムフィールド(日付型)を検索条件に追加できるプラグインを開発しました。管理画面の注文一覧にカスタムフィールドの日付検索欄が追加され、注文詳細に記録した任意の日付情報(例:返答期限)に基づいた検索が可能になります。この機能は「やまどうぐレンタル屋さん」で実装した顧客管理機能強化の一環で、管理画面のみ表示のカスタムフィールドに「○月○日までに返答」といった伝言を記録し、検索で容易に抽出するといった活用が想定されます。プラグインはsaitodev.coからダウンロード可能です。

 

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

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

 

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

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

 

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

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

 

チャットワークとGoogle Apps Scriptで音声入力で投稿してみる

/** Geminiが自動生成した概要 **/
Googleドキュメントの音声入力とGoogle Apps Scriptを連携させ、チャットワークへの投稿を音声で行う方法を紹介。 「チャットワーク(投稿内容)終了」と話しかけると、内容がチャットワークに送信されるスクリプトを作成。1分毎にスクリプトが実行され、ドキュメントの内容をチェック、投稿後ドキュメントはクリアされる。APIトークン、ルームIDの設定が必要。音声入力はドキュメントのツールから利用可能。Androidスマホでは音声入力の設定を事前に確認する必要がある。この方法で、両手が塞がっている状況でもチャットワークに投稿可能。実用時はタスク登録ルールやToの指定が推奨される。

 

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

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

 

SOY ShopでTrackingmore連携プラグインでwebhookに対応しました

/** Geminiが自動生成した概要 **/
SOY Shopで国際荷物追跡サービス「Trackingmore」と連携するプラグインを開発し、「webhook」機能を追加しました。webhookでは、配送業者が発送を開始するとTrackingmoreからSOY Shopに通知が届きます。これにより、リアルタイム追跡の手間を省きつつ、SOY Shopの注文状態や発送メールの自動更新が可能になります。この連携により、出荷予定日前に代行業者から発送情報を受け取れなくても、配送状況を監視し、集荷や発送が確認され次第、発送済みメールを自動送信できます。これにより、確認業務が大幅に削減されます。リアルタイム追跡も併用することで、変更情報の確度が向上します。

 

SOY ShopでTrackingmore連携を試作中

/** Geminiが自動生成した概要 **/
SOY Shopと荷物の追跡サービスTrackingmoreを連携するプラグインが作成されました。このプラグインにより、代行倉庫サービスを利用して出荷された商品の発送状況をリアルタイムで確認できるようになります。ただし、現時点では連続でAPIを叩く制限があるため、トラッキング件数の制限や実行間隔の調整が必要です。今後、Webhookを使用した配送状況確認機能が追加される予定です。この機能により、サーバのリソース占有が軽減されることが期待されています。利用に際しては、課題点に留意してください。

 

php-webdriverでセレクトボックスの値を選択する2

/** Geminiが自動生成した概要 **/
php-webdriverでセレクトボックスの値をvalue属性で選択する方法について。以前は表示名("京都府")で選択する方法を紹介したが、今回はvalue("26")で選択する方法を解説。`WebDriverBy::name()`でセレクトボックス要素を取得後、`WebDriverBy::cssSelector("option[value='26']")`で目的のoption要素を特定し、`click()`で選択する。チェーンメソッドで簡潔に記述できる。

 

SOY Shop内でパイプハウスの施工管理アプリを開発しました

/** Geminiが自動生成した概要 **/
SOY Shopの在庫管理機能と管理画面からの注文登録機能を拡張し、パイプハウスの見積書作成アプリを開発。従来のエクセル管理では、膨大な部品の仕入れ値確認に時間と手間がかかっていたが、新アプリでは商品登録時に仕入れ値を記録することで、次回以降の見積書作成時の再確認作業を大幅に削減。商品名検索によるカート追加や、検索結果にない場合の即時商品登録機能も実装。さらに、見積書の商品一覧の並び替え機能、注文内容の自動バックアップ機能も追加することで、作業効率と正確性を向上。これらの機能はパイプハウス以外にも応用可能で、既存のネットショップ運営における経費削減にも貢献する。開発したパッケージは専用サイトからダウンロード可能。

 

SOY Shopで返金管理プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop向け返金管理プラグインが開発されました。注文詳細画面から返金・増額の振込額や銀行口座情報を登録可能になり、管理画面の注文一覧検索で返金関連情報による絞り込み検索もできるようになりました。 プラグインはsaitodev.coからダウンロードできます。 このプラグインは、注文毎のキャンセルや変更に伴う返金・増額を記録し、処理状況を追跡する機能を提供します。注文状態に「返金処理待ち」ステータスも追加され、より詳細な注文管理が可能になります。 これは、既存の注文検索フォーム拡張ポイントと注文状態・支払状況フラグ追加拡張ポイントを利用して実現されています。

 

SOY Shopの伝票番号プラグインで発送状況の管理を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの伝票番号プラグインがアップデート!複数個口発送の管理が大幅に向上しました。 従来は複数個口の場合でも注文詳細の状態を一括でしか変更できませんでしたが、今回のアップデートで個々の伝票番号ごとに発送状況を管理できるようになりました。 具体的には、未発送の伝票番号一覧ページで、発送済み/未発送のステータス変更が可能に。さらに、全ての伝票番号が発送済みになると、自動で注文詳細も発送済みに更新されます。 発送漏れ防止に役立つ機能満載!詳しくはサイトで。

 

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

 

SOY Shopの伝票番号記録プラグインで複数個口対応しました

/** Geminiが自動生成した概要 **/
SOY Shopの伝票番号記録プラグインが複数個口配送に対応しました。以前作成したプラグインでは伝票番号を1つしか登録できませんでしたが、複数枚の伝票が必要なケースに対応するため、カンマ区切りで複数登録できるよう改良されました。 商品の大きさや段階的配送などで複数の伝票番号が発生する場合に便利です。現状はどの伝票番号がどの商品に対応するかの詳細管理まではできませんが、複数伝票番号の記録を実現しました。改良版プラグインはsaitodev.co/soycms/soyshop/ からダウンロード可能です。

 

SOY Shopのクーポン自由設定プラグインでカテゴリを追加しました

/** Geminiが自動生成した概要 **/
SOY Shopのクーポン自由設定プラグインに、クーポンをカテゴリ分けする機能が追加されました。クーポンコードの接頭辞をカテゴリ毎に設定できるため、クーポン登録時に規則を覚えていなくても自動入力できます。例えば、「gaku」で始まるクーポンは値引き額、「ritu」で始まるクーポンは値引率といった設定が可能です。 新規登録時、カテゴリを選択すると接頭辞が自動挿入されます。この機能は管理画面での注文時にも有効で、接頭辞が表示されるためクーポンコードを思い出すヒントになります。最新版はsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

SOY Shopの管理画面からの注文時に商品の内訳の変更を自動でバックアップを追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの管理画面からの注文機能に、見積もり作成業務向けに自動バックアップ機能が追加されました。見積もり作成は商品数が多く、登録に時間がかかるため、作業中にセッションが切れてしまう可能性があります。この機能は、商品の内訳に変更がある度に自動でバックアップを作成し、セッション切れ後にバックアップから復元できるようにすることで、作業中断によるデータ損失を防ぎます。バックアップデータはJSON形式で保存されます。この機能追加を含むパッケージはsaitodev.coからダウンロード可能です。

 

SOY Shopのマイページで注文編集プラグインでお届け先住所等の編集を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopのマイページ注文編集プラグインに、お届け先と請求先住所の編集機能が追加されました。有効化すると、注文詳細画面に編集ボタンが表示され、住所変更が可能になります。ただし、請求先住所を変更してもマイページの会員登録情報は更新されません。この機能追加により、ユーザーは注文後もお届け先や請求先の住所を柔軟に変更できるようになります。最新版はsaitodev.co/soycms/soyshop/からダウンロード可能です。開発段階のため、今後もブログで更新情報を確認しながら利用ください。

 

Google Apps ScriptのHTML Serviceでファイルアップロードを行う

/** Geminiが自動生成した概要 **/
Google Apps Script (GAS)のHTML Serviceでファイルアップロード機能を実装する方法を紹介。サンプルコードでは、HTMLフォームでファイルを選択・送信し、GAS側でGoogleドライブに保存、生成されたURLをHTMLに返す非同期処理を行っている。`google.script.run.withSuccessHandler()`でGAS側の関数を実行し、成功時の処理をHTML側で記述。フォーム送信イベント`onsubmit`でこの処理を呼び出し、アップロード後のURL表示を実現。この仕組みにOCR処理を組み合わせることで、画像アップロードと文字列抽出を同一画面で行うWebアプリ開発が可能になる。

 

SOY Shopの管理画面からの注文の商品登録の操作の見直しで登録作業の削減

/** Geminiが自動生成した概要 **/
SOY Shop管理画面の注文商品登録操作を改善し、登録作業削減を実現。従来、商品検索でヒットしない場合のみ商品登録が可能だったが、部品名と規格で登録する際、規格違いの登録で画面遷移が必要となる問題が発生。そこで、検索結果に関わらず常に商品登録フォームを表示するように変更。例えば「ネジ」で検索すると全規格がヒットするが、新規格登録には別ページ遷移が必要だった。今回の改善で、検索後も商品登録フォームが常時表示されるため、規格違いの部品登録もその場でスムーズに行えるように。増加する部品規格への対応を効率化し、登録作業の手間を軽減。

 

SOY Shopで再注文プラグインを作成してみた

/** Geminiが自動生成した概要 **/
SOY Shop用の再注文プラグインが開発されました。 以前作成された注文複製プラグインとは異なり、今回のプラグインは顧客情報を変更した再注文を可能にします。注文詳細画面に「注文の再登録」ボタンが追加され、クリックすると管理画面の注文登録画面に遷移します。以前の注文の商品情報が自動入力されるため、顧客と支払い方法を選択するだけで再注文が完了します。この機能は、商品点数の多い注文や、施工計算の見積書作成などで特に効果を発揮します。プラグインはsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

SOY Shopで各種部品の仕入れ値に利益上乗せ型の施工費計算に対応してみた

/** Geminiが自動生成した概要 **/
SOY Shopの拡張機能で、部品毎の利益上乗せ方式の施工費計算に対応しました。商品登録時に仕入れ値(定価)と利益込み価格(通常価格)を登録し、注文時に各商品の差額を合計して利益を算出します。通常の施工費固定方式も併用可能です。商品毎の仕入れ値変更があっても過去の注文への影響を防ぐため、注文時の定価を記録し、過去の注文の利益計算には記録された定価を使用します。この機能を含むパッケージはsaitodev.coからダウンロードできます。

 

SOY Shopで注文時の合計金額を固定し、経費や粗利を確認できる機能を追加してみた

/** Geminiが自動生成した概要 **/
SOY Shopを在庫管理業務アプリ化するため、注文合計金額を固定し経費と粗利を確認できるプラグインを開発。施工費20万円の案件で、部品代金合計に加え、人件費などの経費を入力し、粗利を自動計算。合計金額は施工費で固定されるため、利益管理が容易に。注文複製プラグインと組み合わせることで、案件ごとの部品在庫管理が可能になり、見積書・納品書出力機能と連携すれば業務効率化に貢献。この機能は物販サイトには直接関係ないものの、SOY Shopの基本機能を拡張しており、間接的に物販サイト運営にもプラスの効果をもたらす。

 

SOY Shopで注文複製プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shopで在庫管理業務アプリ用の注文複製プラグインを作成しました。組み立てに必要な材料(部品)の管理において、以前作成した注文(部品の使用量)を複製できる機能を追加。注文詳細画面の拡張機能ボタンに「注文の複製」ボタンを設置し、複製機能を実現。一度の注文で多くの材料を登録する場合に便利。この機能はプラグインなので、不要な場合はボタンを非表示にして誤操作を防止できます。今回の更新を含むパッケージはsaitodev.co/soycms/soyshop/ からダウンロード可能です。

 

SOY Shopで在庫管理の業務アプリに向けての機能追加

/** Geminiが自動生成した概要 **/
SOY Shopの管理画面でプラグインが独自のページを持てるようになりました。従来、プラグインの設定画面はSOY Shop管理画面の特定のページ内に表示されていましたが、今回のアップデートにより、プラグインごとに独立したページを作成できるようになりました。これにより、プラグインの設定項目が増えても管理画面が煩雑にならず、プラグイン開発者も自由にページ構成を設計できます。新しいページはメニューに追加され、アクセスしやすくなりました。この機能はSOY Shop2.1.1以降で利用可能です。今後、プラグイン開発者はこの機能を活用して、より使いやすい管理画面を提供することが期待されます。

 

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

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

 

Dropboxで同期しないフォルダを設定する

/** Geminiが自動生成した概要 **/
Dropboxの有料プランで、既に280GB使用しているアカウントに、容量20GBのVPSサーバにある4GBのサイトをバックアップする必要があった。Dropboxの容量がサーバ容量を大きく超えていたため、同期でサーバ容量が逼迫する懸念があった。しかし、Dropboxの「exclude add」コマンドで同期しないフォルダを指定し、不要なフォルダを逐次除外することで、サーバ容量の問題を回避できた。最終的に、バックアップスクリプトを作成しcronに登録することで、Dropboxを使ったサイトバックアップを実現した。

 

php-webdriverで指定のフォームに値を入力してみる

/** Geminiが自動生成した概要 **/
Seleniumとphp-webdriverを使い、SOY CMSのログイン画面を自動操作するテストコードを実行した。ChromeドライバでChromiumを起動し、ログイン画面を表示後、ログインIDフォームに「soycms」と入力するコードを追加。実行結果、コンソールに「soycms」と表示され、Chromium上でもログインIDフォームに「soycms」が入力されていることを確認。基本的な動作確認が完了し、本格的なテストコード作成に移行する。

 

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

 

SOY ShopのPAY.JP定期課金モジュールで管理画面でプランの変更を追加しました

/** Geminiが自動生成した概要 **/
SOY ShopのPAY.JP定期課金モジュールがアップデートされ、管理画面から顧客の定期課金プラン変更が可能になりました。顧客詳細画面でプラン変更やキャンセル操作が行えます。プランは商品情報としてSOY Shop内で作成・管理します。ただし、商品情報の編集回数が多い場合、プラン一覧取得に不具合が生じる可能性があります。 このモジュールを活用することで、SOY CMSと連携した会員制有料ブログや、SOY Mailと連携した有料メルマガの運営が容易になります。最新版はsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

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

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

 

さくらインターネットの共有サーバでLet's Encryptを利用して常時SSL化してみた

/** Geminiが自動生成した概要 **/
さくらインターネットの共有サーバーでLet's Encryptを使って簡単に常時SSL化する方法が紹介されています。コントロールパネルから数クリックで設定でき、20分ほどで完了します。SOY CMS利用者は、追加の設定が必要です。記事内の画像パスがHTTPのままになっている場合、ブラウザで警告が表示されるため、SOY CMSの設定画面からサイトURLをHTTPSに変更する必要があります。 記事本文中の画像パスもHTTPSに書き換えるか、.htaccessでリダイレクト設定を行うことで対応できます。 これらの対応により、サイト全体をHTTPSでアクセスできるようになり、セキュリティとSEO効果の向上が期待できます。

 

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/)で確認できる。定期課金モジュールも提供されている。

 

SOY Shopで勤務先関連の項目の非表示設定を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの顧客グループプラグインで、顧客登録画面の勤務先項目の表示・非表示設定が追加されました。顧客グループで勤務先を管理する場合、標準の勤務先項目は二重登録の原因となるため、非表示設定が有用です。BtoCの物販サイト等でも勤務先情報が不要な場合に活用できます。非表示設定は管理画面の基本設定で行います。この更新により、顧客情報の入力操作が簡素化され、クライアントへの納品時にも混乱が避けられます。アップデート版はsaitodev.coからダウンロード可能です。

 

SOY Shopで都道府県の標準値設定を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopが、特定都道府県のみで商売を行うネットショップ向けに、住所登録画面の初期設定で県を選択できる機能を追加しました。 管理画面の基本設定で都道府県を指定すると、顧客が個人情報を入力する際、住所欄の県が予め選択された状態で表示されます。 これにより、地域限定のショップ運営がよりスムーズになります。 最新版のパッケージはsaitodev.co/soycms/soyshop/ からダウンロード可能です。

 

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

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

 

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

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

 

土壌分析アプリSoil3 on SOY Shop

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

 

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

/** Geminiが自動生成した概要 **/
Socket.IOで個別チャットを作るための第一段階として、NamespacesとRoomsの概念を導入した。サーバー側(server.js)では、`io.of('/chat')`でchatというnamespaceを作成し、接続時に`socket.join("default")`で全ユーザーを"default" roomに所属させた。イベント発信時は`chatNS.to("roomName").emit()`を使用することでroom内限定の通信を実現。クライアント側(index.html)は、`io.connect("http://localhost:8080/chat")`のように接続URLにnamespaceを指定することで変更完了。これにより、複数ユーザーが同じチャットルームに参加できるようになったが、まだユーザー限定チャットにはなっていない。

 

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のサイトマッププラグインで多言語化対応しました

/** Geminiが自動生成した概要 **/
SOY Shopのサイトマッププラグインがアップデートされ、多言語サイトに対応しました。日本語ページと対応する他言語ページを自動で紐付ける機能が追加され、手動でURLを登録する際にも、各URLに他言語ページのURLを指定できるようになりました。カスタムサーチフィールドの商品一覧ページも多言語化に対応。これらの機能は最新のプラグインパッケージに含まれており、saitodev.coからダウンロード可能です。カスタムサーチフィールドを活用した高度な検索フォーム設定や複数カテゴリ設定、カタログサイト構築については、関連記事を参照ください。

 

SOY Shopで通常価格とセール価格が異なる時のみセール価格を表示したい

/** Geminiが自動生成した概要 **/
SOY Shopで、通常価格とセール価格が同じ場合にセール価格を非表示にする機能が追加されました。セール価格が通常価格と同一でも登録必須であるSOY Shopの仕様に対応し、表示の重複を避けるためです。 新タグ`cms:id="is_normal_price_diff_from_sale_price"`を使用すると、価格が異なる時のみセール価格も表示され、同じ場合は通常価格のみ表示されます。これにより商品ページの見栄えが向上し、消費税別表示モジュールとも連携可能です。最新版はダウンロード提供されています。

 

SOY ShopのサイトマッププラグインでURLの手動登録を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopのサイトマッププラグインに、任意のURLを手動登録する機能が追加されました。カスタムサーチフィールドによる商品一覧ページなど、自動生成されないページをサイトマップに含めることが可能になります。管理画面でURLと最終更新日時を登録すると、サイトマップの末尾に追加出力されます。この機能はカスタムサーチフィールド以外にも、SOY CMSやHTMLファイルで作成されたページにも活用できます。更新版パッケージはサイトからダウンロード可能です。カスタムサーチフィールドは、高度な検索フォームや複数カテゴリのような設定を可能にし、カタログサイト構築にも役立ちます。

 

SOY ShopのCSVインポートエクスポートで0からはじまる数字を扱いたい

/** Geminiが自動生成した概要 **/
SOY ShopのCSVインポート・エクスポートで0から始まる数字を扱うには、冒頭の0が削除されるのを防ぐ必要があります。LibreOfficeでCSVを編集する際、セル書式設定から「先頭のゼロの値」に桁数を指定することで、0を保持できます。例えば、5桁の数字の場合は「5」を設定します。これにより、SOY Shopへのインポート時に0が削除されずに追加されます。

 

FFmpegとAudacityで動画の音声の調整に挑戦!

/** Geminiが自動生成した概要 **/
動画編集ソフトFFmpegとAudacityを使って、動画の音声調整に挑戦した記録。元の動画の音量が小さく、ノイズが多かったため、Audacityで音量増幅とノイズ除去を実施。FFmpegで動画と音声の結合を行い、改善された動画を作成した。具体的には、Audacityで波形を見ながら音量を30dB増幅し、ノイズプロファイルを採取してノイズ除去を2回行った。結果、「サー」というノイズが消え、以前より聞き取りやすい音声になった。

 

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

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

 

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

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

 

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

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

 

SOY Shopの商品CSVで商品名の多言語化

/** Geminiが自動生成した概要 **/
SOY Shopの商品CSVインポート/エクスポート機能が強化され、商品名の多言語化に対応しました。多言語サイトプラグインを導入すると、商品名入力欄が言語ごとに拡張されます。今回のアップデートでは、この拡張された商品名(各言語)もCSVのインポート/エクスポートで扱えるようになりました。 これにより、多言語サイトでの商品登録・管理が大幅に簡略化されます。対応版はサイト(https://saitodev.co/soycms/soyshop/)からダウンロード可能です。

 

メモリーの監視

/** Geminiが自動生成した概要 **/
Muninでメモリ監視を開始し、システムパフォーマンス書籍を参考にグラフの各項目を調査。freeコマンドの結果、サーバはオーバースペック。appsはメモリ使用量、page_tablesはプロセスアドレスのマッピング、slab_cacheはカーネルキャッシュ。キャッシュは処理結果を保存し高速化を図る仕組み。バッファは一時データ用メモリ領域。unusedは未使用メモリ、vmalloc_usedは割愛。committedは全プロセスの仮想メモリ総容量、mappedは物理メモリ総容量。activeは最近アクセスされたメモリページ、inactiveはそうでないメモリページの容量。グラフからもサーバのオーバースペックさが明確。

 

Webデザイナー向けのGitのハンズオンを行いました

/** Geminiが自動生成した概要 **/
アップラインの会議室にて、Webデザイナー向けにGitのハンズオンを開催。Webデザイナーは細かい編集作業が多く、バージョン管理の恩恵が大きい。今回はWindows向けTortoiseGitを用い、Gitの基本操作を体験、用語解説も行った。TortoiseGitはGUIで操作できるため、Gitへの苦手意識なく学習できる。共同作業の共有コスト削減、快適なサイト制作にGitの活用を推奨している。

 

SOY Shopの顧客検索で登録状態の項目を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの顧客検索機能に「登録状態」項目が追加され、仮登録顧客の数が把握できるようになりました。管理画面の顧客検索で「登録状態:仮登録」をチェックすることで、仮登録顧客のみを絞り込み検索できます。これにより、仮登録顧客の数を簡単に確認できます。このアップデートを含む最新パッケージは、saitodev.co/soycms/soyshop/ からダウンロード可能です。

 

当サイトをMackerelで監視するようにしてみた

/** Geminiが自動生成した概要 **/
筆者はWebサービスのサーバー監視にMackerelを導入した。Muninを導入したVPSはあったが、個人サイト用に別途VPSを借りるのは負担だったため、Mackerelの5ホスト無料枠を利用することにした。導入手順は非常に簡単で、Ubuntuサーバーへのインストールはコマンド一行で済んだ。Mackerelはサーバーを即座に認識し、ロール設定後すぐに監視が開始された。監視による不安の解消に加え、メール、ChatWork、LINEなど豊富なアラート通知設定も魅力的だと感じた。

 

社会人・学生向けプログラミング教室でコードレビューをしてみました

/** Geminiが自動生成した概要 **/
プログラミング教室で、文法は理解できてもコードを書けない生徒が多い原因を探るため、コードレビューを実施。100行程度のコードを一行ずつ解説させることで、関数の使い所、フォームの初期化、配列とオブジェクトの使い分けといった、具体的な実装における理解不足が課題だと判明。小さなアプリの処理を言葉で説明したり、写経と全行コメントで楽しく学習する方法を確立できれば、プログラミング学習の挫折者を減らせると考えられる。

 

SOY CMSのサムネイルプラグインで加工前の画像も出力できるようにした

/** Geminiが自動生成した概要 **/
SOY CMSのサムネイルプラグインが、加工前の画像も出力できるよう機能拡張されました。従来はリサイズ・トリミング後の画像のみ出力でしたが、`cms:id="upload"`でオリジナル画像、`cms:id="trimming"`でトリミング後リサイズ前の画像を出力できます。`cms:id="thumbnail"`は従来通りサムネイル画像を出力します。また、画像の状態に応じて表示を切り替える`cms:id="is_upload"`、`cms:id="is_trimming"`、`cms:id="is_thumbnail"`も追加されました。更新版プラグインはsaitodev.co/soycms/からダウンロード可能です。

 

SOY Shopで購入回数1回の顧客向けにクーポンを発行したい

/** Geminiが自動生成した概要 **/
SOY Shopは、表示速度を重視し、機能をシンプルに保つことで売上向上を目指している。そのため、メールマガジン機能はSOY Mailと連携する形を採用している。 高機能になればなるほどサイトの表示速度は低下し、顧客の離脱に繋がる。特に商品点数やアクセス数の多いネットショップでは深刻な問題となる。SOY Shopはこうした問題を回避するため、必要な機能を厳選し、他サービスとの連携によって拡張性を確保することで、軽快な動作と自由度の高い運用を実現している。つまり、あえてメールマガジン機能を内包せず、SOY Mailとの連携を推奨することで、ショップ運営の効率化と売上最大化を図っている。

 

自由を求めてオープンソースのネットショップパッケージへ。軌道に乗った頃に遭遇する問題について

/** Geminiが自動生成した概要 **/
SOY CMSを利用したネットショップ運営において、初期段階では自由度の高さがメリットとなるが、注文データの増加に伴い表示速度の低下という課題に直面する。これはGoogle検索ランキングにも影響する。記事では、表示速度低下の原因としてデータベース設計の冗長化、特にTEXTカラムの多用を指摘。SOY CMS/Shopでは不要な機能をインストールしない、外部データベースの活用などで冗長化を回避しているものの、注文データテーブルでのTEXTカラム使用は課題として残る。解決策として、サイト高速化とデータベースチューニングの必要性を提示している。具体的な対策は後述としているが、別記事ではPageSpeed Insightsのスコア99達成についても言及している。

 

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の管理画面拡張機能として、プラグインが独自のページを持てるようにアップデート。これにより、ショップ機能を制限し、プラグイン経由でアプリ風機能を呼び出す「SOY App」的な開発が可能に。プラグインはSOY Shop本体への影響 minimal。 連絡掲示板プラグインを例に、管理画面内に掲示板を追加し、投稿時に登録管理者へメール通知する機能を実装。アップデート内容はGitHubのsoyshopパッケージに反映済。

 

NW.jsを試す

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

 

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

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

 

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

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

 

SOY Shopで特別会員価格設定プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shopの特別会員価格プラグインは、顧客属性を利用して会員別に特別価格を設定できる。在庫管理の手間を増やすことなく、卸売業者や常連客への優待価格を提供可能。このプラグインは、購入回数属性自動振り分けプラグインやSOY Mail連携機能と組み合わせることで、会員セグメントに合わせた効果的な販促を実現する。例えば、SOY Mailで特別会員に販促メールを送信し、クーポンなしで特別価格を提供、さらに送料無料クーポンを配布することで購買意欲を高めるといった戦略が可能になる。最新版はGitHubからダウンロードできる。

 

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のブログで地図アプリを作ろう1

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

 

SOY CMSのサムネイルプラグインでpng形式のファイルに対応しました

/** Geminiが自動生成した概要 **/
SOY CMSのサムネイルプラグインがアップデートされ、複数の不具合修正と機能強化が行われました。主な変更点は、サイトIDとドキュメントルート内の文字列が重複した場合のリサイズ不具合の修正、サムネイル未登録時のアップロードウィンドウ表示不具合の修正、PNG/GIF形式の画像対応、`cms:id="thumbnail_path_text"`の追加です。さらに、サーバーにjpegoptimがインストールされている場合は、トリミング時にJPEGのロスレス圧縮が適用されるようになりました。これらの更新はGitHubで公開されているパッケージに反映されています。

 

SOY CMSとSOY Shopで販促ブログ付きのネットショップを運営してみよう

/** Geminiが自動生成した概要 **/
SOY CMSとSOY Shopを連携させれば、販促ブログを備えたネットショップを簡単に構築できる。EC-CUBEとWordPressの組み合わせ等、複数のCMSを運用する際に生じるログイン画面の二重化、在庫状況に合わせた記事の出し分け、顧客データに基づいた情報提供、問い合わせデータの活用といった問題を、SOY Shopなら単一CMSで解決できる。SOY Shopの商品紹介プラグインを使えば、ブログの記事作成時に商品コードを入力するだけで、ショップの商品情報(商品名、画像、価格、商品ページへのリンク等)を自動的にブログ記事に挿入可能。これにより、販促効果の高いブログ記事を効率的に作成・公開できる。

 

ネットショップ用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 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 Shopの商品詳細ページで登録されている商品をランダムで表示する

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

 

在庫数一括設定プラグインで商品カテゴリによる絞り込みが甘い不具合を修正しました

/** Geminiが自動生成した概要 **/
SOY Shopの在庫数一括設定プラグインのバグ修正について。当初、商品カテゴリ検索でカテゴリIDのLIKE検索を用いていたため、意図しないカテゴリの商品も検索結果に含まれる不具合があった。例えば、カテゴリ1(ID:1)で検索すると、カテゴリ10(ID:10)も検索対象となっていた。これはIDに"1"が含まれるため。この不具合は修正済みで、修正版はGitHubからダウンロード可能。

 

SOY CMSのサムネイルプラグインでhttpからはじまる絶対パスで登録出来ない不具合を修正しました。

/** Geminiが自動生成した概要 **/
SOY CMSのサムネイルプラグインで、httpから始まる絶対パスで画像を登録できない不具合を修正。従来、httpで始まるパスを登録するとプレビューで画像が表示されない問題があったが、パスからhttp://ドメイン部分を削除することで修正。修正版はGitHubで配布中。サムネイルプラグインを使わずにサムネイル画像を生成する方法としては、表示直前で画像のリサイズを行う方法がある。

 

SOY2DAOでトランザクションを利用する

/** Geminiが自動生成した概要 **/
SOY2DAOではトランザクション処理が可能です。トランザクションを使用することで、複数のSQL文をまとめて実行し、処理に失敗した場合に一連の変更をすべて取り消すことができます。 トランザクションを開始するにはbegin()メソッドを使用し、終了するにはcommit()メソッドを使用します。処理中にエラーが発生した場合は、successedフラグをfalseに設定し、処理をロールバックします。 これにより、複数の処理が確実に実行されることが保証され、データの一貫性が維持されます。

 

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

 

SOY Shopでブラック顧客リストプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop用プラグイン「ブラック顧客リストプラグイン」は、顧客詳細画面にブラック顧客チェックボックスを追加し、チェックでブラック顧客として登録する。以後、該当顧客からの注文は注文詳細に赤字で警告表示され、注文登録画面でも通知が表示される。プラグイン詳細画面では登録済みのブラック顧客リストを確認可能。管理画面での注文登録業務を主とするユーザー向けに、ブラック顧客を一目で識別しやすくする機能を提供。コードは指定GitHubリポジトリのパッケージ内に含まれる。

 

SOY Shopで伝票番号記録プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shopのドットインパクトプリンタ伝票印刷プラグインに、伝票番号記録機能が追加されました。管理画面の注文詳細画面に伝票番号入力フォームが追加され、入力した番号は注文履歴に記録されます。記録された伝票番号は、支払確認メールや配送確認メールに自動挿入されるため、顧客へのスムーズな情報伝達に役立ちます。この機能追加を含む最新パッケージはsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

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

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

 

サイトマップ結合プラグインからサイトマップページを作成してみよう

/** Geminiが自動生成した概要 **/
SOY CMSとSOY Shopのサイトマップを統合するプラグインを活用し、サイトマップページを作成する方法を紹介。モジュールを作成し、統合XMLを読み込み、各URLからページタイトルを取得してリンクを生成するPHPコードを記述。無限ループ対策としてGETパラメータ`xml_search`を使用。しかし、各ページのHTMLを取得する処理が重く、キャッシュ生成の必要性が示唆されている。

 

SOY CMSでサイトマップ結合プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMS/Shop用サイトマップ結合プラグインを作成。複数のSOYサイトのサイトマップを一つにまとめることで、サイトマップ管理の手作業を削減。プラグイン管理画面に個々のサイトマップURLを登録すると、静的なXMLファイルが生成される。このファイルは一日で寿命が切れ、翌日いずれかのページにアクセスがあると再生成されるため、高速な参照と最新の状態を維持できる。プラグインはGitHub上のパッケージに同梱、利用にはSOY CMS/Shopの最新版が必要。

 

SOY CMS/Shopのモジュール内でSQLを実行する

/** Geminiが自動生成した概要 **/
SOY CMS/Shopのモジュールでは、PHPで自由にSQLを実行できる。PDOは結果の整形が面倒だが、SOY2DAOクラスを使うと便利。 例えば、`soyshop_user`テーブルから上位5件を取得するSQLを、PDOで実行すると連想配列と数値添字配列の混合配列が返り使いにくい。SOY2DAOの`executeQuery`メソッドを使うと、同じSQLでも整形された連想配列として結果が返るため、foreach文などを書かずに扱える。

 

SOY CMSのブログで記事管理者でもカテゴリを追加できる様にしました

/** Geminiが自動生成した概要 **/
SOY CMSのブログで、記事管理者でもカテゴリを追加・編集できる機能が追加されました。従来はラベル作成後、管理画面でカテゴリ設定が必要でしたが、このアップデートで記事管理画面から直接カテゴリ(ラベル)の作成・削除・編集(名称、アイコン、説明)が可能になりました。カテゴリ追加時に自動でブログに設定されるため、管理者の手間が省けます。ただし、表示順の変更はできません。この機能は本体改修のため、GitHubから最新パッケージをダウンロードしてください。

 

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

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

 

SOY Shopの管理画面で電話注文に対応してみた

/** Geminiが自動生成した概要 **/
SOY Shopの管理画面で電話番号検索による注文登録機能が追加された。 従来はメールアドレス検索のみだったが、電話注文対応のため電話番号検索フォームが実装された。電話番号は表記ゆれがあるため検索精度はメールアドレスより劣るが、改善のため試用とフィードバックが求められている。パッケージはGitHub(https://github.com/inunosinsi/soycms/tree/master/package)からダウンロード可能。リピーターからの電話注文増加に対応する機能拡張である。

 

SOY Shopのポイント付与プラグインで誕生月購入ポイントプレゼントを追加しました

/** Geminiが自動生成した概要 **/
SOY Shopのポイント付与プラグインに、誕生月購入者へのポイントプレゼント機能が追加されました。設定画面で特典ポイント数を指定すると、購入者の誕生月に限り、通常のポイントに加えて追加でポイントが付与されます。 この機能はプラグインとして提供され、SOY CMSフォーラムからダウンロード可能です。誕生月特典は顧客への還元策として有効で、リピーター獲得に貢献します。

 

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

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

 

SOY Shopの商品規格プラグインで最安値と最高値のタグを追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの商品規格プラグインがアップデートされ、最安値と最高値を表示するタグが追加されました。従来のプラグインでは規格ごとの金額設定は可能でしたが、商品全体の最安値・最高値を表示する機能はありませんでした。今回のアップデートで、商品詳細ページに規格全体の最安値と最高値を簡単に表示できるようになりました。この機能は、商品規格によって価格が変動する商品を販売する際に便利です。アップデート版はGitHubからダウンロードできます。

 

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

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

 

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

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

 

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

 

SOY Shopで購入回数属性自動振り分けプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shopのメールマガジン機能では、購入回数による絞り込み送信ができないため、顧客属性を活用する必要がある。しかし、手動設定は顧客数が多いと手間がかかる。そこで、購入回数に応じて自動で属性を振り分けるプラグインが開発された。管理画面で回数と属性名を設定し、cronに自動更新スクリプトを登録すれば、顧客全員に自動で属性が設定される。このプラグインにより、購入回数に基づいたメール配信が可能になる。ダウンロードは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や画像のキャッシュ設定について解説予定。

 

SOY CMSでインストーラを削除せずにいたらどうなるか?

/** Geminiが自動生成した概要 **/
SOY CMSのインストーラを削除しないと、再インストールが可能になり、サイトデータが消去される危険性がある。攻撃者は用意したデータベース情報で再インストールし、初期管理者権限を奪取できる。管理画面URLが判明していれば、インストーラ経由でサイトを初期化・乗っ取りが可能。他CMSでもインストーラが残っていれば同様の危険があるため、インストール後は必ず削除する必要がある。

 

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

/** Geminiが自動生成した概要 **/
Go言語で書かれたSOY CMSへの総当り攻撃スクリプトを改良し、CSVファイルからIDとパスワードを読み込むように変更した。これにより、コードの可読性が向上し、辞書を使い回せるようになった。 実行結果から、指定のIDとパスワードでログイン成功を確認。今後の課題として、メモリ効率の改善、対象サイトURLの指定、ログイン成功時の判定処理などが挙げられている。

 

SOY ShopにEC CUBE2.4系のログインチェックを導入しました

/** Geminiが自動生成した概要 **/
EC-CUBE2.4系からSOY Shopへの移行時に、顧客のパスワードをそのまま利用できるようログインチェック機能を導入。EC-CUBEとSOY Shopのパスワード暗号化方式の違いを考慮し、SOY Shop側でEC-CUBEの暗号方式を適用する処理を追加。暗号化パスワードにスラッシュの有無でEC-CUBEかSOY Shopかを判別。EC-CUBE2.4.4以前のバージョンに対応しており、顧客がパスワードを変更すればSOY Shopの方式に自動更新されるため、特別な切り替えは不要。将来的には2.11.1以降のバージョンにも対応予定。修正版はフォーラムまたはGitHubから入手可能。

 

SOY Shopで顧客属性を一括で設定できるページを作成してみた

/** Geminiが自動生成した概要 **/
SOY Shopの顧客属性を一括変更できる機能が追加されました。顧客一覧画面で対象顧客を選択し、追加したい属性値を入力して登録すれば、選択した顧客の属性に値が一括追加されます。また、削除したい属性にもチェックを入れて削除ボタンをクリックすれば、選択した顧客の属性値を一括削除できます。この機能はGitHub上のSOY Shopパッケージで利用可能です。

 

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

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

 

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

 

PHPで楽天市場の商品登録を楽しよう:GitとTortoiseGit編

/** Geminiが自動生成した概要 **/
楽天市場の商品登録をPHPで行うため、複数人での在宅作業におけるファイル管理を容易にするためGitとTortoiseGitを導入。TortoiseGitはGUIで操作できるため、Gitに不慣れなメンバーでも「プル」「プッシュ」「コミット」といった操作を右クリックメニューから容易に行える。BitBucketをリポジトリとして利用し、プルとプッシュの手順を指示することでファイルの競合を最小限に抑え、作業効率を向上させた。

 

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

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

 

PHPで楽天市場の商品登録を楽しよう:PHPのインストール編

/** Geminiが自動生成した概要 **/
Windows7にPHP7をインストールする方法を解説。PHP7をダウンロード・展開後、C:\php7に配置。Apacheの設定ファイル(httpd.conf)を編集し、PHPモジュールを読み込む設定や、index.phpをDirectoryIndexに追加。PHPの設定ファイル(php.ini)で必要な拡張モジュールを有効化し、タイムゾーンを東京に設定。Apacheを再起動後、phpinfo()を表示するinfo.phpを作成し、ブラウザで確認することでインストール完了となる。

 

PHPで楽天市場の商品登録を楽しよう:Apacheのインストール編

/** Geminiが自動生成した概要 **/
楽天市場の商品登録作業効率化のため、PHPによるローカル検証環境構築を目指し、複数PCへのインストール手順を記録している。今回はApache2.4のインストール方法を紹介。まずPCが64ビットか確認後、Apache動作に必要なVisual C++再頒布可能パッケージをインストールする。次にApacheの64ビット最新版をダウンロード、解凍し、Apache24フォルダをCドライブ直下に配置。httpd.confのServerNameをlocalhost:80に修正する。Windows環境変数のPathにC:\Apache24\bin;を追加し、コマンドプロンプトでhttpd -k startを実行。ブラウザでhttp://localhostにアクセスし"It Works!"が表示されればApacheのインストールは完了。次回はPHPのインストールについて。

 

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

 

お名前.comで取得したドメインをさくらのVPSとさくらのメールボックスに当てる

/** Geminiが自動生成した概要 **/
お名前.comドメインをさくらVPSとさくらのメールボックスに適用する方法。共有サーバーからVPSへの移行に伴い、メールサーバーは共有サーバーを継続利用するため、ドメインを両方に割り当てる必要がある。お名前.comのDNSレコード設定で、AレコードにVPSのIPアドレス、MXレコードに共有サーバーのメールサーバーのドメインを設定する。MXレコードにはIPアドレスではなくドメインを指定する点が重要。設定後、MX lookupサービスで確認し、さくらの共有サーバーのコントロールパネルでドメインを追加する。Aレコードの反映には時間がかかる場合がある。

 

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

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

 

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

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

 

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

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

 

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

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

 

サイバー攻撃の前にパスワードの管理を

/** Geminiが自動生成した概要 **/
Facebook乗っ取り広告をきっかけに、パスワード使い回し問題の危険性を指摘。FacebookやTwitterで盗まれたパスワードがGmail等の重要サービス不正アクセスに繋がり、個人情報漏洩やサイト乗っ取り、踏み台攻撃に発展する可能性を解説。さらに、知人PCにログイン状態のGmailから重要書類を発見した事例を紹介し、ログアウトの重要性とパスワード管理の徹底を強調。Webサービス利用時は、サービス毎に複雑なパスワードを設定し、メモ帳等での管理を避けるべきだと警鐘を鳴らしている。

 

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

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

 

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

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

 

Goで一方向ハッシュ関数によるパスワードの暗号化を書いてみた

/** Geminiが自動生成した概要 **/
SHA-2は、SHA-1の後継として開発された暗号学的ハッシュ関数群です。SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256といったバリエーションがあり、それぞれ異なるハッシュ値の長さを生成します。SHA-2は、メッセージダイジェストを作成することでデータの整合性を検証し、改ざんを検出できます。内部構造はSHA-1と類似していますが、より安全で攻撃に対する耐性が高いとされています。現在、SHA-256とSHA-512が広く利用されており、SSL/TLSやデジタル署名など、様々なセキュリティアプリケーションで重要な役割を果たしています。

 

SOY Shopにステップメールを追加してみた

/** Geminiが自動生成した概要 **/
SOY Shopで売れるネットショップ構築を目指す中で、ステップメール機能を追加。ステップメールとは、登録されたメールアドレスに、設定した順番と送信日で複数メールを自動配信する仕組み。高額商品や定期購入など、購入前に段階的な情報提供が必要な場合に有効。ブログ記事やメルマガでは難しい、順序立てた情報提供と継続的な顧客接点を可能にする。オフライン閲覧、サイトへの継続アクセス促進といったメリットも。SOY ShopではSOY Mail連携でステップメール後のメルマガ配信も可能。古典的な手法ながら、アプリ連携で強力な販促ツールとなる。

 

SOY Shopで販売期間設定を追加

/** Geminiが自動生成した概要 **/
SOY Shopの販売終了商品の管理画面操作忘れを防止するため、販売期間設定機能が追加された。商品は登録画面でカレンダーから販売開始・終了日時を設定可能になり、期間外は注文エラーとなる。 従来のカート非表示プラグインは手動操作が必要だったが、この機能により自動で販売制御が行える。販売期間開始前も同様に注文が制御される。ダウンロードはSOY CMSフォーラムから可能。

 

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

/** Geminiが自動生成した概要 **/
記事「検索フォームと検索結果ページを作ってみた3」では、検索結果ページに記事一覧を表示する具体的な実装方法を解説しています。 前記事で準備した`entry_search`関数に検索ロジックを記述します。まず、`soycms_search.php`にデータベースへの接続設定を追加し、クエリ文字列から検索キーワードを取得します。取得したキーワードを元にデータベースを検索し、結果を配列に格納します。 記事一覧の表示には、取得した配列をループ処理で展開し、各記事のタイトルとURLを表示します。記事タイトルはリンクとして設定し、クリックすると詳細ページへ遷移するようにします。また、検索結果が0件の場合には「該当する記事は見つかりませんでした」と表示する処理も追加します。 これらの処理により、ユーザーが入力したキーワードに合致する記事一覧が検索結果ページに表示されるようになります。

 

書籍をクレジットカードで購入して、月末支払する

/** Geminiが自動生成した概要 **/
書籍購入時と月末のクレジットカード支払いの処理についてGnucashの操作手順を紹介。購入時はクレジットカード負債が増え、書籍費用が増加。支払時は普通預金からクレジットカード負債を減額。これにより、クレジットカードによる後日支払いの帳簿付けの基本的な操作を確認。複数人での共同作業については、今後の検討事項とされています。

 

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

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

 

書籍を購入するを登録してみる

/** Geminiが自動生成した概要 **/
GnuCashで1500円の書籍購入を登録する手順と結果の記録。 前回の1050,000円の資産から、書籍購入費用1500円を計上。 借方に「書籍」1500円、貸方に「現金」1500円を入力。 結果、資産と現金残高は1,048,500円に減少し、書籍勘定には1500円が計上された。 操作は「費用」→「書籍」を選択し、「資金移動」で現金から1500円を移動することで完了。 意図通りに登録できたことを確認。

 

売掛金を登録して、現金回収まで

/** Geminiが自動生成した概要 **/
売掛金は、売却した商品の代金をまだ回収していない資産です。GnuCash では、売掛金は資産移動で登録し、貸方には収益の売上を記入します。 売掛金を現金で回収するには、売掛金を開き、資産移動を現金に変更し、支払額を 0 に設定します。これにより、貸借残高が 0 になり、流動資産に売掛金の金額が追加されます。 GnuCash で売掛金を登録・回収した結果、収益は変わらず、売掛金は 0 になり、流動資産は売掛金の金額分増加します。これにより、資産と収益の関係が正しく反映されます。

 

売上の一部を普通預金に入れてみる

/** Geminiが自動生成した概要 **/
簿記の仕組みを理解するために、GnuCashを使用して架空の取引を記録しました。100万円の普通預金から始め、20万円の売上を得て、その半額を普通預金に入金しました。まず、売上を記録し、資産である「現金」が増加し、「売上」という収益が増加する取引を作成しました。次に、売上の半額を普通預金に移す必要がありましたが、普通預金に直接入金する方法では失敗しました。正しく記録するには、資産である「現金」を減らして、「普通預金」を増やす取引を作成する必要があることを理解しました。この方法により、資産の合計は不変で、現金が10万円減少し、普通預金が110万円になりました。このプロセスにより、簿記の基本的な概念を理解し、将来のより複雑な取引に備えることができました。

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

Powered by SOY CMS   ↑トップへ