2020年12月31日木曜日

楽天ラッキーくじの当選を整理する。【2021年1月】

前月の結果 → 楽天ラッキーくじの当選を整理する。【2020年12月】
日付くじ数当選数当選サービス
1/12楽天トラベル ラッキーくじ、【楽天ブックス】facebookラッキーくじ
1/23マネ活ラッキーくじ、【楽天×宝くじ】毎日最大1000ポイントが当たる!楽天×宝くじラッキーくじ、楽天デリバリー ラッキーくじ
1/31【楽天toto】毎日最大1000ポイントが当たる!楽天totoラッキーくじ
1/43【楽天くじ広場】ラッキーくじ、楽天トラベル ラッキーくじ、【楽天くじ広場】ラッキーくじ
1/51【楽天ブックス】facebookラッキーくじ
1/62楽天トラベル ラッキーくじ、楽天不動産ラッキーくじ
1/71楽天トラベル ラッキーくじ
1/81楽天カードラッキーくじ
1/91楽天PointClubアプリ ラッキーくじ
1/101【楽天ブックス】facebookラッキーくじ
1/112楽天ブログ ラッキーくじ、マネ活ラッキーくじ
1/120
1/1313リワード特集ページ ラッキーくじ、【楽天レシピ】ラッキーくじ、マネ活ラッキーくじ、LINE限定 毎日引けるくじ
1/142楽天ブログ ラッキーくじ、【楽天くじ広場】ラッキーくじ
1/1511リワード特集ページ ラッキーくじ、LINE限定 毎日引けるくじ
1/164リワード特集ページ ラッキーくじ、InfoseekNewsラッキーくじ、【楽天レシピ】ラッキーくじ、マネ活ラッキーくじ
1/172リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ
1/181楽天デリバリー ラッキーくじ
1/193リワード特集ページ ラッキーくじ、楽天PointClubアプリ ラッキーくじ、【楽天ブックス】facebookラッキーくじ
1/203リワード特集ページ ラッキーくじ、マネ活ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年1月通常版)
1/211リワード特集ページ ラッキーくじ
1/220
1/232リワード特集ページ ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2021年1月通常版)
1/240
1/2514リワード特集ページ ラッキーくじ、LINE限定 毎日引けるくじ、【楽天くじ広場】ラッキーくじ、楽天PointClubアプリ ラッキーくじ、【楽天×宝くじ】毎日最大1000ポイントが当たる!楽天×宝くじラッキーくじ
1/261リワード特集ページ ラッキーくじ
1/271リワード特集ページ ラッキーくじ
1/283楽天PointClubアプリ ラッキーくじ、マネ活ラッキーくじ!楽天ポイントが当たる、リワード特集ページ ラッキーくじ
1/293【楽天くじ広場】ラッキーくじ、楽天トラベル ラッキーくじ、リワード特集ページ ラッキーくじ
1/302楽天ブログ ラッキーくじ 、リワード特集ページ ラッキーくじ
1/312リワード特集ページ ラッキーくじ、InfoseekNewsラッキーくじ、楽天PointClubアプリ ラッキーくじ、【楽天カード】じゃんけん勝者限定くじ、【楽天カード】じゃんけん勝者限定くじ
合計:86、平均=2.8

2020年12月1日火曜日

楽天ラッキーくじの当選を整理する。【2020年12月】

