2018/02/23

備忘録:HTMLサンプルをブログに貼り付けたい☆

■やりたいこと
ブログなどでHTMLやXMLのソースをサンプルとして表示したい。

当然なことではあるが、ブログでそのままコピペして保存すると、表示するときに構文として解釈されてしまい、サンプルを表示できない。

■方法
Webページ内にHTMLソースのサンプルを表示するには、"<"と">"をそれぞれ"&lt;"と "&gt;"に置換すればよい。

以上☆

2018/02/19

備忘録:GoogleスプレッドシートIMPORTXML関数のXpathクエリの指定書式考察☆

■この資料の目的
Googleスプレッドシート関数IMPORTXMLの第2引数Xpathクエリに記述する内容をどうやって求めるのかを、XMLのパス記述規則から探ってみたときのメモ書き。


■対象個所の指定方法(Selecting Nodes)
nodenameはソース内の山括弧("<>")で囲われた文字で表される、セクションの名前。
//はソース内のどこかにあるパスを指定する、という接頭辞。
/は絶対パスで指定する、という接頭辞。
.は現行パスで指定する、という接頭辞。

//が階層の途中で出てきた場合には、直前(左)の階層内の任意のエレメントを指定する、という表現。
@は属性を指定する、という表現。
---
以下のXMLの場合、nodenameは、bookstore、book、title、price、が該当する。
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book>
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
</bookstore>



ちなみに、HTMLに当てはめると、タグが相当する。liタグとかaタグとかimgタグとか。
---
//li/a@title
liタグで囲われたセクションの直下にあるaタグ内のtitle属性の値を返す。

//li//a@title
liタグで囲われたセクション内の任意の階層にあるaタグ内のtitle属性の値を返す。 

liタグの中にさらにliタグがある(例:表の中でさらに表が分割されている)ような場合、1つ目の指定方法では値が返ってこない。
---
a@title...HTMLのaタグ内にあるtitle属性の値を返す。
例えば、以下のようなHTMLソース(ページ)があったら、
<li id="ichigaya">
  <a href="img/index/popup_ichigaya.jpg" rel="lightbox-rally" title="JR市ケ谷駅">
  <img src="img/index/map_ichigaya.png" width="88" height="46" alt="市ケ谷">
  </a>
</li>


以下の指定により、それぞれの値が戻る。
a@href → "img/index/popup_ichigaya.jpg"
a@rel →  "lightbox-rally"
a@title → "JR市ケ谷駅"
---
とある表から1行だけ抜粋したHTMLソースを使って色々と指定してみた。なお、とある表にはJR山手線駅名情報が記述されたliタグが多数含まれている。

<li id="ichigaya">
  <a href="img/index/popup_ichigaya.jpg" rel="lightbox-rally" title="JR市ケ谷駅">
  <img src="img/index/map_ichigaya.png" width="88" height="46" alt="市ケ谷">
  </a>
</li>
 

=IMPORTXML("http://www.jr.co.jp/gr2018/","//li/@id")
戻る値は"ichigaya"。liタグに指定されている属性idに割り当てられた値。<li id="ichigaya">


=IMPORTXML("http://www.jr.co.jp/gr2018/","//li/a/@title") 
戻る値は"JR市ケ谷駅"。aタグに指定されている属性titleに割り当てられた値。<a href="img/index/popup_ichigaya.jpg" title="JR市ケ谷駅">

=IMPORTXML("http://www.jr.co.jp/gr2018/","//a[@title]//@src")
戻る値は"img/index/map_ichigaya.png"。tltle属性が記述されているaタグを対象とし、同タグ内に記述された属性srcに割り当てられた値。<img src
="img/index/map_ichigaya.png" width="88" height="46" alt="市ケ谷">
なお、この指定では、//a[@title]で対象を絞る条件を指定している。このため、tltle属性が記述されているaタグだけが選択される(=title属性がないaタグは無視されて対象外)。
また、imgタグはaタグに挟まれているのでaタグ内扱いとなる(=属性srcから値を取得できる)。
---


