物品レンタルの案件は難しい

物品レンタルのECサイトを作りたいという要望を時折頂くことがある。

 

ところが、物品レンタルを製作できるECサービスというのはかなり少ない。

今のところ私が見つけたのは、aishipRENTALとShopifyの2社だけである。

 

物品レンタルは一見、会議室や(美容室などの)スタッフの予約システムを流用すればできそうな気がする。

しかし実際には物品レンタル独特の要件があり、これらの予約システム流用はかなり使いにくいものとなる。

物品レンタル特有の要件とは以下のようなものである。

 

1 1つ(1種類)の商品で複数の在庫を持つ

会議室やスタッフの予約では、部屋やスタッフは一人ずつであり、重複して予約することはできない。むしろ重複が発生しないようにシステムが組まれている。

物品レンタルの場合は1種類の商品をレンタル在庫として複数個用意することが多い。そのため、会議室・スタッフ予約システムを流用しようとすると、会議室やスタッフを在庫数の分用意することになる。

またユーザーも、その在庫から選んで予約するような形となるため、利便性が悪い。

 

2 色違い・サイズ違いなどのバリエーションがある

物品レンタルはどちらかというと物品販売のECシステムに近いところがある。レンタル衣装などでは一つの商品に色やサイズによるバリエーションがあり、それらは商品の詳細ページから選択する方がユーザーにとって便利である。

会議室やスタッフの予約システムはこのような要件に応えられない。

 

3 数日にわたって貸し出されることが多い

会議室やスタッフの予約、というのは大抵数時間程度であり、日をまたぐことがほとんどない。そのためこれらのシステムでは、複数日の予約には対応できない、というシステムも多い。

日付をまたぐ予約が可能なのは宿泊施設向けの予約システムくらいのものである。

 

4 ユーザーの予約の前後に物品を配送するための期間が必要になる

レンタル品の貸し出し・返却をユーザーが店頭に出向いて行うのであれば、レンタル開始日・終了日だけで問題ないが、郵送するパターンの場合はレンタル期日の前後数日間を配送に充てなければならない。

そのため、在庫管理において、ユーザーが入力したレンタル期間の前後も含めて管理しなければならない。

とはいえこちらはある程度運用でカバーはできる。会議室などの予約システムでも、貸出が終わった後一定時間は他の人が借りることができない、というインターバル設定機能がついていることが多い。

インターバルを返却の郵送時間・次の貸し出しの発送期間の合計で設定するのと、当日予約を不可とし、貸出予約が可能になる日時を郵送に必要な期間分、後に設定すればよい。

 

 

さて、現在存在する物品レンタルのECシステムでも上記4条件を完全に満たせるものはさらに絞られ、aishipRENTALのみとなる。

外国製の物品レンタルシステムの場合、予約日のフォーマットが「年・月・日」ではなく、「月・日・年」や「日・月・年」の順になっていたり、金額が小数点以下2桁まで表示されることが多く、非常に使いにくい。

 

このような状況から、物品レンタルのECシステムはまだブルーオーシャンであり、通常のECサイトや予約サイトよりも利用料金は高く設定されている。個人的にはもう少し選択肢が増えてくれないかなと思っている。

SendPDF for contact form 7 の日本語不足問題対策。

SendPDF for contact form 7 は、WordPressのメールフォームプラグイン「Contact form 7」の機能拡張プラグインで、メールフォームに入力されたデータを使ってPDFファイルを出力、メールに添付して送付することができる。

 

mPDFというPHPプラグインを使っていて、HTMLからPDFを生成できるため、設定などのハードルが低くて使いやすい。

 

ただ、mPDFの問題として、CJKフォントが使われているため、出力される漢字が中華フォントになってしまう問題がある。

また、いくつかの漢字、記号、全角の英数字のフォントがなく、PDFプレビューや出力時に豆腐*1もしくは空白となってしまう。

 

過去に「追加して」とお願いしたことはあるものの、なしのつぶてなので自力でどうにかすることにした。

なお、過去2回ほど挑戦して失敗、3度目の正直で何とかなったのでここに記録しておくことにした。おそらくmPDFそのものを使っている人にもある程度役に立つのではないかと思います。