前月の結果 → 楽天ラッキーくじの当選を整理する。【2020年11月】
日付くじ数当選数当選サービス
12/1483リワード特集ページ ラッキーくじ、【楽天カード】じゃんけん勝者限定くじ、楽天トラベル ラッキーくじ
12/24813LINE限定 毎日引けるくじ、楽天PointClubアプリ ラッキーくじ、【楽天×宝くじ】毎日最大1000ポイントが当たる!楽天×宝くじラッキーくじ、【楽天くじ広場】ラッキーくじ
12/3503楽天ビューティラッキーくじスマホ版(20200629)、リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ
12/4503リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ、楽天デリバリー ラッキーくじ
12/55012LINE限定 毎日引けるくじ、リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ
12/6503マネ活ラッキーくじ、楽天カードスマホじゃんけん勝者限定くじ、楽天トラベル ラッキーくじ
12/75012LINE限定 毎日引けるくじ、楽天ブログ ラッキーくじ、【楽天ブックス】facebookラッキーくじ
12/8503【楽天ポイント活動部】ラッキーくじ(2020年12月通常版)、リワード特集ページ ラッキーくじ、【楽天×宝くじ】毎日最大1000ポイントが当たる!楽天×宝くじラッキーくじ
12/9492リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ
12/10494リワード特集ページ ラッキーくじ、楽天カードラッキーくじ、楽天トラベル ラッキーくじ、【楽天ブックス】facebookラッキーくじ
12/11493【楽天ポイント活動部】ラッキーくじ(2020年12月通常版)、リワード特集ページ ラッキーくじ、【楽天ブックス】facebookラッキーくじ
12/12492楽天リワード ラッキーくじ、リワード特集ページ ラッキーくじ
12/13491リワード特集ページ ラッキーくじ
12/14492楽天PointClubアプリ ラッキーくじ、楽天カードラッキーくじ
12/15493スマートフォン限定 楽天ラッキーくじ、リワード特集ページ ラッキーくじ、【楽天×宝くじ】毎日最大1000ポイントが当たる!楽天×宝くじラッキーくじ
12/16491マネ活ラッキーくじ
12/17492【楽天ポイント活動部】ラッキーくじ(2020年12月通常版)、【楽天×宝くじ】毎日最大1000ポイントが当たる!楽天×宝くじラッキーくじ
12/18503【楽天ポイント活動部】ラッキーくじ(2020年12月通常版)、【楽天カード】魚の読み方クイズ正解者限定くじ、【楽天レシピ】スマートフォンラッキーくじ
12/19503マネ活ラッキーくじ、楽天リワード ラッキーくじ、【楽天くじ広場】ラッキーくじ
12/20500
12/215011LINE限定 毎日引けるくじ、Rakuten TV ラッキーくじ
12/22504リワード特集ページ ラッキーくじ、【楽天カード】じゃんけん勝者限定くじ、【楽天toto】毎日最大1000ポイントが当たる!楽天totoラッキーくじ、楽天ブログ ラッキーくじ
12/23501マネ活ラッキーくじ
12/24503マネ活ラッキーくじ、楽天PointClubアプリ ラッキーくじ、【楽天×宝くじ】毎日最大1000ポイントが当たる!楽天×宝くじラッキーくじ
12/25483スマートフォン限定 楽天ラッキーくじ、リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ
12/26482リワード特集ページ ラッキーくじ、【楽天カード】じゃんけん勝者限定くじ
12/27481楽天トラベル ラッキーくじ
12/28483マネ活ラッキーくじ、楽天カードスマホじゃんけん勝者限定くじ、InfoseekNewsラッキーくじ(SP)
12/29483マネ活ラッキーくじ、楽天リワード ラッキーくじ、リワード特集ページ ラッキーくじ
12/30485楽天カレンダーラッキーくじ、楽天リワード ラッキーくじ、楽天PointClubアプリ ラッキーくじ、リワード特集ページ ラッキーくじ、楽天ブックス・ラッキーくじ
12/31482マネ活ラッキーくじ、楽天トラベル ラッキーくじ
合計:116、平均=3.7

2020年10月31日土曜日

楽天ラッキーくじの当選を整理する。【2020年11月】