■不具合-漢字が文字化け
戻り値の漢字が文字化けしている。
フォントを変えても漢字にならないので、関数の内部処理でおかしな日本語文字コードに変換していると推測した。
原因/対応方法の深追いは保留中...

■出典
IMPORTXMLのヘルプで、Xpathクエリからの参照先として記載されていたサイト。
http://www.w3schools.com/xml/xpath_intro.asp
---ヘルプIMPORTXMLの詳細から一部抜粋
XPath クエリ - 構造化データで実行する XPath クエリです。
    XPath について詳しくは、http://www.w3schools.com/xml/xpath_intro.asp(英語)をご覧ください。
---


■注記

資料中のURL"http://www.jr.co.jp/gr2018/"は架空のURL。
構文確認に使用したサイトは、2018/01-02に開催されたJR東日本ガンダムスタンプラリー特設サイト。


以上☆

2018/02/18

備忘録:Googleスプレッドシートで将来の積立累計額を計算する関数例☆

■やりたいこと
Googleスプレッドシートで、これから積立したらいくら貯まるのかを求めたい。

例えば、年利1%、月々2万円、10年間、積み立てたらいくらになるのか?とか。

■方法
FV関数を使えばよい。

■例1-積立
年利3%、月々3万円、開始資金ゼロから始めて、5年後いくらになる?
=FV(0.03/12,5*12,-33000,0,0)

 ■例2-積立しない
応用して、積立ではなく、手元の資金を運用したらいくらになるか? も計算できる。

 年利3%、月々の積立なし、元手100万円が5年後いくらになる?
=FV(0.03/12,5*12,0,-1000000,0)


■FV関数のポイント
この関数のポイントは、期間とか月々とか利率とかを「回数」や「1回当たり」 に読み替えて換算すること。

例1に当てはめると...

「年利3%」 →「年利3%を12ヶ月で割った値(=月当たりの利率)」→「1回0.25%」で、これを引数「利率」として指定する。
「5年後」→「月々積立を5年間」→「12ヶ月×5年積立」→「60回積立」で、これを引数「期間数」として指定する。
「月々3万円」 →「1回3万円」で、これを引数「支払額」として、マイナスで指定する。
「開始資金ゼロ」なので、これを引数「現在価値」として指定する。
なお、引数「期首または期末」 は省略値の0(=期末)のまま。1(=期首)にすると1ヶ月分利息が多くなってしまうので(詳細は割愛...期間数1でやってみると何とな~く理解できる)。

例2に当てはめると ...
「年利3%」は例1と同じ。
「5年後」は例1と同じ。
「月々の積立なし」 →「1回0円を積立」とみなして、0を引数「支払額」として指定する。
「元手100万円」なので、これを引数「現在価値」として指定する。
引数「期首または期末」 例1と同じ。

年利3%なんて預貯金ではあり得ない数字ですので、念のため(^^)

なんで例で年利3%を使ったかというと、先日NISAの日の積立NISA特集記事で例示されていた運用結果の年利を検証したら、3%で計算していたので、それを流用した次第。

ちなみに、NISAの日は2/13で、ニイサ=213の語呂合わせから^^;

■参考-積立月額や積立期間を求める関数
逆に...

10年後に800万円貯めるには、毎月いくら積立すればいいの?
毎月5万円積立したら、800万円になるのはいつ?

を求める関数もある。

=PMT(0.03/12,12*10,0,8000000,0)
=NPER(0.03/12,50000,0,-8000000,0) 

引数の説明は割愛。

以上です☆

2018/02/10

備忘録:Webページ上の一覧表をGoogleスプレッドシートに表示する☆

■やりたいこと
Webサイトで公開されている一覧表をGoogleスプレッドシートに表示したい。

ちなみに、たいていの場合、一覧表をコピーして、スプレッドシートに貼り付け、でOKではある。

■方法1
IMPORTHTML関数を使う。

例題:
環境省のサイトで公開されている、名水百選カードを発行している九州・沖縄地方の名水百選情報一覧を取得したい。

ページ名:環境省 名水百選ポータル 名水百選カードを集めよう 九州・沖縄地方
URL:http://www.env.go.jp/water/meisui/card/06.html
取得する情報:同サイト内に表示されている名水百選地の一覧

