たつをの ChangeLog

9 件 見つかりました。

1 2 [ 次へ ]

Amazon アソシエイトの Kindle 書籍の紹介料率は基本的に8%である。
(得られる紹介料は一冊あたり MAX 1000円の制限あり)

紹介料


紹介料は税抜価格の8%に対して小数点以下を四捨五入して計算される。
(過去数年の売り上げレポートのデータで検算済)

例えば、税抜価格6円(税込価格7円)の Kindle 書籍が1冊売れた場合は
6 * 0.08 = 0.48
で四捨五入して0となり収入は無し。
税抜価格7円(税込価格8円)の Kindle 書籍が1冊売れた場合は
7 * 0.08 = 0.56
で四捨五入して1となり収入は1円。

税込価格税抜価格紹介料紹介料(最終)
760.480
870.561
20181.441
21191.522

この四捨五入による調整のため、実際の価格と紹介料で計算すると紹介料率は必ずしも8%ぴったりにはならない。

なお、紹介料率の最高は7円の作品(税込価格8円)を売って紹介料が1円入ったときで14.29%である。

また、紹介料率の最低は6円以下の作品(税込価格7円以下)を売って紹介料が0円のときの0%で、その次は18円(税込価格20円、紹介料1円)の作品のときで5.56%である(紹介料が1000円(MAX)になる場合は際限ないので除外)。

税込価格と税抜価格


Amazon のサイトで表示されている Kindle 書籍の価格は税込価格である。

税込価格(小数点以下無し)が先にあって、それをベースに税抜価格を計算しているようだ。
同じ税抜価格の作品の税込価格が1種類ではない(例えば税抜25円の作品の税込価格は27円と28円の2種類がある)というのが根拠。

税抜価格は税込価格を 1.1 で割って四捨五入して計算する。消費税が10%なので110%、つまり 1.1 で割る。

例えば、2023年12月13日の『【推しの子】 13』はサイトでの表示価格(税込価格)が732円なので
732 / 1.1 = 665.4545...
で四捨五入した665円が税抜価格となる。

税込価格税抜価格
732665『【推しの子】 13』(2023/12/13)
730664『薬屋のひとりごと 1巻』(2023/12/13)
2725『サハラ(新装版)5』(2023/12/13)
2825『サハラ(新装版)6』(2023/12/13)

なお、ポイント還元キャンペーンなどによるポイント分の実質値引きは、売り上げレポートには反映されない。つまり、紹介料収入には影響がない。ポイント還元キャンペーンは売上冊数が増える上に紹介料は元の価格ベースで計算されるので、アフィリエイター的にはとてもありがたい。

表示価格(税込価格)から紹介料を計算する


表示価格(税込価格)から紹介料を計算する式。
ROUND() は小数点第一位で四捨五入する関数とする。

ROUND( ROUND( 表示価格 / 1.1 ) * 0.08 )

JavaScript で計算するやつ


税込価格、税抜価格、紹介料のどれかに金額を入力してその横のボタンを押すと残りの金額が計算される。ただし、税抜価格から計算する場合は税込価格が、紹介料から計算する場合は税抜価格と税込価格が一意ではないことに注意(複数の可能性があっても表示される金額は一つだけ)。

税込価格
税抜価格
紹介料


参考


li ごとにそれぞれ別の絵文字をマーカー文字として設定したい。
しかし、list-item-style で一つ一つ li に設定するのは面倒。
なので、li の先頭文字をリストのマーカー文字にする作戦!

  • li の先頭文字の取得。
    e.innerText.spit('')[0] だとサロゲートペア非対応で絵文字が壊れる。
    Array.from(e.innerText)[0] でいける。
    これをマーカー文字として JavaScript で設定すれば良い。
  • マーカー文字で使う先頭文字を li 本体で非表示にする。
    そうしないと二重で表示されるので。
    擬似要素 ::first-letter を使う。
    しかし利用可能プロパティの制約がきつい。
    display: none が使えないのはつらい。
    とりあえず透明にして全体を左にずらすことに。

こんな感じになりました。
(サービス適用例: キンセリの「定番セール」コーナー)
li marker emoji CSS

サンプルコード (HTML, CSS, JavaScript):
<ul class="c20220808">
 <li>&#x1F4AB;定期開催
 <ul>
  <li>&#10140;<a href="">&#x1f31e;日替わりセール</a>
   <a href="">&#x1f31b;月替わりセール</a>
  </li>
 </ul>