前月の結果 → 楽天ラッキーくじの当選を整理する。【2020年10月】
日付くじ数当選数当選サービス
11/1484【楽天くじ広場】ラッキーくじ、【楽天カード】じゃんけん勝者限定くじ、【楽天ブックス】facebookラッキーくじ、Rakuten TV ラッキーくじ
11/2481楽天PointClubアプリ ラッキーくじ
11/3462楽天カードスマホじゃんけん勝者限定くじ、【楽天カード】じゃんけん勝者限定くじ
11/4462≪楽天ブックス≫ラッキーくじ、楽天トラベル ラッキーくじ
11/5462楽天PointClubアプリ ラッキーくじ、リワード特集ページ ラッキーくじ
11/6460
11/7463楽天PointClubアプリ ラッキーくじ、リワード特集ページ ラッキーくじ、【楽天カード】じゃんけん勝者限定くじ
11/8461楽天カードスマホじゃんけん勝者限定くじ
11/9462リワード特集ページ ラッキーくじ、【楽天くじ広場】ラッキーくじ
11/10463リワード特集ページ ラッキーくじ、楽天カードラッキーくじ、楽天トラベル ラッキーくじ
11/11462楽天PointClubアプリ ラッキーくじ、楽天PointClubアプリ ラッキーくじ
11/12463リワード特集ページ ラッキーくじ、【楽天×宝くじ】毎日最大1000ポイントが当たる!楽天×宝くじラッキーくじ、楽天デリバリー ラッキーくじ
11/13465楽天カレンダーラッキーくじ、【楽天くじ広場】ラッキーくじ、楽天リワード ラッキーくじ、リワード特集ページ ラッキーくじ、【楽天toto】毎日最大1000ポイントが当たる!楽天totoラッキーくじ
11/14462リワード特集ページ ラッキーくじ、≪楽天ブックス≫ラッキーくじ
11/15462【楽天ポイント活動部】ラッキーくじ(2020年11月通常版)、【楽天ポイント活動部】ラッキーくじ(2020年11月通常版)
11/16461【楽天×宝くじ】毎日最大1000ポイントが当たる!楽天×宝くじラッキーくじ
11/17462【楽天ポイント活動部】ラッキーくじ(2020年11月通常版)、リワード特集ページ ラッキーくじ
11/18463楽天PointClubアプリ ラッキーくじ、リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ
11/19463リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ、楽天ブログ ラッキーくじ
11/20463≪楽天ブックス≫ラッキーくじ、楽天トラベル ラッキーくじ、Infoseek ポイナビラッキーくじ
11/21464【楽天ポイント活動部】ラッキーくじ(2020年11月通常版)、リワード特集ページ ラッキーくじ、楽天PointClubアプリ ラッキーくじ、楽天PointClubアプリ ラッキーくじ
11/22461リワード特集ページ ラッキーくじ
11/23460
11/24462リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ
11/25461リワード特集ページ ラッキーくじ
11/26462楽天ブックス・ラッキーくじ、楽天PointClubアプリ ラッキーくじ
11/27462 ≪楽天ブックス≫ラッキーくじ、リワード特集ページ ラッキーくじ
11/28483リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ、マネ活ラッキーくじ
11/29483楽天PointClubアプリ ラッキーくじ
11/30485【楽天くじ広場】ラッキーくじ、≪楽天ブックス≫ラッキーくじ、【楽天カード】じゃんけん勝者限定くじ、【楽天カード】じゃんけん勝者限定くじ、楽天Car車検 ラッキーくじ
合計:69、平均=2.3

2020年10月6日火曜日

楽天ラッキーくじ一覧

(2022/9/2)
近日リリース予定のプログラム変更により、[KUJI]が不要となります。
そのため、[KUJI]を削除しました。

[KUJI_SP]
楽天Edyスマホラッキーくじ = https://r10.to/hf7Y7J

[KUJI_SP2]
楽天PointClubアプリラッキーくじ = https://point.rakuten.co.jp/doc/lottery/lucky/

2020年9月30日水曜日

楽天ラッキーくじの当選を整理する。【2020年10月】

