Translate

Post Date:2021年11月9日 

Google Apps Script でWebスクレイピング

ゾウでもわかる Google Apps Script

GAS(Google Apps Script)でWebサイトをスクレイピングする方法の説明です。

matchメソッドで正規表現を駆使してもスクレイピングをできなくはないですが、Parserライブラリを使った方が100倍簡単です。

GASでスクレイピングすれば、毎日何時にとか何時間毎にといったようにWebサイトから定期的に情報収集することができます。


GASライブラリとは

簡単にいってしまえば、他の人が作った関数を利用できる機能がライブラリです。面倒臭い作業も賢い人が作ったライブラリを使えば自分でプログラミングする必要はなくなります。


Parserライブラリを導入する

Parserは、スクレイピングをするときにとても便利なライブラリで、下記で公開されています。

https://script.google.com/home/projects/1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw/edit

ライブラリを使用するときには、スクリプトIDが必要となりますので、

1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw

の部分をコピーしてください。

Parserライブラリ

ライブラリの追加方法

スクリプトエディタを開いてライブラリの「+」をクリックします。

スクリプトエディタでライブラリを追加する

ライブラリ追加画面となりますので、スクリプトIDをペーストして、検索をクリックして追加すればParserライブラリが利用可能となります。

  1. ParserのスクリプトIDを入力
  2. 検索をクリック
  3. 追加をクリック
スクリプトIDで検索してParserライブラリを追加する

HTMLデータを取得する

毎日データが変わる 12星座運勢ランキング - Yahoo!占い を使って説明していきます。

先ずは、HTMLデータを取り込みます。

HTMLを取り込むときの注意点は文字コードとして何が使われているかです。文字コードを指定しないと文字化けしてしまいます。

Yahoo!占いで使われている文字コードは "euc-jp” です。<head>から</head>に charsetの記載がありますので探してみてください。

<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">

ちなみに、このブログである「象と散歩」の文字コードは "UTF-8” です。

<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>

GASでHTMLデータを取得するには UrlFetchAppクラスを使いますが、文字コードはgetContentTextで指定します。

function myFunction() {
  var url = "https://fortune.yahoo.co.jp/12astro/ranking.html" // Yahoo!占い
  var html = UrlFetchApp.fetch(url).getContentText('euc-jp')
  Logger.log(html)
}

これでhtmlに格納されたHTMLデータが出力されます。


Parserライブラリの使い方

Parserの書き方は簡単で、抽出したいデータの中にある開始文字列終了文字列に挟まれている文字列を抽出できます。