<li>&#x1f4b0;<a href="">ポイント還元対象作品</a>
 <ul>
 <li>&#x1f17f;<a href="">31%以上</a>
  <ul><li>&#10140;<a href="">&#x1F4AD;マンガ</a>
   <a href="">&#x1f9d9;ラノベ</a>
   <a href="">&#x1f4d4;文学</a>
   <a href="">&#x1f9ea;科学</a>
   <a href="">&#x1f4ca;ビジネス</a>
  </li>
 </ul>
 </li>
</ul>
<style>
.c20220808 li::first-letter { color: transparent; margin-left: -1em; }
</style>
<script>
Array.from(document.querySelectorAll('.c20220808 li')).forEach(
  function(e){ e.style.listStyleType = '"' + Array.from(e.innerText)[0] + '"'; }
);
</script>


なお、最初は list-style-type: none で良いかと思ったのですが、折り返しが発生したときに「コレジャナイ!」となりました。
  • "list-style-type: none" のとき (コレジャナイ!)
    • 📕おはようございます。
    • 📕こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。
  • マーカー文字が📕のとき (コレダ!)
    • おはようございます。
    • こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。

参考

この記事に言及しているこのブログ内の記事

自分用メモ。

JavaScript でクリップボードにコピーするやつ。
関数 (script タグ) を書かずに onclick に無理やり押し込む作戦。




<div>
<textarea>あいうえお</textarea>
<br>
<button
 onclick='this.parentNode.getElementsByTagName("textarea")[0].select();
 document.execCommand("copy");'
>コピー</button>
</div>

作業メモ的な話。
JavaScript のグラフ描画ライブラリ「Chart.js」を使ってみた。
練習として、折れ線グラフや棒グラフなどの基本グラフと、バブルチャートなどの点描系グラフの2種類でサンプルプログラムを作成。
フォームにCSVを貼り付けるとグラフ描画するやつ。

chart.js%20sampe%20graph chart.js%20sampe%20graph

今後はこれをベースにいろいろやってみる。


メモ(随時追記)

  • グラフの大きさ指定
    • 公式ドキュメントの通りに canvas タグ にサイズ指定しても効かない
      <canvas id="myChart" width="400" height="400"></canvas>
      
    • 公式サンプルではこうやっている(効く)
      <div style="width:75%;"><canvas id="canvas"></canvas></div>
      

参考


自分用メモ。
領域を表示したり見えなくしたり入れ替えたりをトグルボタンで切り替え。
定期的に同じようなの書いてるけど現状版として。

show_hide




<script>
function show_hide(id) {
  if (!document.getElementById) return;
  if (!document.getElementById(id)) return;
  if (document.getElementById(id).style.display != "block")
    document.getElementById(id).style.display = "block";
  else
    document.getElementById(id).style.display = "none";
}
function show_hide_class(cn) {
  var es = document.getElementsByClassName(cn);
  for (var i = 0; i < es.length; i++) {
    if (es[i].style.display != "block")
      es[i].style.display = "block";
    else
      es[i].style.display = "none";
  }
}
</script>

<body onload="document.getElementById('b<TMPL_VAR name=ymd>').click()">

<div style="margin:1em">
<button id="b<TMPL_VAR name=ymd>" type="button" onclick="show_hide('c<TMPL_VAR name=ymd>');show_hide_class('s<TMPL_VAR name=ymd>')">
<span class="s<TMPL_VAR name=ymd>" style="display:block">見る</span>
<span class="s<TMPL_VAR name=ymd>" style="display:none">隠す</span>
</button>
</div>

<div id="c<TMPL_VAR name=ymd>" style="display:none">
[領域]
</div>

switch


[AAAAAA]


<div style="margin:1em">
<button id="b20180306" type="button" onclick="show_hide_class('s20180306')">
<span class="s20180306" style="display:block">領域A</span>
<span class="s20180306" style="display:none">領域B</span>
</button>
</div>
<div class="s20180306" style="display:block">[AAAAAA]</div>
<div class="s20180306" style="display:none">[BBBBBB]</div>

関連記事


1 2 [ 次へ ]

たつをの ChangeLog
Powered by chalow