前月の結果 → 楽天ラッキーくじの当選を整理する。【2020年9月】
日付くじ数当選数当選サービス
10/1483楽天カレンダーラッキーくじ、リワード特集ページ ラッキーくじ、リワード特集ページ ラッキーくじ
10/2503楽天PointClubアプリ ラッキーくじ、リワード特集ページ ラッキーくじ、【楽天くじ広場】ラッキーくじ
10/3503【楽天ポイント活動部】ラッキーくじ(2020年10月通常版)、リワード特集ページ ラッキーくじ、楽天デリバリー ラッキーくじ
10/4504 楽天Edy スマホ ラッキーくじ、【楽天くじ広場】ラッキーくじ、リワード特集ページ ラッキーくじ、楽天PointClubアプリ ラッキーくじ
10/5503≪楽天ブックス≫ラッキーくじ、リワード特集ページ ラッキーくじ、楽天×ぐるなび ラッキーくじ
10/6491【楽天くじ広場】ラッキーくじ
10/74724マラソンスロット PC&SP版、楽天エナジー スマートフォン用 ラッキーくじ、リワード特集ページ ラッキーくじ、楽天ブックス・ラッキーくじ、楽天トラベル ラッキーくじ
10/8471リワード特集ページ ラッキーくじ
10/9471【楽天カード】じゃんけん勝者限定くじ
10/10470
10/11470
10/12470
10/13470
10/14472リワード特集ページ ラッキーくじ、楽天PointClubアプリ ラッキーくじ
10/15472リワード特集ページ ラッキーくじ、【楽天ブックス】facebookラッキーくじ
10/16475【楽天ポイント活動部】ラッキーくじ(2020年10月通常版)、楽天PointClubアプリ ラッキーくじ、楽天トラベル ラッキーくじ、楽天ブログ ラッキーくじ、【楽天レシピ】スマートフォンラッキーくじ
10/17471楽天トラベル ラッキーくじ
10/18471リワード特集ページ ラッキーくじ
10/19472楽天トラベル ラッキーくじ、【楽天くじ広場】ラッキーくじ
10/20471楽天カードスマホじゃんけん勝者限定くじ
10/21472【楽天レシピ】ラッキーくじ、【楽天カード】じゃんけん勝者限定くじ
10/22474【楽天ポイント活動部】ラッキーくじ(2020年10月通常版)、リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ、【楽天レシピ】スマートフォンラッキーくじ
10/23471リワード特集ページ ラッキーくじ
10/24471リワード特集ページ ラッキーくじ
10/25476楽天デリバリー ラッキーくじ、楽天トラベル ラッキーくじ、楽天PointClubアプリ ラッキーくじ、リワード特集ページ ラッキーくじ
10/26474≪楽天ブックス≫ラッキーくじ、リワード特集ページ ラッキーくじ、楽天トラベル ラッキーくじ、Rakuten TV ラッキーくじ
10/27472楽天PointClubアプリ ラッキーくじ、楽天×ぐるなび ラッキーくじ
10/28471リワード特集ページ ラッキーくじ
10/29482楽天カードスマホじゃんけん勝者限定くじ、【楽天toto】毎日最大1000ポイントが当たる!楽天totoラッキーくじ
10/30481リワード特集ページ ラッキーくじ
10/31482リワード特集ページ ラッキーくじ、【楽天×宝くじ】毎日最大1000ポイントが当たる!楽天×宝くじラッキーくじ
合計:83、平均=2.7

2020年9月1日火曜日

Chrome拡張機能を自動でインストールする【Python】【Selenium】【win32com】

 調べても調べても検索に引っ掛からなかった、Chrome拡張機能を自動でインストールする方法がわかったので、ここに記載する。Teratailありがとう。

必要なもの

  • Python
  • Selenium
  • chromedriver_binary
  • win32com

ソース

 「楽天検索」の拡張機能をChromeにインストールするコードを示す。ソースがはみ出してしまっているのはすみません。

import time
from time import sleep

# selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
# ないと起動しない
import chromedriver_binary
import selenium.webdriver.support.expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
import ctypes
import win32com.client

def getOptions():
    options = webdriver.ChromeOptions()
    options.add_argument( '--user-data-dir=' + 'UserData' )
    options.add_argument( '--profile-directory='+ 'Default' )
    return options

def installRakutenSearch():
    # 初回起動、楽天検索拡張機能をインストール
    driver = webdriver.Chrome( options=getOptions() )
    driver.get(r'https://chrome.google.com/webstore/detail/%E6%A5%BD%E5%A4%A9%E3%82%A6%E3%82%A7%E3%83%96%E6%A4%9C%E7%B4%A2/iihkglbebihpaflfihhkfmpabjgdpnol?hl=ja')

    WebDriverWait(driver, 15).until( EC.element_to_be_clickable( (By.XPATH, '//div[@class="g-c-Hf"]') ) )
    driver.find_element_by_xpath( '//div[@class="g-c-Hf"]' ).click() # Chromeに追加 ボタンクリック

    html = driver.page_source

    handle = ctypes.windll.user32.FindWindowW( "Chrome_WidgetWin_1",0)
    ctypes.windll.user32.SetForegroundWindow(handle)

    Shell = win32com.client.Dispatch("WScript.Shell")
    # うまくいかないときは、range(2)からrange(3)へ変更。調整してください。
    for i in range(2):
        Shell.SendKeys("{TAB}") 
        sleep (1)
    Shell.SendKeys("~") 
    time.sleep(5)
    driver.close()
    driver.quit()

if __name__ == '__main__':
    installRakutenSearch()

楽天ラッキーくじの当選を整理する。【2020年9月】