作業内容

0 記録時点の環境について

  • PHP 7.4
  • WordPress 6.1.1
  • SendPDF for contact form 7 0.9.9.1
  • mPDF 8.0

1 追加するフォントの用意

ttf形式のフォントしか使えなさそうなので、IPAフォントを使います。

IPA Font ダウンロード | 一般社団法人 文字情報技術促進協議会

今回使ったのはIPA P 明朝とPゴシックの2つ。

ダウンロードしたzipファイルを展開。

プラグイン/mpdf/vendor/mpdf/mpdf/ttfonts/ にコピー。

 

2 FontVariables.php の修正

/mpdf/vendor/mpdf/mpdf/src/Config/FontVariables.php において、以下のコードを修正する。

'fontdata' => [で始まるリストに登録したフォントを追加する。

/* CJK fonts */の後ろあたりに以下を追加。

'ipamp' => [/* Japanese */
		'R' => "ipamp.ttf",
	],
	'ipagp' => [
		'R' => "ipagp.ttf",
	],

あと、こちらは不要かもしれないけど 、

'backupSubsFont' => ['dejavusanscondensed', 'freesans', 'sun-exta'],

'backupSubsFont' => ['dejavusanscondensed', 'freesans', 'ipamp', 'sun-exta'],
に。

'backupSIPFont' => 'sun-extb',

'backupSIPFont' => ['ipagp', 'sun-extb'],

に変更。

コードのコメントを見ると、「useSubstitutionsを使用する際に欠落している文字に使用するフォントを設定する」「useSubstitutionsを使用する際、CJK文字に使うフォントを設定する」とある。

ただこの、"useSubstitutions" というのは、ConfigVariables.phpにて、

// Substitute missing characters in UTF-8(multibyte) documents - from other fonts
'useSubstitutions' => false,
とあったので、この設定は多分機能しないと思う。

 

3 LanguageToFont.phpの修正

/mpdf/vendor/mpdf/mpdf/src/Language/LanguageToFont.php の、以下のコードを修正。

これは日本語を出力するときに使う可能性があるフォントの一覧らしい。優先適用したいフォントを追加した。

case 'ja':
case 'jpn': // Japanese HIRAGANA KATAKANA
	$unifont = 'sun-exta';
	if ($adobeCJK) {
		$unifont = 'sjis';
	}
	break;

case 'ja':
case 'jpn': // Japanese HIRAGANA KATAKANA
	$unifont = 'ipamp';
	if ($adobeCJK) {
		$unifont = 'ipamp,ipagp,sjis';
	}
	break;

に。

 

4 lang2fonts.cssの修正

/mpdf/vendor/mpdf/mpdf/data/lang2fonts.cssの以下のコードを修正。

:lang("ja"), :lang("jpn")  {	/* Japanese HIRAGANA KATAKANA */
	font-family: sun-exta, sjis;
}


:lang("ja"), :lang("jpn")  {	/* Japanese HIRAGANA KATAKANA */
	font-family: ipamp, ipagp, sjis;
}


に。

 

5 send-pdf.phpの修正

/classes/send-pdf.phpfunction wpcf7pdf_getFontsTab()にあるリストに以下を追加。

'IPA-gp' => 'ipagp',
'IPA-mp' => 'ipamp',

こちらは管理画面のフォントの選択リストに入る。

残る問題

中華フォントはそのまま

上記の作業を行い、テストサイトでとりあえず豆腐が出なくなることを確認。制作者さんはgithubで開発していたため、プルリクエストを送信した。

ただ、上記の作業を行っても、IPAフォントが適用されるのは不足している字体に対してだけである。豆腐はなくなるが大半の漢字は依然として中華フォントのまま。

 

この問題を解決するには以下のコードを修正する。

上記手順2番目に修正した、/mpdf/vendor/mpdf/mpdf/src/Config/FontVariables.php において、

"sun-exta" => [
	'R' => "Sun-ExtA.ttf",
	'sip-ext' => 'sun-extb', /* SIP=Plane2 Unicode (extension B) */
],
"sun-extb" => [
	'R' => "Sun-ExtB.ttf",
],

"sun-exta" => [
	'R' => "ipamp.ttf",
	'sip-ext' => 'sun-extb', /* SIP=Plane2 Unicode (extension B) */
],
"sun-extb" => [
	'R' => "ipamp.ttf",
],

に。

これでデフォルトがIPA P明朝となる。

これをプルリクに入れなかったのは、このsun-exta, sun-extbというのが中国、韓国のユーザーに対しても影響すると思われるから。

 

いっそのこと、この変更を加えたものを、日本語専用のプラグインとして独立させようかと思っている。

 

ver. 0.9.6 以降は別の問題もある

上記の日本語の問題とは無関係だが、ver. 0.9.6 以降、チェックボックスラジオボタンの値に2バイト文字があるとPDFに出力されないという問題が発生している。(ver. 0.9.9.1 の時点でも未解決)

一度はデバッグされて、値が1バイト文字列、または2バイト文字列のみの場合は出力され、1バイト文字と2バイト文字が混ざっていると出力されないという不思議な状態になっていたが、0.9.9.1では2バイト文字列があると出力されない状態になっている。

 

参考にした記事

最大限の感謝を。

mpdfで利用するfontをライブラリ外から指定する方法 - Qiita

mPDF、フォント(.ttf)を追加する|マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~

mpdfで日本語のフォントを追加したり、文字化けを回避したり - tohokuaikiのチラシの裏

PHPからHTML形式の記述でPDFファイルを作るmpdfの使い方と日本語フォントの指定方法 | ゆうそうとITブログ

*1:字体がないときに表示される四角い記号の俗称

【メモ】XAMPPのPHPのバージョンを変更する方法

WordPressは(ver.6.1.1時点において)まだPHP8に完全対応していない

新しいパソコンでXAMPP入れて、ローカルにクライアントのミラーサイトを作ったところ、なんかエラーが出てくる。

調べたところ「まだ完全対応してないよ」ということなので、WordPress使う場合のPHPは7系を使いましょう。

 

XAMPPのPHPをダウングレードしたい

ということで調べた結果をいかにメモしておく。

1. 旧バージョンのXAMPPをダウンロードする

以下のページで

https://sourceforge.net/projects/xampp/files/

自分のOSのXAMPPを選択する。

 

リストに表示される名前の数字がPHPのバージョンとなっている。7系の最新版を選んで、.zipファイルの方をダウンロードする。

ダウンロードしたらデスクトップとかダウンロードフォルダのような、xamppをインストールしていないところに展開する。

2. 現在のPHPディレクトリと設定ファイル名をリネーム

※XAMPPは終了させておくこと。

  1. /xampp/ ディレクトリ直下の /php/ ディレクトリをリネーム。(php816など、バージョン名を追記すると後々分かりやすいと思う)
  2. /xampp/apache/conf/extra/ ディレクトリ内の httpd-xampp.conf をリネーム。

3. 1.でダウンロード・展開したphpディレクトリと設定ファイルを所定の場所にコピー

これでxamppを動かすと、新たに入れたPHPの方が動く。

確認するには、XAMPPのコントロールパネルから「shell」をクリックして、出てきたコマンド入力画面で、php -v と入力すれば使われているPHPのバージョンが分かる。

補記

アプリ開発者など、頻繁にPHPのバージョンを変更しないといけない人たちの場合は、新たに入れるPHPにもバージョン番号を付与して、コマンドプロンプトで「シンボリックリンク」を変更する方法を取るのが良いらしい。

XAMPP PHPのバージョン切り替え方法 - Laravel学習帳

私のようにWordPressしか使わねーよ、みたいな人の場合は、シンボリックリンク変更したことを忘れて後々厄介なことになりかねないので、単純にphpディレクトリと設定ファイルを入れ替えるだけにした方が良いと思う。

 

今回はダウングレードのやり方、としてメモしたけど、アップデートする場合にも使えると思う。大規模なアップデートが行われた場合には問題が発生するかも知らんけど。

お名前.comメールを維持しつつ外部サーバーにサイトを引っ越す方法

概要

  1. お名前.comのドメイン管理と、レンタルサーバーは全く別のサービス。
  2. お名前.comのレンタルサーバーを使っている場合、ネームサーバーはレンタルサーバー側のものを使用している。(そのためドメイン管理側の設定画面でAレコードなどを変更しても反映されない)
  3. お名前.comのレンタルサーバーを借りている状態で、FAQの指示に従ってDNSサーバー側の設定を変えるとメールが届かなくなるなどの問題が発生する。
    レンタルサーバーの管理画面にあるDNS設定で変更するのが正しいやり方)

