rakutenの買い物カゴの挙動とID

楽天の買い物カゴの挙動とIDの使われ方を調査する

### 商品詳細ページ

ソースを見ると、URLの”gcv1-bk-w”が商品IDで、”item_number”として全てのkeyになっている様に見える。
item_numberとは別にitem_id 10000201がある。
shop_idはintの6桁の数字

<input value="331955" type="hidden" name="shop_id"><input value="ネスプレッソ公式 楽天市場店" type="hidden" name="shop_name"><input value="10000201" type="hidden" name="item_id"><input value="【公式】ネスプレッソ カプセル式コーヒーメーカー ヴァーチュオ ネクスト C クラシックブラック GCV1-BK-W | コーヒーメーカー コーヒーマシン エスプレッソマシーン おしゃれ 一人暮らし 家庭用 本格 一人用 コーヒー カプセル お手入れ簡単 Nespresso" type="hidden" name="item_name"><input value="GCV1-BK-W" type="hidden" name="item_number"><input value="nespresso" type="hidden" name="shopurl"><input value="/nespresso/gcv1-bk-w/" type="hidden" name="pageurl">

買い物かごへのbutton
->
-> 数量はunitsで管理している。

<form method="post" id="purchaseForm" data-timesale-id="10000201" action="https://basket.step.rakuten.co.jp/rms/mall/bs/cartadd/set?l2-id=item_PC_SingleNormalItem">
// 省略
<td class="floatingCartPurchaseButtonsContainer"><span class="unit">個数&nbsp;
</span><input value="1" type="text" size="4" name="units" id="units" class="rItemUnits"><span class="floatingCartSplitButtons"><span class="floatingCartSplitButtons">
// 省略
<span class="cart-button-container"><button data-ratParam="all" data-ratId="fixed_add" data-ratEvent="pv,appear" class="cart-button add-cart new-cart-button "><span class="normal"><img src="https://r.r10s.jp/com/img/rms/storefront/pc/page/plussign_23x23.png"><span>商品をかごに追加</span></span></button>

__event、shop_bid(shopid), item_id, inventory_flagを送っている。

<input value="ES01_003_001" type="hidden" name="__event"><input value="331955" type="hidden" name="shop_bid"><input value="10000201" type="hidden" name="item_id"><input value="1" type="hidden" name="inventory_flag">

買い物カゴへの追加はページ遷移していないので、onClickイベントでJSでやっているっぽい。

### 買い物カゴのページ

数量変更

				<select id="units_hogehoge" class="change-units" name="units&#91;0&#93;" autocomplete="off">

 
					<option value="1"  selected>1</option>
	<option value="2" >2</option>
	<option value="3" >3</option>
	<option value="4" >4</option>
	<option value="5" >5</option>

削除

<span class="remove-button">
				<a href="#" id="cartdelete_331955_hogehoge" class="cart-delete ratCustomEvent" data-rat-key="ratcart" data-rat-val="delete_pc">削除</a>
			</span>