前月の結果 → 楽天ラッキーくじの当選を整理する。【2020年8月】
日付くじ数当選数当選サービス
9/14912LINE限定 毎日引けるくじ、【楽天ポイント活動部】ラッキーくじ、楽天ビューティラッキーくじ
9/2491楽天Edyラッキーくじ
9/3492 ≪楽天ブックス≫ラッキーくじ、Rakuten TV ラッキーくじ
9/4491楽天Edyラッキーくじ
9/5493【楽天くじ広場】ラッキーくじ、楽天PointClubアプリ ラッキーくじ、【楽天レシピ】スマートフォンラッキーくじ
9/65023楽天スーパーSALE スロット<第2弾>PC&SP版、リワード特集ページ ラッキーくじ、楽天PointClubアプリ ラッキーくじ、楽天デリバリー ラッキーくじ
9/7503楽天PointClubアプリ ラッキーくじ、リワード特集ページ ラッキーくじ、楽天PointClubアプリ ラッキーくじ
9/8501【楽天くじ広場】ラッキーくじ
9/9502【楽天くじ広場】ラッキーくじ、楽天トラベル ラッキーくじ
9/10483リワード特集ページ ラッキーくじ、楽天カレンダーラッキーくじ、【楽天ブックス】facebookラッキーくじ
9/11482リワード特集ページ ラッキーくじ、【楽天レシピ】スマートフォンラッキーくじ
9/12485楽天リワード ラッキーくじ、【楽天ポイント活動部】ラッキーくじ(2020年9月通常版)、≪楽天ブックス≫ラッキーくじ、【楽天toto】毎日最大1000ポイントが当たる!楽天totoラッキーくじ、【楽天ブックス】facebookラッキーくじ
9/13483【楽天ポイント活動部】ラッキーくじ(2020年9月通常版)、【楽天カード】じゃんけん勝者限定くじ、楽天PointClubアプリ ラッキーくじ
9/14484楽天リワード ラッキーくじ、楽天PointClubアプリ ラッキーくじ、楽天トラベル ラッキーくじ、【楽天くじ広場】ラッキーくじ
9/15482楽天トラベル ラッキーくじ、【楽天レシピ】ラッキーくじ
9/16482楽天PointClubアプリ ラッキーくじ、リワード特集ページ ラッキーくじ
9/17480
9/18482楽天トラベル ラッキーくじ、【楽天ブックス】facebookラッキーくじ
9/19484【楽天くじ広場】ラッキーくじ、リワード特集ページ ラッキーくじ、楽天カードラッキーくじ 、楽天Edyラッキーくじ
9/20483リワード特集ページ ラッキーくじ、楽天ブックス・ラッキーくじ、楽天デリバリー ラッキーくじ
9/21482【楽天カード】じゃんけん勝者限定くじ、楽天Edyラッキーくじ
9/22481楽天Edyラッキーくじ
9/23484楽天PointClubアプリ ラッキーくじ、リワード特集ページ ラッキーくじ、【楽天toto】毎日最大1000ポイントが当たる!楽天totoラッキーくじ、楽天トラベル ラッキーくじ
9/24483Rakuten TV ラッキーくじ、楽天トラベル ラッキーくじ、楽天PointClubアプリ ラッキーくじ
9/25485楽天カードスマホじゃんけん勝者限定くじ、楽天リワード ラッキーくじ 、≪楽天ブックス≫ラッキーくじ、リワード特集ページ ラッキーくじ、楽天カードラッキーくじ
9/26482リワード特集ページ ラッキーくじ 、楽天トラベル ラッキーくじ
9/27481楽天トラベル ラッキーくじ
9/28484【楽天ポイント活動部】ラッキーくじ(2020年9月通常版)、リワード特集ページ ラッキーくじ 、【楽天×宝くじ】毎日最大1000ポイントが当たる!楽天×宝くじラッキーくじ、楽天トラベル ラッキーくじ
9/29483【楽天ポイント活動部】ラッキーくじ(2020年9月通常版)、楽天PointClubアプリ ラッキーくじ、楽天トラベル ラッキーくじ
9/30485楽天カレンダーラッキーくじ、【楽天くじ広場】ラッキーくじ、リワード特集ページ ラッキーくじ、楽天デリバリー ラッキーくじ、【楽天くじ広場】ラッキーくじ
合計:108、平均=3.6

2020年8月25日火曜日

楽天ラッキーくじの当選を整理する。【2020年8月】