Googleスプレッドシートのセルに以下の関数を記述すればよい。そうすると、記述したセルを左上とした一覧表が表示される。

=IMPORTHTML("http://www.env.go.jp/water/meisui/card/06.html","list",4)

▲"http://www.env.go.jp/water/meisui/card/06.html"
取得したいページのURLをダブルクォーテーションで囲んで記述した。

▲"list"
一覧表のサイトのソースコードを見て、一覧表に該当する先頭のHTMLタグが"li"タグ、つまり、リスト形式だったので。もし、"table"タグだったら"table"を指定する。

▲4
1から順に試してみて決定した。
理屈としては、取得したいページのソースコード先頭から数えて4つ目の"

■方法2
元の一覧表を選択してコピーし、スプレッドシートに貼り付ける。
方法1の例題に掲載した一覧表は、方法2でも実現できた。

■免責
私個人用のメモとして記録したものですので、実行結果や内容に関してはご自身で確認の上、利用可否をご判断くださいますよう、お願いいたします。

以上です(^^)



2018/02/08

作戦完了!JR東日本 機動戦士ガンダムスタンプラリー 2018

JR東日本 機動戦士ガンダムスタンプラリー、全65駅制覇しました♪

以下、私が回って感じたことのメモです。参考になれば幸いです(^^)

■電車はすぐに来る
山手線なら最短3分間隔、その他の路線でも10分間隔で運行しています。

慌てる必要はないので、ギスギスせず、余裕をもって回りましょう(^^)


■スタンプ帳とスタンプ台

スタンプ帳は、改札係員に申し出ないとくれない駅もいくつかありました。

ただ、ほとんどの駅では、スタンプ台脇のラックにスタンプ帳がささっていて自由に入手できます。

スタンプ台ですが、どの駅でも行列整理用にロープや床テープが配置されていました。

私は平日に回ったので待ちゼロでしたが、休日には行列を覚悟した方がよさそうです。

ちなみに、平日でもどの駅でも、だれかしらスタンプを押している人に遭遇しました...お前もな(笑)

また、ほとんどのヒトは、スタンプ帳を複数冊所持&押印していました。

中には、田町だったか浜松町だったか、ガンダムとは何の縁もゆかりもなさげなおじさんが、スタンプ台に10冊ぐらい置いて、全冊「よしっ!」と押印モレ確認している光景に遭遇しました(@_@)

せっかく電車代払って全64駅回るから、1つじゃなくて複数冊に...という気持ちはわからなくもないけど、10冊はさすがにやりすぎだよなぁ...オークション目当てかなぁ。

 
■ルールと記念品
このスタンプラリーでは、7駅/39駅/65駅と3つの達成条件があります。

7駅と他2つは、達成ルールが異なる別物ですので、注意しましょう。

「7駅達成」作戦で必要なのは、スタンプ帳2ページのみです。

一方、39駅/65駅制覇は、5ページから14ページの駅別スタンプ欄への押印だけが達成条件です。つまり、2ページの「7駅達成」状況は一切関係ありません。

なので、39駅/65駅制覇狙いなら、7駅達成は二の次にすることをオススメします。

駅別スタンプ欄をモラサナイ方が重要だし、たくさん回っているうちに7駅ぐらいすぐ達成できちゃうので、思い出したときに押印するつもりがちょうどいいかも(^^)

■スタンプ帳と押印
全駅、スタンプ用インクのフタに「○○ページです」 とテプラが貼ってあるので、参考にしましょう♪

スタンプ帳の指定駅欄はバラバラに記載されててページを探すだけでも一苦労。助かります(^^)


■スタンプ台って駅のどこにあるの?
全駅のスタンプの設置場所は公式サイトで確認できます。

方法は2つ。

  • トップページイラストマップの駅をクリックすると、ポップアップが表示される。
  • トップページ右下「スタンプ設置場所一覧」をクリックすると、PDFの一覧表が表示される。
確認した「○○改札」「○○出口」を、到着したホーム上の案内から探すのが一番確実です。