本文

クライアントの状態

  • ドメインはお名前.comで取得・管理。
  • サイトはお名前.comのレンタルサーバー(SVサーバー)を使用。
  • メールはSVサーバーに付随するメールを使用。
  • ドメイン管理画面におけるネームサーバーはdns01.gmoserver.jpなど

やりたいこと

クライアントはサイトリニューアルを外部の制作会社に依頼。これに伴いウェブサーバーは外部のサーバーに移転。メールはそのまま使用したい。

作業手順

【重要】お名前.comのドメイン管理の管理画面のDNS設定は使わない。

SVサーバーのサーバーのコントロールパネルの中にあるDNS設定を使って、Aレコードを変更する。(これはRSサーバーでも同じ)

NSサーバーはSVサーバー下にあるため、MXレコードなどの変更は不要。

 

何にハマったか

  1. ドメインの管理画面にあるDNS設定でAレコードを設定したら、何も変わらない。
  2. FAQを読み漁って、Aレコードの変更にはネームサーバーをdns01.gmoserver.jpなどから01.dnsv.jpなどに変更せよ、との記述を見つける。

    https://help.onamae.com/answer/14353
  3.  ネームサーバーを変更。このときメールが届かなくなる可能性を考慮し、MXサーバーも指定。(なお、SVサーバーのMXサーバー情報はwhois検索から得た)
  4. MXサーバーを指定したにもかかわらず、メールの送受信不能になった。
  5. 急いで元の状態に戻すと、メールは受信可能になった。