Parser.data(‘抽出データ').from(‘開始文字列').to(‘終了文字列').build()

開始と終了に指定する文字列はhtmlタグである必要はありません。

また最後のbuild()関数は、最初に見つけたひとつだけを抽出する場合で、複数のデータを抽出するのであれば、iterate()を使います。

Yahoo!占いのタイトルと更新日を抽出する

では、早速 Yahoo!占い 12星座運勢ランキングからタイトルと更新日を取得してみます。「12星座運勢ランキング」というのは他のところからも取得できますが、画像で指定されているところから抽出してみます。

Yahoo!12星座運勢ランキング

HTMLソースでは下記の部分となります。

<h2><img src="https://s.yimg.jp/images/fortune/images/common/yftn_tt01_txt08.gif" alt="12星座運勢ランキング"></h2>
<p class="txt">2021年11月6日(土)</p>

「12星座運勢ランキング」を取得するために、直前の文字列 alt=" と直後の文字列 "> を指定します。

更新日には、開始と終了に <p class="txt"> と </p>を指定します。

function myFunction() {
  var url = "https://fortune.yahoo.co.jp/12astro/ranking.html" // Yahoo!占い
  var html = UrlFetchApp.fetch(url).getContentText('euc-jp')
  var title = Parser.data(html).from('alt="').to('">').build()
  var lastUpdated = Parser.data(html).from('<p class="txt">').to('</p>').build()
  Logger.log('タイトル= ' + title)
  Logger.log('更新日 = ' + lastUpdated)
}

実行結果をみるとタイトルが正しく抽出されていません。

タイトル= Yahoo!占い" width="177" height="34
更新日 = 2021年11月6日(土)

前述したように build() は、最初に見つけたものとなるので、

<img src="https://s.yimg.jp/c/logo/f/2.0/fortune_r_34_2x.png" alt="Yahoo!占い" width="177" height="34">

が、先にマッチしてこの部分が抽出されたようです。

もう少し、開始文字列を多くして、他で一致しないようにします。

function myFunction() {
  var url = "https://fortune.yahoo.co.jp/12astro/ranking.html" // Yahoo!占い
  var html = UrlFetchApp.fetch(url).getContentText('euc-jp')
  var title = Parser.data(html).from('txt08.gif" alt="').to('">').build()
  var lastUpdated = Parser.data(html).from('<p class="txt">').to('</p>').build()
  Logger.log('タイトル= ' + title)
  Logger.log('更新日 = ' + lastUpdated)
}

今度は正しく取得できています。

タイトル= 12星座運勢ランキング
更新日 = 2021年11月6日(土)

複数の値を取得する

Yahoo!12星座運勢ランキングのソースをみると、1位から12位まで表形式(tableタグ)で組み立てられています。

1行毎に薄い色と濃い色とで変えているので、簡単に記載するとこんな形です。

<table>
  ランキング1位の項目
  <tr class="st01">
    <td>...</td>
  </tr>

  ランキング2位の項目
  <tr class="st02">
    <td>...</td>
  </tr>

  ランキング3位の項目
  <tr class="st01">
    <td>...</td>
  </tr>

  :

</table>

<tr class="st01">で始まっているのが奇数の順位のもので、<tr class="st02">が偶数順位ですが、iterate()を使うと一気に配列として取得できます。

list_odd[5]でランク11位、list_even[5]でランク12位の情報が取得できます。

function myFunction() {
  var url = "https://fortune.yahoo.co.jp/12astro/ranking.html" // Yahoo!占い
  var html = UrlFetchApp.fetch(url).getContentText('euc-jp')
  //奇数順位の星座
  var list_odd = Parser.data(html).from('<tr class="st01">').to('</tr>').iterate()
  //偶数順位の星座
  var list_even = Parser.data(html).from('<tr class="st02">').to('</tr>').iterate()
  Logger.log(list_odd[5])
  Logger.log(list_even[5])
}

Parserを複数回利用して値を取得する

Parserを繰り返し使用することで目的の値を簡単に取得することができます。

上で取得した各星座のデータからランク、星座名、コメントを取得します。

スクレイピングのプログラミングのコツは、共通点を見つけるということです。共通のロジックでデータが取得できるかという観点でHTMLデータを俯瞰的に見てください。


順位の取得

詳細項目の取得方法について順位を使って説明します。

<td class="st01"> ... </td> の中にランキング情報があり、alt=" ... "> 中に順位がありますので、Paserを2回使って順位を取得します。以下がGASのコードとなります。

function myFunction() {
  var url = "https://fortune.yahoo.co.jp/12astro/ranking.html" // Yahoo!占い
  var html = UrlFetchApp.fetch(url).getContentText('euc-jp')
  //奇数順位の星座
  var list_odd = Parser.data(html).from('<tr class="st01">').to('</tr>').iterate()
  //ランクを取得
  var rank = Parser.data(contents).from('<td class="st01">').to('</td>').build()
  rank = Parser.data(rank).from('alt="').to('">').build()
  Logger.log(rank)
}

上記で「1位」と表示されます。


順位、星座名、コメントを取得する

下記が、Yahoo! 12星座運勢ランキングから、順位、星座名、コメントを取得するGASのコードとなりますので参考にしてみてください。

function myFunction() {
  var url = "https://fortune.yahoo.co.jp/12astro/ranking.html" // Yahoo!占い
  var html = UrlFetchApp.fetch(url).getContentText('euc-jp')
  //奇数順位の星座
  var list_odd = Parser.data(html).from('<tr class="st01">').to('</tr>').iterate()
  //偶数順位の星座
  var list_even = Parser.data(html).from('<tr class="st02">').to('</tr>').iterate()
  for(var i=0; i<list_odd.length; i++) {
    //奇数順位の星座
    results_odd = parse(list_odd[i])
    Logger.log(results_odd)
    //偶数順位の星座
    results_even = parse(list_even[i])
    Logger.log(results_even)
  }
}
function parse(contents) {
  //ランクを取得
  var rank = Parser.data(contents).from('<td class="st01">').to('</td>').build()
  rank = Parser.data(rank).from('alt="').to('">').build()
  //星座名を取得
  var seiza = Parser.data(contents).from('<p class="seiza">').to('</p>').build()
  seiza = Parser.data(seiza).from('alt="').to('">').build()
  //コメントを取得
  var text = Parser.data(contents).from('<p class="ft01">').to('</p>').build()
  text = Parser.data(text).from('">').to('</a>').build();
  var results =[rank, seiza, text]
  return results
}

GASの基礎を学べる参考図書

ある程度プログラミンがわかっていれば、WEBやYoutubeでも十分に調べられると思いますが、初歩的なところからであれば参考図書は有効な学習手段です。

詳解! Google Apps Script完全入門 [第3版]」は、プラグラミング初心者にわかりやすく説明されています。GASを最初に学ぶ一冊として良書です。

Udemy オススメ講座

【新IDE対応】Google Apps Script(GAS)の基礎を完全習得

【新IDE対応】Google Apps Script(GAS)の基礎を完全習得

講師:事務職たらこ

印象に残りやすい手書き風スライドを用いGASの基本的なプログラミングを気軽に学ぶことができる。本講座でGASを活用した自動化ができるレベルにはなれないが、基礎としては十分。

Post Date:2021年10月31日 

発酵あんこを発酵機でつくる

豆乳ヨーグルトと発酵あんこ

甘味のバリエーションを増やそうと、巷で流行っている『発酵あんこ』をヨーグルトメーカーで作ってみました。食べる甘酒は玄米と米麹で作りますが、発酵あんこも小豆と米麹と、シンプルな材料で作れます。

『発酵あんこ』は、通常の『あんこ』と違って砂糖(=ショ糖)を使っていません。米麴が発酵する過程で、デンプンがブドウ糖になり甘くなるので、身体に優しい甘さです。


あずきは糖質を代謝する

あずきは、低脂質、高タンパクで、食物繊維を多く含む健康食品です(豆の栄養成分表 | 公益財団法人 日本豆類協会 参照)。

また、あずきに含まれるビタミンB1は、糖質の代謝に欠かせない栄養素です。発酵あんこにすることで、糖質が分解されると聞くと甘味に対する欲求への罪悪感が薄れます。

その他あずきには、

  • 分泌解消
  • アンチエイジング
  • 貧血予防
  • コレステロール低下
  • 冷え性改善
  • 高血圧予防

などの効果があるそうです。詳しくは、あずきのチカラで健康に | 井村屋株式会社 を参照してください。


あずきを茹でるのは面倒

あずきを茹でるのには、最初にアク抜きのための茹でこぼし、そのあとに柔らかくなるまでコトコトと煮込まなければなりません。

土鍋を使えば余熱で調理できるので火にかけている時間を短縮できます。あずきを茹でるのに使っている土鍋は長谷園「かまどさん」です。

"かまどさん” の内蓋は使いません。指で豆が潰れるようであればOKです。小豆の大きさによっても茹で時間が異なるので、まだ硬いようであれば水加減をみて更に火にかけてください。

あずきの茹で方
 ① あずき 200g、水 600ml(あずきの3倍)
 ② 強火で沸騰させ煮汁を捨てる(茹でこぼし)
 ③ 水 600ml を加えて 強火で沸騰させる
 ④ 沸騰したら弱火で20分
 ⑤ 火を止めて余熱で20分

あずきを茹でた煮汁は使うので捨てません。


無糖 茹であずきを使う

「面倒なのは嫌い!」というのであれば、砂糖を使っていない "茹であずき” を使うという方法があります。しかし”ゆであずき” で検索しても殆どが砂糖が使われているものです。

”あずき”といえば井村屋ですが、ゆであずき | 井村屋株式会社 の商品一覧には無糖の”茹であずき”はありません。

そもそも「砂糖で茹でた”あずき”なら”あんこ”では?」と思い調べてみると、あんこの缶詰を「ゆであずき」と呼ぶのはどうして? | 日本あんこ協会 に回答がありました。

大正から昭和初期に汁気のあるゆであずきを缶詰にするのが技術的に難しく、汁気のないトロリとした茹であずきになったことから、

ゆであずき ≒ あんこ

となったそうです。

”小豆の水煮” という商品がありますが、これが本来の"茹であずき"かもしれません。


小豆の水煮

茹で小豆(小豆の水煮)ってどうなんだろうと、オーサワの有機小豆の水煮を試しに購入してみました。材料は、有機小豆(東北産)、食塩(海の精)とシンプルで価格も手頃です。

オーサワ 有機小豆 水煮

しかし、小豆200gを茹でると2.5〜3倍近くになるので、茹でた状態で一袋 200g(固形量)だと、小豆がかなり少ない、、、。

オーサワ 有機小豆 水煮

2袋を使っても米麹200gだと麹がちょっと多い感じです。

小豆を茹でる手間は省けますが、発酵あんこを作るならコスパが悪い。


発酵あんこをヨーグルトメーカーで作る

発酵あんこは、発酵温度と時間が設定できるヨーグルトメーカー(発酵器)で作れば、失敗することはありません。

注意点はひとつだけです。茹でたてのあずきはとても熱いので、そのまま米麹と混ぜてしまうと麹菌が死んでしまいます。60度以下にしてから小豆と米麹と混ぜてください

かまどさんで茹でた小豆

使っている米麹はスーパーでも購入できる『みやこ こうじ』です。

みやここうじ

『みやこ こうじ』は、麹を乾燥させて板状にしたものです。開封する前に袋の中で手で砕いて細かくしてください。

小豆と米麹を混ぜます。

茹で小豆に米麹を混ぜる

麹の発酵には水分が必要なので、小豆の茹で汁で水気が足りなければ、水(ぬるま湯)を足してください。

水分量は好みですが、水分が多くてもヨーグルトソースやデザートのトッピングに使うのであれば問題ありません。


発酵温度と発酵時間

米麹の発酵温度は60度前後です。10-12時間、発酵させるとコクと甘味がでます。

発酵温度を60度に設定します。

Kuvings(クビンス)発酵機 発酵温度

発酵時間は10時間で作っています。

Kuvings(クビンス)発酵機 発酵時間

これであとは、完成を待つだけです。


ヨーグルトメーカー(発酵器)

発酵器があると、ヨーグルト、甘酒、チーズ、味噌、酵素ドリンクなど色々な発酵食品が作れます。しかし、カスピ海ヨーグルトは低温発酵、麹は高温発酵と発酵温度も異なれば、酵素ドリンクなどは72時間の長時間発酵が必要です。

色々な発酵食品をつくるために、下記の3点を満たす発酵器を選びましょう。

  • 発酵時間が短時間から長時間まで設定できる
  • 発酵温度が低温から高温まで設定できる
  • 容量が大きい

Kuvings(クビンス)のヨーグルト&チーズメーカーは、

  • 温度設定 20℃~65℃
  • タイマー設定 1~99時間
  • 最大容量2リットル(適正容量 1.4L

と、色々な発酵食品をたっぷり作れます。


発酵あんこレシピ

発酵あんこの作り方のまとめです。

発酵あんこ 材料
 ① 小豆 200g(茹でる前)
 ② 米麹 200g

小豆(あずき)の茹で方については上を参照してください。「小豆の水煮」を使う場合は米麹と混ぜて発酵機にセットするだけです。

発酵あんこ 作り方
 ① 小豆 200g を 水 600ml で茹でこぼす
 ② 水 600ml を加えて小豆を茹でる
 ③ 米麹200gと茹でた小豆を混ぜる
 ④ 発酵温度 60℃ 発酵時間 10時間

これで優しい甘さの発酵あんこの出来上がりです。

Post Date:2021年10月10日 

VLOOKUPを使わない方法(INDIRECT+MATCH)

ゾウでもわかるGoogleスプレッドシート

GoogleスプレッドシートやEXCELで、他の表とキーが一致する行の値を取得するときにはVLOOKUP関数を使うのが定石です。

VLOOKUPはとっても便利な関数なんですが、不便なところもあります。

  • 検索できるのは指定した範囲の先頭列のみ
  • 取得する列は列番号で指定する

一番の問題は、VLOOKUP関数で検索できるのは先頭列のみで、取得する値がある列は検索する列よりも右側になければなりません。

もちろん表の列を移動させれば解決できますが、Google Sheetsで IMORTRANGE関数 で他のスプレッドシートを読み込んでいる場合などは致命的です。

また取得する値を列番号で指定するのも、AD列なら30と指定しなければならないので、列数が多くなるとわからなくなってしまいます。

ということで、VLOOKUP の代わりとなる方法(関数)の紹介です。


サンプルで使用するデータ

サンプルの表は「国番号一覧」と「国コード一覧」2つのシートです。

国番号一覧に2桁の国コードを取得するために、「国番号一覧」シートの「国名(日本語)」で「国コード一覧」シートの「日本語名」を検索して国名が一致する「2文字」から2桁の国コードを取得します。

下記の2表をコピペしてシートに貼り付けてください。

国番号一覧
国番号(電話) エリア 国名(日本語) 国名(英語) 国コード
60 アジア マレーシア Malaysia  
61 太平洋諸国 オーストラリア Australia  
62 アジア インドネシア共和国 Indonesia  
63 アジア フィリピン共和国 Philippines  
64 太平洋諸国 ニュージーランド New Zealand  
65 アジア シンガポール共和国 Singapore  
66 アジア タイ王国 Thailand  
81 アジア 日本国 Japan  
82 アジア 大韓民国 Republic of Korea  
84 アジア ベトナム社会主義共和国 Viet Nam  
86 アジア 中華人民共和国 Chaina  
90 アジア トルコ共和国 Turkey  
91 アジア インド India  
92 アジア パキスタン・イスラム共和国 Pkistan  
93 アジア アフガニスタン・イスラム共和国 Afghanistan  
94 アジア スリランカ民主社会主義共和国 Srilanka  
95 アジア ミャンマー連邦 Myanmar  
98 アジア イラン・イスラム共和国 Iran  

国コード一覧
2文字 3文字 英語名 日本語名
AF AFG Afghanistan アフガニスタン・イスラム共和国
AU AUS Australia オーストラリア
CN CHN China 中華人民共和国
IN IND India インド
ID IDN Indonesia インドネシア共和国
IR IRN Iran イラン・イスラム共和国
JP JPN Japan 日本国
KR KOR Republic of Korea 大韓民国
MY MYS Malaysia マレーシア
MM MMR Myanmar ミャンマー連邦
NZ NZL New Zealand ニュージーランド
PK PAK Pakistan パキスタン・イスラム共和国
PH PHL Philippines フィリピン共和国
SG SGP Singapore シンガポール共和国
LK LKA Sri Lanka スリランカ民主社会主義共和国
TH THA Thailand タイ王国
TR TUR Turkey トルコ共和国
VN VNM Viet Nam ベトナム社会主義共和国

EXCELならXLOOKUPを使う

Microsoft365(EXCEL)であれば VLOOKUP の上位互換である XLOOKUP があります。XLOOKUP関数を使えば、VLOOKUP の不便さが解消できます。

XLOOKUP 関数 に詳細の説明がありますが、今回のケースであれば、とってもシンプルに記載できます。

XLOOKUPの使い方

上図の国番号一覧シートの ”E2” に下記のように記載します。

=XLOOKUP(C2, 国コード一覧!D:D, 国コード一覧!A:A)

上式で国番号一覧シートのC2(国名=マレーシア)で、国コード一覧のD列(日本語名)を検索して、国名が一致する国コード一覧のA列の値が取得できます。

検索する値(C2)、検索する列(国コード一覧!D:D)、取得する値の列(国コード一覧!A:A)と、理解しやすい表記ができます。

国コード一覧シートは下記のようになっています。

国コード一覧シート(サンプル)

優れもののXLOOKUPですが、残念ながらMicrosoft365(旧Office365)でしか使えません。

Excel2019/2016では、後述するGoogleスプレッドシートで説明する方法を使ってください。


Google Sheets なら関数を組み合わせる

GoogleスプレッドシートにはXLOOKUP関数に対応する関数はありません。

しかし、関数を組み合わせることによってVOOKUPより便利にキーが一致する別表の値を取得することができます。


INDEX関数+MATCH関数

INDEX関数とMATCH関数の組み合わせる方法については、INDEX - ドキュメント エディタ ヘルプ にも記載されています。

VLOOKUPではできなかった検索する列が参照範囲の左端(1列目)になくても検索が可能になります。しかし、キーが一致する行の値を取得する列については列番号(数字)で指定する必要があります。

INDEX関数とMATCH関数を組み合わせる

上図の国番号一覧シートの ”E2” に下記のように記載します。

=INDEX('国コード一覧'!A:D, MATCH(C2, '国コード一覧'!D:D,0), 1)

先ずは、INDEX関数 の説明です。

=INDEX(参照範囲, 行番号, 列番号)

上の式を分解すると、

参照範囲 '国コード一覧'!A:D
行番号 MATCH(C2,'国コード一覧'!D:D,0)
列番号 1

となります。

行番号で指定しているMATC関数については後述しますが、'国コード一覧'!A:Dの中から1列目つのデータ(A列「2文字」の国コード)の値を取得するということを意味します。

続いて MATCH関数 の部分です。

構文は、

=MATCH(検索キー, 検索範囲, 検索種類)

です。検索キーで検索範囲の中で一致するものを探します。

MATCH(C2, '国コード一覧'!D:D,0)を分解すると、

検索キー C2 マレーシア
検索範囲 国コード一覧'!D:D 国コード一覧のD列
検索種類 0 完全一致

国コードシートのD列から「マレーシア」と完全一致するものを探してきます。戻り値は、一致するものが何番目に見つかったです。

=MATCH(C2, '国コード一覧'!D:D, 0)

とすると、D1から10個目で「マレーシア」と一致するので戻り値は10となります。

検索範囲は、'国コード一覧'!D:Dの部分を、D1:D19 としても戻り値は ”10” で表の行番号と一致します。

しかし、データが入っているのがD2からだといって

=MATCH(C2, '国コード一覧'!D2:D19, 0)

とすると、D2からマレーシアは9番目となるので戻り値が “9” となってしまいます。これだと行番号と一致しなくなってしまうので、INDEX関数で違う場所を参照してしまいます。

行番号は指定せずに D:D のように検索範囲を列だけにすれば必ず行番号と一致します。

国コード一覧シート(サンプル)

検索種類は、完全一致である 0 を必ず指定してください。省略してしまうと正しい答えが求められません。詳細は INDEXのヘルプ を参照してください。


INDIRECT関数+MATCH関数

INDEX+MATCH関数では、値を取得する列を列番号で指定しなければなりませんが、INDIRECT関数を使うと文字列として列を指定することができます。

百聞は一見に如かずです。

=INDIRECT("A" & 10)

これで、A10セルの値を取得できます。

INDIRECT関数を使って、国番号一覧シートの ”E2” に下記のように記載します。

INDIRECT関数とMATCH関数を組み合わせる

列番号は、上で説明したMATCH関数で取得します。

=INDIRECT("'国コード一覧'!A" & MATCH(C2,'国コード一覧'!D:D,0))

このように書くと、国コード一覧シートのD列の中でC2と完全一致する行の A列の値を取得することができます。

INDIRECTを分解すると下記のようになります。

行名 "'国コード一覧'!A" 文字列として指定
結合記号 &  
列番行 MATCH(C2,'国コード一覧'!D:D,0) 戻り値は列番号

国コード一覧のA列という指定は文字列なので、国コード一覧シートで列が変更されると式も変更しなければなりません。

それは、INDEX+MATCH関数の列番号でも同じなので、INDIRECTを使った方が、視覚的に理解しやすい式となります。

VLOOKを使わずにINDIRECT関数とMATCH関数を使ってみてはいかがでしょうか。

Post Date:2021年10月8日 

中古のiPhone 8という選択肢

iPhone8 64GB レッド Aグレード

iPhone8 が発売されたのは2017年9月です。Appleストアでは2020年4月に発売終了となっていますが、中古市場では iPhone8 が活況のようです。

「にこスマ」中古iPhone販売ランキング、iPhone 8(64GB)が6カ月連続で1位に

Belongが運営する中古スマートフォンのECサイト「にこスマ」は、10月6日に2021年9月の中古iPhone販売数ランキングを発表した。対象期間は9月1日~9月30日。1位はiPhone 8(64GB)で、6カ月連続で1位を獲得。

【引用】ITmedia Mobile

奇しくも自分も9月の販売に貢献したひとりで、「にこスマ」で iPhone 8 (64GB) Aグレード を購入しました。

中古スマホが体験できる ポップアウトストア「にこスマ」で手にしたiPhone8があまりにもキレイだったというのが契機となりました。

最新のiPhoneにはあまり魅力を感じられずに iPhone SE2 の購入を検討していましたが、これなら中古のiPhone 8でもいいかと思わせてくれました。


iPhone 8で十分か?

iPhone 8 は、十分に現役で使える基本機能を備えています。

  • 4.7インチ RetinaHDディスプレイ
  • TouchID(指紋認証)
  • ApplePay(モバイルSuica利用可)
  • ワイヤレス充電

最新機能の中には使えないものもありますが、iOS15にも対応しています。


iPhone SE2 と iPhone 8 の比較

現在、Appleストアで購入できるもっとも安価なiPhoneは、iPhone SE(第2世代)です。iPhone SE(第2世代)と iPhone 8は、サイズやカメラ性能などは同じです。

違いがあるのは搭載されているチップで iPhone 8 は A11で、iPhone SE2 は A13です。

このチップの違いからか iPhone SE2 では、背景をぼかしたポートレート撮影が可能となっています。

  iPhone SE2 iPhone 8
発売日 2020年4月  2017年4月
ディスプレイ 4.7インチ Retina HD
本体サイズ 138.4×67.3×7.3 mm
重さ 148 g
アウトカメラ 広角:1,200万画素
インカメラ 700万画素
容量 64GB/128GB 64GB/256GB
チップ A13Bionic A11Bionic
認証 指紋認証
ワイヤレス充電
Apple Pay 対応
駆動時間 同等

しかし、価格で考えると iPhone SE2 (64GB)は新品で49,800円。中古でもあまり価格は下がってなく40,000円しますが、

iPhone8 の中古であれば、新品 SE2 の半額以下で購入できます

にこスマ」で iPhone8 (64GB) Aグレード バッテリー残量90%以上24,500円です。

この価格差は大きい。


中古のiPhoneでも大丈夫?

中古のスマホを買うにあたっては、問題なく使えるのかという心配と、外観やディスプレイの傷なども気になります。

伊藤忠商事 100%グループの中古スマホとタブレットを扱っている「にこスマ」には、下記の「三つ星スマホ」という基準があります。

  1. 誰でも安⼼!制限ナシ
    • ネットワーク利用制限なし端末のみ
    • SIMフリー、SIMロック解除済みのみ
  2. 届いて感動!外観キレイ
  3. 使って快適!検査クリア

テレビ東京「WBS ワールドビジネスサテライト」で「にこスマ」が紹介されていましたが、中古スマホ購入に対する不安を払拭させる内容でした。


制限ナシ/検査クリア

SIMフリー、もしくはSIMロックが解除されているので、どのキャリアでも使えます。また前の利用者によるネットワーク利用制限がないことも確認されています。

動画でも紹介されていますが、検査体制もしっかりとしているようです。初期不良に対してもあんしん1年保証 という制度もあるので安心です。

気になるバッテリー最大容量についても記載されていて、販売されているスマホはバッテリー最大容量80%以上のものです。


届いて感動(外観キレイ)

「にこスマ」では中古品の状態が下記の3段階(グレードについて 「にこスマ」 )に分けられています。

  • Aグレード:新品に近い美品
  • Bグレード:傷の少ない美品
  • Cグレード:使用感がある良品 

にこスマ」のサイトでは「360°しっかりみられる」をコンセプトに画像で外観をチェックできますが、Aグレードは「新品と変わらないキレイさ!」です。

ポップアウトストアでBグレードのiPhone 8も確認しました。Bグレードも十分にキレイな端末ですが、Aグレードを見てしまうと、Bグレードという選択はなくなります。


iPhone 8(64GB)Aグレード

ポップアウトストアで中古スマホを見て、これなら安心して中古スマホが買えると「にこスマ」で iPhone 8(64GB) Aグレード を定期的にチェック。

「iPhone 8 64GB SIMフリー版 バッテリー最大容量:93% レッド Aグレード」が 24,500円で販売されていたので即ポチり。

中古市場なので、少しでもいいものを手に入れるためには定期的な商品チェックは必須です。気に入ったものがあれば迷わず購入しましょう。

支払い手段もクレジットカード以外にも代引き、AmazonPay、ApplePayなどが使えます。

14時までの注文なら当日発送、14時以降でも翌日発送と発送もスムーズです。

実際に届いたiPhone 8も傷ひとつなく、とてもキレイでした。

iPhone8 64GB レッド Aグレード

画面にも傷がないので、画面保護シールでごまかす必要もありません。


カバーとケースも赤で統一

REDを選択したので、カバーとケースも赤で揃えてみました。

Red で統一

ELECOMスリップインケースは iPhone 6用ですが、iPhone 8にカバーを付けても使えます。普段はカバンにiPhoneを突っ込んでいるので重宝しているケースです。

また落下時の衝撃緩和とカメラレンズの保護のためのカバーは、赤のデザインを損なわないように同色の赤色にしました。

iPhone SE2を選択肢として考えるのであれば、「にこスマ」で iPhone 8 (64GB) Aグレード も検討されてはいかがでしょうか。

Post Date:2021年9月29日 

ケンザンで頭皮マッサージ

uka スカルプブラシ kenzan バリカタ

@cosmeベストコスメアワード2020 ベスト美容グッズ で2位となった、uka(ウカ)の頭皮用スカルプブラシ「Kenzan(ケンザン)」が気持ちいい。

シャンプーのときは勿論、湯船に浸かりながらの頭皮マッサージは至福の極み。

uka scalp brush kenzan には、ソフトからバリカタまで

4種類の硬さがあります。何もukaのロゴである蝶々のフォルムでシリコン樹脂製です。

uka スカルプブラシ kenzan バリカタ
【引用】Amazon - uka スカルプブラシ kenzan バリカタ

上記以外にも男性用を意識した MISTERGENTLEMAN とのコラボ商品もありますが、硬さはレギュラーと同じです。

最も硬いバリカタでも、剣山のような尖った突起の先端は柔らかく、程よい刺激を頭皮に与えてくれます。

uka スカルプブラシ kenzan バリカタ

シャンプーブラシとしてだけではなく頭皮マッサージもと考えるのであれば「バリカタ」がオススメです。


スカルプケア用のブラシとは

uka(ウカ)スカルプブラシ kenzan(ケンザン)は、スカルプケア用のブラシですが、スカルプ(scalp)は英語で「頭皮」のことで、

スカルプケアとは、頭皮のお手入れです。

スカルプケアによって頭皮の毛穴の汚れや皮脂を取り除き、頭皮の血行をよくすることで、下記の抑制効果があると言われています。

スカルプケアによる効果
  • 頭皮の匂い
  • ふけ・かゆみ
  • 脱毛

薄毛、抜け毛が気になって、スカルプケアを始める男性は多いのではないでしょうか。


スカルプケアの方法

スカルプケアの方法は主に3つです。

  1. スカルプシャンプー
  2. 頭皮マッサージ
  3. 低温ドライヤー

スカルプケア用のシャンプーを使って毛穴の脂質、汚れを落として、頭皮の血流をよくするために頭皮をマッサージします。

そして髪を乾かすときは低温ドライヤーを使うというのがスカルプケアの基本です。

uka(ウカ)スカルプブラシ kenzan は、洗髪のときに毛穴の汚れを落とし、頭皮マッサージをするための頭皮用ブラシです。 


uka kenzan の使い方

uka(ウカ)スカルプブラシ kenzan(ケンザン)の使い方は、下記の動画にあります。

シャンプーをよく泡立ててから、生え際から kenzan を左右にジグザグと動かしていくと、頭皮全体がまんべんなくほぐれていきます。

また前述したように、シャンプーのときでだけではなく、湯船の中での頭皮マッサージがとても気持ちがいいです。


頭のツボを意識した頭皮マッサージ

頭には数多くのツボがあります。

身体が温まり血行が良くなるバスタイムに頭のツボを意識したマッサージをすれば、頭皮の血流をよくするだけではなく、リラックス効果や肩こりにも効果的です。

効果 ツボ
リラックス効果 百会(ひゃくえ)神庭(しんてい)瘂門(あもん)
肩こり・首こり 浮白(ふはく)風池(ふうち)

頭のツボについては、【頭のツボ】覚えておくと便利なツボ10選|押すと痛い理由も解説 にツボの探し方も詳しく説明されているので参考にしてみてください。


スカルプケアシャンプー

スカルプシャンプーは、髪の毛ではなく頭皮に優しいシャンプーで下記の特徴があります。

  • アミノ酸系洗浄成分(低刺激)
  • ノンシリコン(ノンコーティング)
  • 頭皮ケア成分(保湿成分等)

色々な商品が販売されていますが、シンプルで安価な無印良品の「スカルプケアシャンプー」と「スカルプケアコンディショナー」を使っています。


無印良品スカルプケアシャンプー

無印良品の「スカルプケアシャンプー」は、上記のスカルプシャンプーとしての3つの条件を満たしていますが、340mLで890円と安心価格です。

「スカルプケアコンディショナー(340g 890円)」と合わせて使っています。

ディスペンサーも無印良品で購入した「PET詰替ボトル・クリア400ml」ですが、透明なボトルは残量が一目瞭然で便利です(写真はコンディショナー)。

PET詰替ボトル・クリア400ml(スカルプケアコンディショナー)

シャンプーの洗浄剤には頭皮に優しい刺激の少ない植物性のアミノ酸系洗浄成分であるラウラミドプロピルベタインラウロイルメチルアラニンNa が使われています。

泡立ちもいい感じですし、エッセンシャルオイル配合で優しい香りです。

石油系洗浄成分、鉱物油、合成香料、着色料、パラベン、アルコール、シリコンは配合されていません。

また頭皮ケア成分としてとしてはヒアルロン酸の保湿効果を上回る リピジュア(R)(ポリクオタニウム-51)、グリチルリチン酸2Kヒアルロン酸、コンフリー葉エキス、ホップエキス、シイクワシャー果皮エキスが配合されています。


スカルプケアの三種の神器

スカルプケアシャンプーとスカルプブラシで洗髪して、湯船の中でスカルプブラシで頭皮マッサージ、仕上げはスカルプケアコンディショナーというのが、バスタイムでのスカルプケアです。

スカルプケアを意識するのであれば、塩素を除去する浄水シャワーヘッドも必須です。象と散歩: 浄水シャワーヘッドの効果と選び方 もあわせてお読みください。

スカルプブラシ、スカルプシャンプー、浄水シャワーヘッドはスカルプケアの三種の神器です。

象と散歩:人気の投稿(過去7日間)