見つけたら、案内に従って進みましょう。

乗降客数が少ない駅なら、たいてい改札口は一つなので迷うことはないです。


駅によっては、スタンプ台はこちらというA4カラー印刷的な貼り紙がありましたが、スタンプ台の案内掲示はないと考えたほうが賢明です。

私の場合、「○○駅構内図」でググるか、JR東日本の駅情報サイトか、で駅の構内図を見て歩き回ってました。

実際、いくつかの駅で遭難してしまいましたので(笑)

■回るなら「都区内パス」
JRのフリーキップ「都区内パス」750円が便利でオトクですね♪

指定席券売機で簡単に買えました(^^)

オトクなきっぷボタンを押して、「都区内パス」を選んで支払い操作をするだけ。

クレジットカードを入れて、暗証番号を押し、パスを無事にゲット。


但、今回のスタンプ設置駅では、常磐線の松戸駅から先は都区内パスの範囲外なので念のため^^;


なお、都区内パスではなく、都内を回るという点では、メトロか都営交通という手もありますので、参考までに。

何れも1日乗車券があります。「東京メトロ24時間券」600円/「都営まるごときっぷ」700円

メトロの場合、山手線スタンプ設置28駅のうち15駅、都区内で山手線以外のスタンプ設置31駅のうち9駅、なら回れます。

都営交通の場合、地下鉄以外にも都営バスも使えるので、都区内はすべて行けます。

ただ、どうやっていくかを考えると...面倒ですね^^;

■対策01-渋谷駅
渋谷駅に行くなら埼京線を利用しましょう。

「新南改札外」は、埼京線専用と言っても過言ではない場所にあるからです^^;

恵比寿から埼京線に乗ればよかったのに、山手線に乗っちゃったんで、遭難しました(笑)

南改札からそんなに遠くないだろう、と甘く見て事前に構内図を確認しなかったばっかりに...「新南改札」への誘導案内板はまったく目に入りませんでした。

渋谷駅って、とーっても細長い駅なんです。

埼京線用のホームを作るとき、拡張する土地がなかったため、既存の山手線ホーム恵比寿駅側のさらに先に、埼京線用のホームを山手線沿いに増設しちゃったんですね。

イメージとしては、山手線用ホームの先に、連絡通路を経由して埼京線ホームがある、という感じ。但、ホーム間は遠回りしないと行き来できない...

実際、山手線から新南改札に向かう途中、動く歩道がありました...それほど遠いということ^^;

といいつつ、渋谷駅の次、どうしましょうって感じではあります^^;

  • 埼京線で新宿駅...新宿駅の端っこに着いちゃうんで、スタンプ押しも乗換もかなり歩く。
  • 埼京線で池袋駅...池袋駅のスタンプ押しと乗換はよいけど、渋谷駅-池袋駅のスタンプが押せない。
  • 山手線に乗車...同じJRの渋谷駅なのに隣の駅に着いちゃうんじゃないかと思うほど歩く。

やっかいです、渋谷駅^^;

■対策02-改札が反対方向にある隣駅
順番に駅を回っていくと、スタンプ台の設置場所が電車の先頭と最後尾になっちゃってる駅がいくつもあります。

一例として、京浜東北線/山手線の東京-有楽町-新橋-浜松町-田町。

東京駅と有楽町駅と浜松町駅は、横浜寄り(=南側)の改札。

新橋と田町は、東京寄り(=北側) の改札。

なので、一駅飛ばして押印後、ホームの反対寄りへ歩き逆方向の電車に乗り、一駅飛ばして押印、すれば歩く距離は減らせます。


■対策03-常磐線の千葉茨城の駅
北千住駅でメトロ千代田線に乗り換えちゃいましょう♪

日暮里駅で乗れる常磐線は「快速」です。
亀有駅/金町駅/新松戸駅は各停しか停車しません(=快速は通過します)。
北千住駅はJRの駅なのでメトロ千代田線の運賃は不要&乗換改札もないです。
メトロ千代田線と常磐線各停は相互に直通運転します。