日付くじ数当選数当選サービス
8/1250
8/2251楽天車検
8/3250
8/4252楽天くじ広場、楽天×宝くじ
8/5251楽天トラベル
8/6252楽天デリバリー、楽天カード
8/7252楽天デリバリー、楽天トラベル
8/8250
8/9251楽天トラベル
8/10250
8/11253楽天ブログ、楽天トラベル、楽天×宝くじ
8/12262楽天トラベル、楽天くじ広場
8/13264Infoseek ポイナビ、楽天デリバリーPC、楽天デリバリーSP、楽天PointClub
8/14262Infoseek ポイナビ、楽天トラベル
8/15263楽天Edy、楽天デリバリー、楽天トラベル
8/16260
8/17261楽天くじ広場
8/18302
8/19300
8/20301Infoseek ポイナビ
8/21301楽天×宝くじ
8/22483楽天トラベル、楽天×宝くじ、リワード特集ページ
8/23486楽天×宝くじ、楽天PointClubアプリ、【楽天カード】じゃんけん勝者限定くじ、リワード特集ページ、楽天PointClubアプリ、【楽天ブックス】facebook
8/24483楽天トラベル、リワード特集ページ、スマートフォン限定 楽天ラッキーくじ
8/25481リワード特集ページ
8/26482【楽天レシピ】スマートフォン、楽天ポイント活動部
8/27484楽天PointClubアプリ ラッキーくじ、楽天トラベル ラッキーくじ、【楽天くじ広場】ラッキーくじ、InfoseekNewsラッキーくじ(SP)
8/28481楽天トラベル ラッキーくじ
8/29493スマートフォン限定 楽天ラッキーくじ、楽天PointClubアプリ ラッキーくじ、楽天トラベル ラッキーくじ
8/30492楽天PointClubアプリ ラッキーくじ、リワード特集ページ ラッキーくじ
8/31496【楽天くじ広場】ラッキーくじ、リワード特集ページ ラッキーくじ、楽天カードラッキーくじ、楽天トラベル ラッキーくじ、 楽天デリバリー ラッキーくじ、InfoseekNewsラッキーくじ(SP)
合計:59、平均=1.9

2020年8月18日火曜日

【Python】一括で svg を png に変換する。

Azure のアイコンが svg で用意されており、パワポで読み込めなかった。

 仕事の資料を作成するにあたって、Azureのアイコンを使いたかった。しかし、公式には svg のアイコンしかない。そのため、プログラム作ってpng画像を作ることにした。

Azure icon png(200 x 200) ここにpng変換後のアイコンを共有しておく。

以下にpng変換時のソースを貼っておく。

svg → png 変換ソース

 本プログラムは一括でsvg -> png 変換を行う。公式のsvgのzipファイルを解凍し、「AI + Machine Learning」フォルダがあるところと同一フォルダで本プログラムを動作させる。

python 3.7.8で動作確認済み。事前準備として、ライブラリの cairosvg をインストールする必要がある。

pip install cairosvg

 本体プログラムは以下。

import os.path
import cairosvg
import os

def main():
    for folder in os.listdir('.'):
        if os.path.isdir( folder ):
            for file in os.listdir( folder ):
                name = file.split('.svg')[0]
                url = folder + r'\{0}.svg'.format(name)
                write_to = folder + r'\{0}.png'.format(name)
                cairosvg.svg2png( url=url
                                , write_to=write_to
                                , output_width=200
                                , output_height=200 )  # svg -> png 本体
                print(file)

if __name__ == "__main__":
    main()

 svg が不要なら、以下のプログラムを実行すると削除できる。

import os.path
import cairosvg
import os

def main():
    for folder in os.listdir('.'):
        if os.path.isdir( folder ):
            for file in os.listdir( folder ):
                if '.svg' in file:
                    rfile = folder + r'\{0}'.format( file )
                    os.remove( rfile )
                    print(file)

if __name__ == "__main__":
    main()

2020年7月13日月曜日

【IoT】IoTプラットフォームを分類する。【2020年度版】

本記事は主に分類が途中のものである。少しずつ更新していく。主にプラットフォームの分類が未完。

対象はどれにするのか。

下記サイトに最新のプラットフォームの動向を整理されている。ここで示されているプラットフォームを対象とする。

どう分類するのか。