SVサーバーに付随するメールを使っている場合は、メールの送達はNSレコードがSVサーバーのもの(dns01~など)でない限り機能しないと思われる。

なお、SVサーバーではなく、お名前メールだけの契約だとどうなのか分からない。

 

なお、上記はSVサーバーの事例であったが、新しいRSサーバーの方でも同様。

この辺の注意書きはお名前.comのFAQには書かれていないため注意が必要。

 

感想

お名前.comの実態として、ドメインの管理と、レンタルサーバーはまったく別個のものだが、営業的には同一サービスのように見せかけている。

FAQを見てもその辺は非常に読み取りにくい。(経験豊富な人なら察することができるのだろうが、はっきり言って説明不足である)

 

お名前.comの管理画面は、設定画面をたどっていると突然グローバルナビのメニューが全く別のものになるなど、最悪の見本を言える。その原因の一つは、全く別のサービスを無理やり内部リンクでつないでいることにもある。(それでもやりようはあるのだが、おそらくお名前.comにはまともなディレクター・デザイナーがいないのだろう)

 

ムームードメインも微妙にロリポップなどと密結合なところがあり、それが分かりにくさにつながっている。所詮GMOグループ、と言えばそれまでだが、実に面倒くさい。

お名前.comのサポート窓口

お名前ドットコムはサポート窓口を実質的に隠しているのでここに暴露しておく。

メール、電話サポートの窓口は、「特定商取引法に基づく表記」のページにある電話番号とメールアドレスとなっている。

https://www.onamae.com/tokusho/

 

特商法に基づく表示は、本来契約に関する問題の問い合わせ窓口のはずだが、お名前ドットコムはこれが技術サポート窓口となっている。

他のページではまずこの電話番号とメールアドレスは見つからない。どれだけサポートしたくないんだ?お名前ドットコム。

ヘルプページに「24時間サポート」などとヘッダに表示してたりするが、電話サポートは平日10:00〜19:00までしか受け付けていない。

 

なお、電話でサポートを受けるには、お客様IDと契約者名を告げる必要があるのであらかじめ管理画面に入っておくとよい。

 