よって、JRのキップを持っていれば、北千住駅で常磐線の快速から各停に乗り換えてもまったく問題ありません(^^)

ということで、この区間は、
  • 片道を各停で制覇。
  • 片道を取手駅-日暮里駅間を快速で一気に移動。
が無難でしょうね。

南流山駅(武蔵野線)が新松戸駅(快速通過駅)からしか行けないことも考え合わせると。


■対策04-新日本橋駅
この項は、対策ではなく心構えの範ちゅうです^^;

新日本橋駅は、スタンプラリーの中で、唯一総武線快速の駅で、駅自体は複雑ではないです。






ただ、東京駅での総武線快速への乗換、とてつもなく歩くことを覚悟しましょう。

総武線快速のホームは地下4階にあり、かつ、誘導路が複雑なんです。

加えて、案内板もわかりにくいんで、遭難しないよう注意しましょう。

JRの案内板は、路線ごとに色分けされてますよね。

総武線快速の場合、横須賀線と直通運転してて、車体カラー(=案内板の色)がブルー。

ところが、地上を走る、東北本線からの上野東京ラインは横須賀線と同じ車体カラーなので、案内板の色がかぶっちゃってるんです。

なので、ブルーの案内板に気を取られていると、上野東京ライン(=地上)のホームに着いちゃったなんてことに。


歩くのがイヤなら、路線的には遠回りですけど、お茶の水駅/秋葉原駅から総武線各停で錦糸町駅に行き、総武線快速に乗換。スタンプ押印後錦糸町駅に戻る...という方法もなくはないですけど、時間は掛かっちゃいますね^^;

見方を変えて、歩く距離は若干増えるけど、神田駅から新日本橋駅へ歩いてしまう、という手もなくはないけど...

結局のところ、覚悟を決めて、東京駅で乗り換えるのが、無難です(^^)


■対策05-ホームの端っこに改札がある駅
ほとんどの駅はホームの中央辺りから改札に行けます。

ただ、時々、本当にホームの端っこに改札がある駅もあります。

一例として、御茶ノ水駅/原宿駅/鶯谷駅/三河島駅/天王洲アイル駅/羽田空港第1ビル駅など。

対策は事前に構内図で確認しておくぐらいです。

もし、ホームの反対ハジに着いちゃったら、ひたすら歩きましょう^^;

■対策06-赤羽駅近辺
山手線方面から赤羽駅方面を制覇する場合、埼京線か京浜東北線で押印しながら赤羽駅を目指すと効率がよいです♪

この近辺では尾久駅がぽつんと一駅あってやっかいですけど、赤羽駅から東北本線(上野東京ライン)で尾久駅に行き、赤羽駅に引き返すのが無難。

そうすると、赤羽駅を折り返し点として、埼京線と京浜東北線の駅を効率よく制覇できます。

例えば...
埼京線で、池袋駅→板橋駅→十条駅→赤羽駅
東北本線(上野東京ライン)で、赤羽駅→尾久駅→赤羽駅
京浜東北線で、赤羽駅→東十条駅→王子駅→田端駅

なお、埼玉側から入る場合には使えないので、念のため(^^)

■感想
キャラクタ設置駅は、各駅に希望を抽選で決めたとのこと。

シャア専用モビルスーツがらしくない駅に配置されているような気がしなくもない^^;

巣鴨(おばあちゃんの原宿:シャア専用ザク)
北千住(下町感が漂う街:シャア専用ゲルググ)
亀有(こち亀の両さん:シャア専用ズゴック)

アムロが中野はナットク(^^)

常磐線と武蔵野線のチバラキは遠かった...都区内パスの範囲外だし、各停しか止まらない駅がほとんどだし^^;
チバラキとは、松戸駅/新松戸駅/南流山駅(武蔵野線)/柏駅/我孫子駅/取手駅、のことです。

浜松町駅下りホーム横浜寄りにある小便小僧は、アムロに変身していました♪




■公式サイト
JR東日本 機動戦士ガンダムスタンプラリー
http://www.jreast.co.jp/gr2018/
開催期間は、2018/01/09から2018/02/27の2ヶ月弱。