矢野経済研究所がプレスリリースPDF内で分類している「産業用 IoT プラットフォームの種類」で分類する。(下図参照)

分類について、プレスリリースPDFからの引用で分類とその内容を解説する。

種類内容
水平・業種フルカバレッジ型 水平型のソリューションとしてどの業種もカバーしようとするもの。全業種に対して提供されるクラウド基盤であり、その基盤(プラットフォーム)上にユーザーや SIer などがIoT システムを開発することを主要コンセプトとする。
垂直・基本機能提供型 目的や機能を絞り提供される IoT プラットフォーム。遠隔監視・予防保全のみに絞った IoT プラットフォームなどが一部のベンダーから提供されている。
垂直・アプリ提供型 フルカバレッジ型から、開発・導入・運用支援を差し引いた領域を主に手掛けるのが垂直・アプリ提供型である。外資系の大手製造業が IoT プラットフォームの提供に乗り出しているが、概ねそうした企業の提供するものが該当する。サードパーティによるアプリケーション開発のプラットフォームにもなっているケースも多い。
垂直・機能フルカバレッジ型 開発・導入から応用アプリケーション、基礎アプリケーション、クラウド基盤、ネットワーク、センサー類まで、IoT ソリューション構築にかかわる全要素をフルカバレッジでソリューション提供しようとするもの。同領域は国内大手 SIer が主な提供者であり、ここでいうプラットフォームとは、“IoT ソリューションを開発・運用しビジネスとして動かすためのプラットフォーム”という意味合いが強い。

 垂直型は、IoTプラットフォーム(提供サービス)が業界に対して何を提供しているかという観点で3つに分類している。水平型は業種に限らないIoTプラットフォームを提供していることを示している。水平=業種フルカバレッジと考えられる。

 ただ今回、各IoTプラットフォームを調査していくと、水平・業種フルカバレッジに応用アプリ群を付け加えたようなプラットフォームが多く存在した。そのため、水平・業種フルカバレッジの分類では応用アプリ群が含まれていてもよいものとした。また、「業種フルカバレッジ」というより「汎用型」の方がしっくりきたので、分類上の言葉を変更した。

また、クラウドベースとしていないもの、IoTプラットフォームとして考えられないものも存在した。それらは「エッジコンピューティング」「IoTプラットフォームでないもの」として分類した。

分類基準
水平・汎用型IaaS、PaaS~基本アプリケーション群で、応用アプリ群を含んでもよい。
垂直・基本機能提供型遠隔監視・予防保全など機能を絞って提供。
垂直・アプリ提供型センサーやネットワーク~応用アプリ群までを提供。センサーを提供している場合、ネットワークも提供しているものとした。
垂直・機能フルカバレッジ型センサーやネットワーク~開発・導入・運用支援まで提供している。センサーを提供している場合、ネットワークも提供しているものとした。また開発・導入・運用支援はいずれかを提供していればよいものとした。
エッジコンピューティングクラウドにプラットフォームがない。
IoTプラットフォームでないものデータ収集対象が機械のセンサーなどの情報でない。

分類

それでは分類する。「不明」に分類されているものは日本語サイトがなかったり、どんなプラットフォームなのかわからないものが分類されている。また、「エッジコンピューティング」はクラウドに提供されるサービスではないものを分類している。

