<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WordCamp Haneda 2019 &#8211; WordPress Memo</title>
	<atom:link href="https://blog.riverforest-wp.info/category/wordcamp-haneda-2019/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.riverforest-wp.info</link>
	<description>WordPress に関する覚え書き</description>
	<lastBuildDate>Fri, 09 May 2025 12:48:53 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.riverforest-wp.info/wp-content/uploads/2018/05/cropped-icon-256x256-1-32x32.png</url>
	<title>WordCamp Haneda 2019 &#8211; WordPress Memo</title>
	<link>https://blog.riverforest-wp.info</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WordCamp Haneda 2019 に参加し登壇しました</title>
		<link>https://blog.riverforest-wp.info/wordcamp-haneda-2019-report/</link>
		
		<dc:creator><![CDATA[Katsushi Kawamori]]></dc:creator>
		<pubDate>Thu, 25 Apr 2019 13:21:19 +0000</pubDate>
				<category><![CDATA[WordCamp Haneda 2019]]></category>
		<category><![CDATA[Webサービス]]></category>
		<category><![CDATA[WordCamp]]></category>
		<guid isPermaLink="false">https://blog.riverforest-wp.info/?p=1189</guid>

					<description><![CDATA[はじめに ４月２０日（土）のセッションデイのみ参加し登壇しました。昨年の WordCamp Osaka 2018 以来の方、ネットでの知り合いでしたが初見の方、人から紹介された方、こちらから話しかけた方等、複数の方と知り [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">はじめに</h3>



<p>４月２０日（土）の<strong>セッションデイ</strong>のみ参加し登壇しました。昨年の <strong>WordCamp Osaka 2018</strong> 以来の方、ネットでの知り合いでしたが初見の方、人から紹介された方、こちらから話しかけた方等、複数の方と知り合いになり、いろいろとお話しし有意義な１日を過ごしました。</p>



<p>登壇ですが、今回スライド内のコードをポインターで指しながら発表しました。以下にスライドを共有しますが、スライド内に説明がほとんど書いてなく、また、発表の動画を見てもわかりづらいかもしれないと思いました。補足説明の必要性を感じましたので、以下で説明させていただきます。</p>



<figure class="wp-block-embed is-type-rich is-provider-speaker-deck wp-block-embed-speaker-deck is-provider-wp-oembed-blog-card-handler wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="WordPress で Web サービスの構築" id="talk_frame_511308" class="speakerdeck-iframe" src="//speakerdeck.com/player/16b655087bcf4cfa8bc5c2845b6e373d" width="500" height="375" style="aspect-ratio:500/375; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe>
</div></figure>



<h3 class="wp-block-heading">補足説明</h3>



<h4 class="wp-block-heading"><strong>１２ページ　予選</strong></h4>



<p>実際の画面です。この例ですと１ヒートに１２～１３組踊ります。画面の下に６ヒートがあります。審査員が、通過者をチェックしていきます。出場７４組中４８組をピックアップします。注意すべきは、ヒート毎に選ぶのではなく全体で選ぶというのが公式のルールです。最後のヒートが終わった後に、アップ数があっていなければならないので、審査員が数合わせができるように、気になった選手の印し用にタップすると黄色になるようにしました。もし数が合わなければ黄色のところにチェックをするという仕組みです。赤文字のカウントは現在チェックしている数です。アップ数の４８以外は赤になり、また４８にならなければ送信ボタンが現れない仕組みにしました。</p>



<h4 class="wp-block-heading"><strong>１５ページ　決勝</strong></h4>



<p>上段番号が背番号、下段が順位です。下段をスワイプして順位を確定します。重複状況が赤で表示されます。重複が無くなると送信ボダンが表示され送信できます。</p>



<h4 class="wp-block-heading"><strong>２１ページ　登録直後の通知メール</strong></h4>



<p>実際にプラグインを動作させて、登録するとこの様なメールが届くしくみです。「複数のユーザーが以下の様に追加されました。」というメッセージ以降にユーザー名とパスワードリセットリンクが複数追加されます。</p>



<h4 class="wp-block-heading"><strong>２２ページ　管理画面とデーターベースの確認</strong></h4>



<p>実際に管理画面と、データーベースを確認してみると、メールアドレスが全て同じになっているのがわかります。</p>



<h4 class="wp-block-heading"><strong>２３ページ　プラグインの管理画面</strong></h4>



<p>親ユーザーと子ユーザーという概念を導入しました。登録する親ユーザーには、採点システムを管理する独自の権限グループを与え、審査員端末のユーザーには購読者の権限グループを与えました。新規ユーザーのデフォルト権限グループは親ユーザーの権限と合わせなければなりません。また、子ユーザーの追加数を課金システムと連動させるために２種類用意しました。</p>



<h4 class="wp-block-heading"><strong>２４ページ　採点システム側の登録時</strong></h4>



<p>action_add_user 関数を、user_register にフックしています。親ユーザーの登録があったら、登録を締め切ります。また６日間でアカウントを削除する BdcScoringAcountHook にフックしています。</p>



<h4 class="wp-block-heading"><strong>２５ページ　Add Multiple User 側の登録時</strong></h4>



<p>登録時のフックに対応する関数です。親ユーザーのデフォルト権限で登録した場合に、auto_insert_users 関数を実行します。</p>



<h4 class="wp-block-heading"><strong>２６ページ　複数ユーザーの登録とメール通知</strong></h4>



<p>パラメータとして、親ユーザーのメールアドレス、ユーザー追加カウント最小数、ユーザー追加カウント最大数、ユーザー名の接頭辞、子ユーザーの権限を持ちます。まずユーザー数だけループさせて、wp_insert_user 関数で登録します。その登録 ID を配列に入れておきます。次に、登録 ID の配列をループさせて、wpdb でそれぞれの子ユーザーの users テーブルのメールアドレス欄に親ユーザーのメールアドレスを書き込みます。</p>



<h4 class="wp-block-heading"><strong>２７ページ　審査員端末のパスワードリセットを試す</strong></h4>



<p>実際にうまく動作するか、ログイン画面の「パスワードをお忘れですか？」リンクから、子ユーザーである審査員端末のパスワードリセットを試しました。無事に親ユーザーであるオペレーターアカウントのメールアドレスにパスワードリセットリンクの入ったメールが配信されました。</p>



<h4 class="wp-block-heading"><strong>２９ページ　課金による端末（ユーザー）追加</strong></h4>



<p>実際の画面です。上部は、５端末で無料の画面で Stripe で課金します。下部は、課金後の画面です。課金用の画面が無くなり、２２端末まで利用可能になっているのがわかります。</p>



<h4 class="wp-block-heading"><strong>３０ページ　課金による端末（ユーザー）追加の通知</strong></h4>



<p>実際のメール通知はこのようになります。この場合は、以前の５ユーザーに１７ユーザー追加され合計２２ユーザーまで拡張されます。</p>



<h4 class="wp-block-heading"><strong>３１ページ　採点システム側の課金時</strong></h4>



<p>simple_stripe_payment_charge、 simple_pyapal_payment_charge というフィルターをプラグイン側で用意しました。このフィルターは課金が成功した場合に動作します。また、Stripe, PayPal ボタンのショートコードをプラグイン側で用意しました。このボタンを押すと課金画面が現れます。フィルターを、paypal_charge、 stripe_charge という関数にフックさせます。それらの関数の中で、Add Multiple User で用意したアクションフック amu_paid_add_user を呼び出します。アクションフックが呼び出されると、設定しておいた子ユーザーの課金済みの追加数を追加する仕組みです。</p>



<h4 class="wp-block-heading"><strong>３３ページ　採点システム側の削除時</strong></h4>



<p>親ユーザー登録時に６日で登録しておいたフック、BdcScoringAcountHook が動作した時に、delete_data_account 関数が呼び出され、親ユーザーのアカウントが削除されます。ここには書いてありませんが、親ユーザーを削除すると子ユーザーも一括削除される仕組みになっています。 action_delete_user 関数は、delete_user にフックしていて親ユーザーが削除された時に動作します。users_can_register オプションを TRUE に戻し外部から登録できるようにします。 念のために BdcScoringAcountHook をクリアしています。</p>



<h4 class="wp-block-heading"><strong>３４ページ　その他の Web サービスとしての機能</strong></h4>



<p>同じ審査員のアカウントで採点はできないので、重複ログインの禁止は必須です。Ban Double
Login は、Facebook で流れていたのを思い出して、使用してみたところ、用途にピタリとあったので採用しました。</p>



<p>Locale Auto Switch は、ブラウザの言語設定で WordPress の言語を切り替えます。</p>



<p>セキュリティ対策は、Loginizer
の他にファイルのパーミッションや.htaccessファイルなどに施しています。</p>



<p>パスワードリセット対策は、パスワードの入力の間違いを軽減させるものです。オペレーターアカウントのPCのブラウザと審査員端末のブラウザの同期ができれば問題ないのですが、そうで無い場合の方が多いです。その際にパスワードを直接入力する事になります。たいていのユーザーは推奨されたパスワードを使用するはずです。その際にエルの小文字とアイの大文字とか、オーの大文字とゼロとかを間違えて何度もパスワードリセットを繰り返すというヒューマンエラーが起こりやすく非常なストレスになります。それらの間違えやすい文字をパスワードリセット画面から除外するプラグインです。</p>



<h3 class="wp-block-heading">終わりに</h3>



<p>セッションを聴きに来てくださった方々ありがとうございました。また実行委員長の又川さん他、実行委員、当日スタッフの皆様、本当にお疲れ様でした。そして、ありがとうございました。 <br></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WordCamp Haneda 2019 で登壇します</title>
		<link>https://blog.riverforest-wp.info/wordcamp-haneda-2019-speaker/</link>
		
		<dc:creator><![CDATA[Katsushi Kawamori]]></dc:creator>
		<pubDate>Sat, 30 Mar 2019 23:34:17 +0000</pubDate>
				<category><![CDATA[WordCamp Haneda 2019]]></category>
		<category><![CDATA[Webサービス]]></category>
		<category><![CDATA[WordCamp]]></category>
		<guid isPermaLink="false">https://blog.riverforest-wp.info/?p=1071</guid>

					<description><![CDATA[登壇概要 昨年１１月から競技会採点システムを始めました。複数のタブレットで採点し、PC 側で集計するものです。その Web サービス部分の機能を、5個の公式プラグインとして公開しました。そのプラグインをどのように採点シス [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">登壇概要<br></h3>



<p>昨年１１月から競技会採点システムを始めました。複数のタブレットで採点し、PC 側で集計するものです。その Web サービス部分の機能を、5個の公式プラグインとして公開しました。そのプラグインをどのように採点システムと関連させて使用しているかを一部コードを混ぜてお話しさせていただきます。</p>



<div class="wp-block-columns has-2-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<style>
.simpleblogcard_img_blockfbd36b8324c025408078f012b8ece788 {
  float: right;
  padding: 10px;
}
.simpleblogcard_borderfbd36b8324c025408078f012b8ece788 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_titlefbd36b8324c025408078f012b8ece788 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_descriptionfbd36b8324c025408078f012b8ece788 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://bdc-scoring.com/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_borderfbd36b8324c025408078f012b8ece788">
			bdc-scoring.com			<div class="simpleblogcard_titlefbd36b8324c025408078f012b8ece788">
				Ballroom dance competition Scoring System			</div>
							<div class="simpleblogcard_descriptionfbd36b8324c025408078f012b8ece788">
					Features of the Service This is a scoring system for ballroom dance competitions. Enter th&#8230;				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<style>
.simpleblogcard_img_block984518e17c4e8894cb252072e54e60a9 {
  float: right;
  padding: 10px;
}
.simpleblogcard_border984518e17c4e8894cb252072e54e60a9 {
  border-left: solid 8px #cd162c;
  padding: 0.25em 0.25em;
  background: transparent;
}
.simpleblogcard_title984518e17c4e8894cb252072e54e60a9 {
  line-height: 155%;
  font-weight: bold;
  display: block;
}
.simpleblogcard_description984518e17c4e8894cb252072e54e60a9 {
  line-height: 155%;
  color: #333;
}
</style>
<div class="simpleblogcard_wrap">
			<a style="text-decoration: none;" href=https://compe-scoring.com/>
			<div class="simpleblogcard_inner">
		<div class="simpleblogcard_border984518e17c4e8894cb252072e54e60a9">
			compe-scoring.com			<div class="simpleblogcard_title984518e17c4e8894cb252072e54e60a9">
				Competition Scoring System – Competition Scoring System			</div>
							<div class="simpleblogcard_description984518e17c4e8894cb252072e54e60a9">
					Features of the Service This service is a scoring system for competitions or contests. Aut&#8230;				</div>
					</div>
	</div>
	<div style="clear: both;"></div>
	</a>
</div>
</div>
</div>



<ul class="wp-block-list">
<li>メールアドレスのみの登録
<ul class="wp-block-list">
<li>一般的ですが、Web サービスとして重要な機能を付加しています。<strong><a href="https://ja.wordpress.org/plugins/user-mail-only-register/">User Mail Only Register</a></strong></li>
</ul>
</li>



<li>１つのメールアドレスで複数アカウント登録
<ul class="wp-block-list">
<li>これがメインの内容となります。<strong><a href="https://ja.wordpress.org/plugins/add-multiple-user/">Add Multiple User</a></strong></li>
</ul>
</li>



<li>課金方法
<ul class="wp-block-list">
<li>PayPal, Stripe による課金方法。<strong><a href="https://ja.wordpress.org/plugins/simple-paypal-payment/">Simple PayPal Payment</a>・<a href="https://ja.wordpress.org/plugins/simple-stripe-payment/">Simple Stripe Payment</a></strong> </li>
</ul>
</li>



<li>多国語、セキュリティ対策、パスワードリセット
<ul class="wp-block-list">
<li>その他のプラグインについてです。</li>
</ul>
</li>
</ul>



<figure class="wp-block-image aligncenter"><a href="https://2019.haneda.wordcamp.org/schedule/"><img fetchpriority="high" loading="eager" decoding="async" width="1024" height="574" src="https://blog.riverforest-wp.info/wp-content/uploads/20190331/wchaneda_timetable-1024x574.png" alt="" class="wp-image-1075" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20190331/wchaneda_timetable-1024x574.png 1024w, https://blog.riverforest-wp.info/wp-content/uploads/20190331/wchaneda_timetable-300x168.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20190331/wchaneda_timetable-768x430.png 768w, https://blog.riverforest-wp.info/wp-content/uploads/20190331/wchaneda_timetable-100x56.png 100w, https://blog.riverforest-wp.info/wp-content/uploads/20190331/wchaneda_timetable.png 1321w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