js

	grp15_ias_prm = {
		rakuten_pid: 2,
		service: 'ICHIBA',
		page: 'cart',
		d: 'pc',
		shopid: ['331955'],
		itemid: ['nespresso:10000201'],
		genreid: ['565115'],
		itemname: 
                 // 省略

ratTag
-> shopIDとitemIDで管理している。
-> ItemGenreのIDもあり。

<form class="ratForm" name="ratForm" id="ratForm" style="display:none;">
		<input type="hidden" name="rat" id="ratAccountId" value="1">
		<input type="hidden" name="rat" id="ratServiceId" value="3">
		<input type="hidden" name="rat" id="ratPageLayout" value="pc">
		<input type="hidden" name="rat" id="ratSiteSection" value="checkout">
		<input type="hidden" name="rat" id="ratAdobeSiteSection" value="cart">
		<input type="hidden" name="rat" id="ratPageType" value="cart_modify">
		<input type="hidden" name="rat" id="ratPageName" value="step0_shopping_basket">
		<input type="hidden" name="rat" id="ratCheckout" value="">
		<input type="hidden" name="rat" id="ratItemId" value="331955/10000201">
		<input type="hidden" name="rat" id="ratPrice" value="25300">
		<input type="hidden" name="rat" id="ratItemCount" value="1">
		<input type="hidden" name="rat" id="ratItemGenre" value="565115">
		<input type="hidden" name="rat" id="ratItemTag" value="">
		<input type="hidden" name="rat" id="ratItemVariation" value="&#91;{}&#93;">
		<input type="hidden" name="rat" id="ratOrderId" value="">
		<input type="hidden" name="rat" id="ratCouponId" value="">
		<input type="hidden" name="rat" id="ratCouponPrice" value="">
		<input type="hidden" name="rat" id="ratPointPrice" value="">
		<input type="hidden" name="rat" id="ratShippingFee" value="">
		<input type="hidden" name="rat" id="ratOrderList" value="">
		<input type="hidden" name="rat" id="ratTotalPrice" value="">
		<input type="hidden" name="rat" id="ratItemCountOrder" value="">
		<input type="hidden" name="rat" id="ratCvEvent" value="{'cart_go_checkout':1, 'cart_add':0}">
		<input type="hidden" name="rat" id="ratShopUrlList" value="nespresso">
		<input type="hidden" name="rat" id="ratCustomParameters" value="{'cart_type':'cart_view', 'display_of_card_packaged_registration':'0', 'asuraku_item_flg':'0', 'deal_item_flg':'1', 'rba_item_flg':'0', 'rba_order_flg':'', 'set_deliverydate':''}">

いやーこれ結構大変だなー

amazonの買い物カゴの挙動を見よう

amazonの買い物カゴで、IDをどう使っているのか調査する

### amazon

カートに入れるbuttonがinput type=”submit”としています。

<span class="a-declarative" data-action="dp-pre-atc-declarative" data-dp-pre-atc-declarative="{}" id="atc-declarative">
<span id="submit.add-to-cart" class="a-button a-spacing-small a-button-primary a-button-icon"><span class="a-button-inner"><i class="a-icon a-icon-cart"></i><input id="add-to-cart-button" name="submit.add-to-cart" title="カートに入れる" data-hover="左から&lt;b&gt;__dims__&lt;/b&gt;を選択して&lt;br&gt;ショッピングカートに追加" class="a-button-input" type="submit" value="カートに入れる" aria-labelledby="submit.add-to-cart-announce"><span id="submit.add-to-cart-announce" class="a-button-text" aria-hidden="true">カートに入れる</span></span></span>
</span>

“a”:”B08C9R7MVT”,”quantity”:”1″と書いてあるので、恐らくB08C9R7MVTが商品IDではないかと思う。

<script type="a-state" data-a-state="{&quot;key&quot;:&quot;turbo-checkout-page-state&quot;}">{"turboWeblab":"RCX_CHECKOUT_TURBO_DESKTOP_NONPRIME_87784","strings":{"TURBO_CHECKOUT_HEADER":"今すぐ購入:ナパバレーの日本人醸造家 ハヤシワインズ 2015 パウロニア・カベルネソーヴィニヨン [カリフォルニア/赤ワイン/750ml]","TURBO_LOADING_TEXT":"注文内容を読み込み中"},"inputs":{"a":"B08C9R7MVT","quantity":"1","oid":"","addressId":""},"configurations":{"isSignInEnabled":true,"initiateSelector":"#buy-now-button","prefetchEnabled":true},"buttonID":"buy-now","eligibility":{"isEligible":false},"turboWeblabTreatment":"T2","timeout":"5000"}</script>
</div>

商品ページのcookie

商品追加

やはり、”B08C9R7MVT”を渡しています。

<div id="huc-v2-order-row-item-B08C9R7MVT" data-asin="B08C9R7MVT" data-itemid="Ca5ba925d-a3ea-4f29-b288-38f3bfe04fe2" class="a-box a-box-thumbnail huc-middle-vertical huc-no-radius huc-v2-order-row-image-box huc-green-border huc-v2-order-row-item"><div class="a-box-inner">
    <img alt="" src="https://m.media-amazon.com/images/I/31j5L8Leq4L.jpg" class="huc-no-radius huc-v2-order-row-image huc-v2-table-col">
  </div></div>

ここで、Cookieを見ても、どの値が商品のCookieかは不明

カートの編集ページ

数量変更
-> name=”quantity”としているので、quantityで管理している事がわかる。

<span class="a-dropdown-container"><label class="a-native-dropdown">数量:<span class='sc-offscreen-label' aria-label='数量'></span></label><select name="quantity" autocomplete="off" data-a-touch-header="数量" tabindex="0" data-action="a-dropdown-select" class="a-native-dropdown a-declarative">
            
            
                <option value="0" data-a-css-class="quantity-option">
                    0 (削除)
                </option>
// quantity
<input name="submit.update-quantity.hogehoge38f3bfe04fe2"
       value="更新"
       data-action=""
       aria-label="更新"
       type="submit"
       class="a-color-link"/>

                    </span>

削除

<input name="submit.delete.hohoge"
       value="削除"
       data-action="delete"
       aria-label="削除 ナパバレーの日本人醸造家 ハヤシワインズ 2015 パウロニア・カベルネソーヴィニヨン &#91;カリフォルニア/赤ワイン/750ml]"
       type="submit"
       class="a-color-link"/>
            </span>

なるほど、商品カートは基本、商品IDとquantityで管理し、カートではquantity(数量)とdelete(削除)の機能があるって事がわかった。

景気動向指数(CI)のAPI取得 その2

総務省統計局の景気動向指数統計データをJSON形式で取得をしたい。

※民間企業の勤務条件制度等調査を表示した例

– 統計表情報取得仕様
https://api.e-stat.go.jp/rest/3.0/app/json/getStatsList?<パラメータ群>

API仕様
appId, lang,surveyYears, openYears, statsField …

1. アプリケーションIDの発行
e-statマイページのAPI機能(アプリケーションID発行)から、appIdを発行する
*************

2. 景気動向指数のデータセット
景気動向指数
統計ID:00100406

-> Excelのみ、DB/APIは提供されていない
-> ExcelのファイルID(statInfId)の命名規則が分かればDL出来そうではある
-> 速報値は月次で5営業日に出している


-> RSSも見つけられない

### 日銀の機械学習による景気分析
「景気ウォッチャー調査」のテキストマイニング―
-> 少しだけ読んだが、テキストマイニングも先行指標の一部なので、テキストマイニングだけで景気動向指数として公表するのは抵抗がある。

別の方法を模索するか。

景気動向指数(CI)のAPI取得 その1

景気動向指数(composite indexes)をAPIで取得/自動更新したい

景気動向指数とは?
内閣府:景気統計
> 景気動向指数は、生産、雇用など様々な経済活動での重要かつ景気に敏感に反応する指標の動きを統合することによって、 景気の現状把握及び将来予測に資するために作成された指標

1.採用系列
(1)生産 (2)在庫 (3)投資 (4)雇用 (5)消費 (6)企業経営 (7)金融 (8)物価 (9)サービス

2.選定基準
(1)経済的重要性
(2)統計の継続性・信頼性
(3)景気循環の回数との対応度
(4)景気の山谷との時差の安定性
(5)データの平滑度
(6)統計の速報性

3.景気循環の考え方
先行(主に需給の変動)、一致(主に生産の調整)、遅行(主に生産能力の調整)

4.変動算出
対象変化率 = { (当月値 – 前月値) / ((当月値 – 前月値)/2) } x 100

5.採用系列
– 先行系列
最終需要財在庫率指数、鉱工業用生産財在庫率指数、新規求人数、実質機械受注、新設住宅着工床面積、消費者態度指数、日経商品指数、マネーストック(M2)(前年同月比)、東証株価指数、投資環境指数、中小企業売上げ見通しDI

– 一致系列
生産指数、鉱工業用生産財出荷指数、耐久消費財出荷指数、所定外労働時間指数、投資財出荷指数、商業販売額、商業販売額、営業利益

– 遅行系列
第3次産業活動指数、常用雇用指数、実質法人企業設備投資、家計消費支出、法人税収入、完全失業率、きまって支給する給与(製造業、名目)、消費者物価指数、最終需要財在庫指数

経済社会総合研究所の実績値数値はPDFで公開されているが、APIはないのかな。

色々見ていたところ、e-Stat開発者向けページがあるようです。
e-Stat API機能
なんか出来そうです。取り敢えず登録しました。

SAPのようなERPをDjangoで作りたい

ERPとは? : Enterprise Resource Planning(統合パッケージ)
-> 調達システム、経理システム、在庫システムなどヒトモノカネ情報の管理を一緒にした

### SAPの主なモジュール
– Financial Accounting(FI): 財務会計、業務データが流れてくる
– Controling(CO): 管理会計、業績管理や間接費の管理
– Sales and Distribution(SD): 販売管理、注文を受けてから商品を出荷、請求書
– Material Management(MM): 在庫購買管理、どこに何を発注したか、値段、在庫

### モジュール一覧
Sales and Distribution(販売管理), Material Management(在庫購買管理), Production Planning and Control(生産計画/管理), Plant Maintenance(プラント保全), Warehouse Management(倉庫管理), Financial Accounting(財務会計), Controlling(管理会計), Human Resources(人事管理), Project System(プロジェクト管理), Quality Management(品質管理), Investment Management(設備投資管理), Real Estate(不動産管理), Document Management System(文書管理), Classification(分類), クロスアプリケーション(Cross Application)

SAP Tutorial

– 各システムのログイン画面
– メニュー:各システム一覧(office, logistics, accounting, human resources….)
 L 各システムの帳票ページに遷移できる
– 各入力メニュー
 L ユーザが入力データのパラメータを編集できる
– IDEがトップにあり、その下に、地域、国、システム、従業員、ポジション、機能などでカテゴライズできる
– Masterデータ(client, company, sales area, personal record)と入力データを切り分ける
– メニューはツリー構造で表示する

SAP Engineer

ざっくりとは、各モジュールごとにアプリケーションを作っていき、データ連携させるってことだな。
ゼロから作るなら、(1)販売管理、(2)在庫購買管理、(3)財務会計 ぐらいから始めたいところか。
問題はどこまでやり込むかだな。

プログラミング言語 人気ランキングの比較

### TIOBE
ロジック : Index Definition
-> 検索エンジンに対して、クエリを発行した結果を元にランキングを付けている。

+"<language> programming"

1位 Java, 2位 C, 3位 Python, 4位 C++, 5位 C#, 6位 Visual Basic.NET, 7位 JavaScript, 8位 PHP, 9位 SQL, 10位 Go

### PYPL
1位 Python, 2位 Java, 3位 Javascript, 4位 C#, 5位 PHP, 6位 C/C++, 7位 R, 8位 Objective-C, 9位 Swift, 10位 Matlab
ロジック: The Index is created by analyzing how often language tutorials are searched on Google

### RedMonk: Programming Language Ranking
ロジック: GitHubのアクティブリポジトリ、StackOverflowでの質問、Redditでの投稿数、求人サイトでの募集の数
1位 JavaScript, 2位 Python, 3位 Java, 4位 PHP, 5位 C#, 6位 C++, 7位 Ruby, 8位 CSS, 9位 TypeScript, 9位 C

### GitHub Octoverse
Top OSS
1位 microsoft/vscode, 2位 MicrosoftDocs/azure-docs, 3位 flutter/flutter, 4位 firstcontributions/first-contributions, 5位 tensoflow/tensorflow, 6位 facebook/react-native, 7位 kubernetes/kubernetes, 8位 DefinitelyTyped/DefinitelyTyped, 9位 ansible/ansible, 10位 home-assistant/home-assistant

Top Language
1位 JavaScript, 2位 Python, 3位 Java, 4位 PHP, 5位 C#, 6位 C++, 7位 TypeScript, 8位 Shell, 9位 C, 9位 Ruby

Google indexとGitHubだとランキングに差があるが、概ねJava, Python, JavaScriptが上位はほぼ変わらずか。

Log collection

First of all, middleware for log collection can be divided into Push type and Pull type according to the data acquisition method.

Systems that transfer logs to a destination for which middleware is configured are classified as Push. Famously speaking, Apache Flume, Fluent, Scribe, Logstash etc are classified as Push type.

On the other hand, it is Pull type that the client side explicitly specifies and acquires necessary data for middleware that centrally manages logs. Apache Kafka and so-called PubSub models such as Google Cloud Pub/Sub and Kinesis Stream, which are not middleware, are classified as Pull types.


Source => Push type middleware that receives records. Corresponds to input in Fluentd.
Channel => An area to save until transmission of a record is completed in Push type middleware. Equivalent to buffer in Fluentd.
Sink => Push destination of record in Push type middleware. Equivalent to output in Fluentd.
Upstream => The side that sends the record.
Downstream => The side that receives the record.

UBER eatsのビジネスフロー

「いらすとや」を使って書いていきます。

なにこれ、めっちゃ面白いやんけ。。
作らなければいけないのは、
1. Userが注文する画面(レスポンシブル)
2. 注文が入ってから、レストラン側に通知するレストラン側の管理画面(PC)
3. 配達を依頼する配達員用の管理画面(アプリメイン)
4. 全体を管理するUberEats側の管理画面(PC)

全体の管理画面は最後に作るとしても、最低3つの仕組みが必要ってわけだな。
でもユーザーの注文画面はECサイトみたいなもんだから、2と3をどう作るかが肝かな。。

最初に全体図を整理すると、わかりやすいな。
これで、エンジニアマッチングのフロー図も作ろう^^

5chまとめサイト

5chまとめサイトを分析していきます。

アルファモザイク
http://alfalfalfa.com/
– レフトメニューに人気の記事、コメントの多い記事、最近コメントされた記事など

痛いニュース
http://blog.livedoor.jp/dqnplus/
– 最新記事が写真とタイトルで一覧表示
– サイドメニューは広告

ニュー速クオリティ
http://news4vip.livedoor.biz/

ついんてーる速報
http://twintailsokuhou.blog.jp/
– トップがWPのブログっぽい

VIPPERな俺
http://blog.livedoor.jp/news23vip/
– アニメが多いな

キニ速
http://blog.livedoor.jp/kinisoku/
– ファーストビューにテキスト表示されるのはいいですね。

おる速
http://orusoku.com/
– テキストが青で見にくい

ゴールデンタイムズ
http://blog.livedoor.jp/goldennews/
– RSS表示
– やっぱり画像は必須か。

というか、まとめサイト多すぎるな。。