水平・汎用型
Azure IoTMicrosoft
AWS IoTAmazon
Oracle IoT Cloud ServiceOracle
Google Cloud IoT CoreGoogle
SensorCorpusインフォコーパス
intra-martNTTデータ
PELION IOTプラットフォームArm
Lumada Solution Hub日立
OPTiM Cloud IoT OSオプティム
Watson IoT PlatformIBM
Bellonicaクオリカ/Bellonica
MMCloud安川電機
IoT+mプラットフォーム東芝機械
ToamiNSW
µSocketsPanasonic
ThingWorxPTC
COLMINA プラットフォーム富士通
LANDLOGコマツ
V-factoryアマダ
Industrial IoT ソリューション横河電機
製造業向けIoTサービス Meister Cloudシリーズ東芝デジタルソリューションズ
Uniformance Suiteハネウェル
Twin BuilderANSYS
Salesforce IoTSalesforce
SAP Cloud PlatformSAP
VANTIQミツイワ
Cerebra日立ハイテク
Cisco Kineticシスコ
OSIsoftPI System
PredixGEデジタル
Telit IoT Device Management PlatformTelit
MindShpereシーメンス
垂直・基本機能提供型
FogHorn LightningFogHorn
HSDPフィリップス
垂直・アプリ提供型
Sakura.ioさくらインターネット
IoE Solutionジェイテクト
Softbank IoTSoftbank
SORACOM IoTソラコム
Workplace Hubコニカミノルタ
Vortex DDSADLINK
NB-IoT M2Mソフトバンク
垂直・全カバー型
IoT基盤サービスNEC
i-BELTオムロン
b-en-g IoTビジネスエンジニアリング
エッジコンピューティング
FIELDシステムファナック
FA-IT-Open Edgecross三菱電機
HULFT IoTセゾン情報
IoTプラットフォームでないもの
3DEXPERIENCEルノー/ダッソー/Singapore
不明
DP-Factory IoTDENSO
FactoryTalkロックウェル
jAppORBCOMM
CerebraFlutura
Kaa IoTCyberVision
EcoStruxureプラットフォームシュナイダーElec
ABBAbilityABB
Device Connection Platformエリクソン
IMPACTノキア
ADAMOS IIoTADAMOS

2020年4月16日木曜日

【MySQL】インデックス作成はテーブルを一時コピーして作らない。

なぜこんなことを記事にしているのか。

 仕事上、MySQLのALTER TABLE文は、テーブルを一時的にコピーしてから新旧テーブルを入れ替える形で処理されていると知った。 そうなのか!?と驚き、検索をかけた。


どこにそんなことが書かれているのか。

 下記記事を参照。

ALTER TABLEを上手に使いこなそう。


MySQLのドキュメントはどうだろうか。

 以下のリンク先に書かれていた。

13.1.7 ALTER TABLE 構文

一部引用すると

ストレージ、パフォーマンス、および並列性に関する考慮事項

ほとんどの場合、ALTER TABLE は元のテーブルの一時的なコピーを作成します。MySQL は、そのテーブルを変更しているほかの操作を待ってから、処理を続行します。そのコピーに変更を組み込み、元のテーブルを削除したあと、新しいテーブルの名前を変更します。

ALTER TABLE後のテーブル定義でコピーを作って、最終的にそちらを使うことになっている。


インデックス作成はどうなのか。

 やりたかったのはインデックス作成なので、それはどうなのだろうかとドキュメントを追ってみたところ、以下の引用部分を発見した。

一部の操作では、一時テーブルを必要としないインプレース ALTER TABLE が可能です。
  • ・・・
  • InnoDB と NDB に対するインデックスの追加または削除。

インデックス作成と削除は大丈夫ということだ。一安心した。InnoDBというのは検索をすればすぐに答えが出てくるので、気にしなくてよい。


【Python】演算子 in は数値や文字列の混合配列でも評価できる。

 Pythonのin 演算子を検索すると、だいたい数値や文字列のみを要素とする配列と比較している例が目立つが、数値と文字列を混合した配列でも比較することが可能である。

ドキュメントを見てみる

 Pythonのドキュメントを見てみよう。
6.10.2. 所属検査演算

ここには以下のような記述がある。

演算子 in および not in は所属関係を調べます。 x in s の評価は、 x が s の要素であれば True となり、そうでなければ False となります。

ドキュメント上では、配列要素が1種類のときに限定している記述はない。

試してみる

Python 3.7.3 (default, Apr  3 2019, 05:39:12)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 3 in [ 4, 'abc', 'cdf' ]
False
>>> 4 in [ 4, 'abc', 'cdf' ]
True
>>> [3,4] in [ [1,2], [3,4] ]
True
>>> [3,4] in [ [1,2], [3,5] ]
False
>>> 'abc' in [ 4, 'abc', 'cdf' ]
True

2020年2月23日日曜日

【Typescript】TS2339: Property 'startsWith' does not exist on type 'String'.【エラー】

TypescriptでなぜかstartsWithでエラーとなった。(TS2339: Property 'startsWith' does not exist on type 'String'.)

これは、ES6から使えるので、ES6でコンパイルしたらエラーでなくなった。

【JavaScript】奇数を要素とする配列を生成する。

1からある正の整数までの奇数を要素とする配列を生成する。

function odd_list(n:number) :number[] {
    return  [...Array(n)].map((_, i) => i + 1).filter(n => n % 2);
}