電話は数分間待てば繋がったので、急ぎの場合はこちらの方がいい。窓口のサポートも十分丁寧だった。現場の方ありがとう。

 

ヘルプページにこれらのサポート窓口への動線を一切設けていないのは甚だしく不満。お名前ドットコムの経営陣は猛省を。

 

そりゃまあ、安いサービスだからど素人が多くてFAQ読まずに電話してくる人を倦厭してこうしてるんでしょうけどね、FAQも不十分なのよ。

まあ、利益至上主義のGMOグループだからこうなのかもしれませんが、いただけませんなぁ。

フリーランスがクライアントのサイトを抱え込むな、と言うお話

こちらの話題

 

自分もTwitterで反応してたんだけど、いろいろ思うことあったんでブログにする。

 

幸か不幸か自分はクライアントのサイトを自分で管理しているサーバーに入れる機会はなかった。大概元受けの制作会社が抱えるんで。

 

ただ、自分で請け負う場合は、元ツイートのように、「自分が死んだらヤバイ」って思ってたので、基本的にサイトの管理はサーバー、ドメインともクライアントで契約してもらう形にするつもりでいた。現在もその方針に変わりはない。

 

ただ、Webに詳しくないクライアントにこれを説明するのが大変と言うのもあるし、面倒くさがるクライアントも多いだろうなと。

 

その点、Wixとかは (サイトの管理者=サーバーとドメインの管理者) であるので楽だよなと再評価する次第。最近はWixもJimdoもドメインの持ち出しができる。いい時代になったもんだ。

 

 

制作会社の中には、クライアントが自前でドメインやサーバーを持っていても、自分のところに引っ越させようとするところがある。

何でそんなことをするのかと言うと、いろんなサーバーのログインIDやパスワードを管理するのが面倒だから。自分が管理しているところであればサーバーの管理画面へは1つのIDとパスワードで事足りる。

高々10秒程度の手間を面倒くさがっているだけなんだよね。すごく自分勝手。

サーバーの引っ越しでクライアントが被る迷惑は、メールソフトの再設定。社員一人一人のパソコン・アカウントの全てで新しいサーバー用のアカウントを追加、設定が必要になる。切り替え前後のメールのやり取りに支障をきたす。

そんな迷惑をクライアントにかけてでも自分のわずかな楽を優先する。控えめに言ってクソですね。

最も悪質なものとしては、サイトとドメインを人質にとる目的でそれをやるパターン。

自分の周りでは聞かないんだけど、10年くらい前にサイトやドメインを渡さない制作会社の話を聞いたことはある。

まあ、訴訟を起こして回収したうえで損害賠償請求とかもできそうだけどね。

 

ところで、

 

 

サーバーの再販、調べてみるとXserver、ロリポ、さくらなど結構な数のレンタルサーバーが認めてるんでダメってことはないかなと。ヘテムルとかは再販不可って明記してますね。

 

セキュリティについては全くその通りで、スパムメールの発信元にされてしまった場合、サーバー内の全サイトで「発信したメールが届かない」状態になる。

これ、メーラーデーモンからの警告すらないの。静かにビジネスが止まる。クライアントの信用が落ちる。

さらに、レンタルサーバーも問題を検知して、サイトそのものを落とします。同じサーバーに入れた他社のサイトも全部ひっくるめて閲覧不能、メールの送受信不能に陥ります。

そしてウェブサーバーもメールサーバーも一旦初期化しないといけない。メールの中身はどうにかバックアップ取れたりするけど、サイトとかは全部安全が確認されているバックアップデータを使って再構築。

 

どうにか全てのドメインのリセットができて、レンタルサーバーの会社に再開の連絡を入れても、まだメールは届きません。

 

スパムメールブラックリストを提供している会社(ほぼ外国。英語必須)のサイトで、ブラックリストから外してもらう申請をしなきゃいけない。これが数社あって、ブラックリストに載っていればそのすべてで申請が必要。

 

話は変わって。

このツイートに関連して、「電気通信事業者の届け出も必要だよ」というリプがついてるのを見てびっくり。初耳でした。

調べてみると、ウェブサイトを公開するだけなら届出は不要。ただし、メールサーバーも提供する場合は届出が必要と言うことが分かりました。

https://www.soumu.go.jp/main_content/000477428.pdf

 

大抵の制作会社、引っかかるんじゃね?

 

この辺も、契約主体がクライアントになるWixだのJimdoだのは楽だよねぇ、と。

 

 

マーケティングを勉強したら学びが多かった

カスタマージャーニーマップとかペルソナとかって、ウェブデザイン技能士の試験でも頻繁に出てきます。どちらも滅多に使わないんだけど、ちゃんと把握しようと思ったんですね。

 

で、色々調べるとどうも消費行動モデルとか言うのもちらちらと出てくる。アイドマとかアイシスとかいうやつ。ウェブマーケティングとか言うものらしいと。

 

さらに調べていくと、これ、どうももっと広い範囲の話の一部っぽいぞと。

 

で、

 

これはガチでやろうとすると、マーケティングと言うやつを知らなきゃいけないぞと。

 

というわけで、専門書をたくさん扱ってる大規模書店に行きました。

 

まー、ウェブマーケティング周りの書籍が山ほどあること。マーケティングも。選ぶのが大変。

いろんなトピックとか、流行りのものとかが山ほどあるんですね。

 

ただ、私はもうちょっと「体系的に」「全体像を」調べたい。

そういうのって、書店のマーケティングのコーナーにはないわけですよ。あるかもしれないけど、どれがそうなのか分からないレベル。

 

こういう時にはね、あれ。大学の教科書ですよ。大学のマーケティングの授業で教科書として使われる本を探すべき。

体系的な勉強と言えば学校ですからね。そこで使われる教科書ならまず外れはない。

 

じゃあ、どれが大学の教科書よ? と。どっかの経済大学のシラバスでも見ればよいのでしょうが、そこはほれ、我々には「放送大学」っていう一流の先生がやってる大学があるわけです。学生の学力に幅があるので、授業内容がすごく工夫されれていると評判の大学です。衛星放送で誰でも授業を受けられる。

書店には放送大学の教科書コーナーがあったので、そこでマーケティングの本を買ってきてノート取りながら勉強。1週間くらいで読破。

 

世界が広がりましたよ。マジで。

 

マーケティングの教科書では、市場の分析、ドメイン、ブランド、事業の展開などについて基本的な考え方とかが書かれていて、ウェブマーケティングがどこを担うのかが見えてくる。情報設計がはかどります。

 

で、ちょうど読み終わったあたりで案件の見積提案を作ってくれと言う話が舞い込んできたんで、学んだことを活かして作ったわけです。

 

その会社の市場でのポジション、競合他社との違い、差別化できるポイントを探して、そこを訴求しましょうという戦略が立てられる。

本格的なマーケティングとは程遠いものの、単にクライアントにヒアリングして、「何を一番に前面に出しましょうか?」と聞くのではなく、「これを前面に出すのが良いと思います!」って話ができる。

 

何と言うか、受け身ではなくて攻めの営業みたいなことができるんですよね。

 

クライアントのウェブ担当者さんって、結構な割合で、単にウェブサイトを作れ、って命令だけ受けてて、何が何だか分からない状態で見積依頼をしてくるわけです。

そこでテンプレート的なサイトの構成ではなく、その会社の事業に最適化された提案ができるようになった。コンテンツについても、ペルソナまでは行かなくても想定されるニーズを持ったユーザーイメージと、ストーリーを作って考えることができる。

そういう「取っ掛かり」を得るのに、マーケティングの知識ってすごく助かる。

 

もちろん、過去のクライアントを思い出すと、そう差別化できるものばかりではない、と言うのはあります。

事業分野によっては、扱っている商品やサービスが周辺の他社と全く同じで差別化要素が見当たらない、またその会社自体、差別化をあまり考えずに経営しているってパターンもありますから。そういう場合はまあ、しょうがない。

でもまあ今なら、それでももうちょっとやれそうな気がする。

 

ヒアリングにおいても、どこに目を付けるか、目星を付ける上でも、マーケティングの知識はすごく役に立つなと思った次第。

ウェブマーケティングを学ぶなら、その外側のマーケティングについても勉強すると面白いよ、と言う話でした。