自動化厨のプログラミングメモブログ │ CODE:LIFE

Python/ExcelVBA/JavaScript/Raspberry Piなどで色んなことを自動化

ブラウザで動作するリアルタイムプレビュー付きの最強Markdownエディタ「StackEdit」

f:id:maru0014:20181028220319p:plain

今までMarkdownを書くのにCodePenBracketsVS Codeなど色々使ってきましたが、ようやく「これは!」というMarkdownエディタにたどり着きました。超おすすめです。

StackEditが便利すぎて最近は会社で使う会議資料や文書も簡単なものはMarkdownで書くようにしています。

Google Driveに接続しておけばどこからでも書けるし読めるし。

 

Markdownとは

Markdown(マークダウン)は、文書を記述するための軽量マークアップ言語のひとつである。本来はプレーンテキスト形式で手軽に書いた文書からHTMLを生成するために開発されたものである。しかし、現在ではHTMLのほかパワーポイント形式やLATEX形式のファイルへ変換するソフトウェア(コンバータ)も開発されている。各コンバータの開発者によって多様な拡張が施されるため、各種の方言が存在する。 引用: https://ja.wikipedia.org/wiki/Markdown

 

Markdown記法についてはQiitaのチートシート記事が最強にまとまっているのでこちらを参照ください。

qiita.com

 

StackEditを使ってみる

StackEditを利用開始するにはhttps://stackedit.io/app#へアクセスするだけでOK。

Google Chromeを使っている方ならChromeウェブストアからウェブアプリとしてインストールしておくのもいいですね。

 

StackEditでできること

StackEditはブラウザ上で動作するMarkdownエディタアプリ。

シンプルで分かりやすいUIに加えてMarkdown記法を憶えていなくても入力補助機能があるのでMarkdown入門にもオススメです。

主に以下のような機能があります。

  1. リアルタイムプレビュー
  2. Markdown記法入力補助
  3. GoogleドライブやDropboxへ保存
  4. GitHubやWordPressへの投稿
  5. .md/.html/.pdfなどでのエクスポート

欲しい機能全部詰まっていますね!

 

続きを読む

空想爆発「お金2.0 新しい経済のルールと生き方」をから人類3.0と人類4.0を想像してみた

お金2.0 新しい経済のルールと生き方 (NewsPicks Book)

お金2.0 新しい経済のルールと生き方 (NewsPicks Book)

楽天スーパーSALEで楽天ブックス利用特典を得るためになんとなく買ってみたこの本。2017年は自分としても仮想通貨のマイニングをやり始めた年、だけどその知識は曖昧なものなのでもう少し知っておかねばと思い読んだ次第です。

読書感想文とか苦手な宿題だったし、めったに本の感想とか書きませんがいろいろ思うところもあったので書いてみます。

※ 後半からは空想が暴発した結果です。SFになってしまいました。でも現代のテクノロジーも100年前からしたら十分SFですよね。この本を読んで「こうなるんじゃないかなぁ」と思った想像であり、本に書いてある内容とは異なりますのでご注意ください。

続きを読む

pyenvでPython3.7.0をインストールしようとしたらWARNING発生

pyenvでPython 3.7.0をインストールしようとしたらエラー発生。

WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?

拡張機能が足りないけどいいすか?みたいな内容らしい。

それぞれapt-getすればOK。

$ sudo apt-get update
$ sudo apt-get install -y libbz2-dev libreadline-dev libsqlite3-dev

マナーモードのまま寝るとGalaxy Note8のアラームが鳴らない問題

有給消化期間かつ岡山→東京の引っ越しもようやく落ち着いてきて朝もゆっくり二度寝している最近ですが、今日はきちんと7時に起きようとスマートフォンのアラームをセットしていました。 が、鳴らない!

マナーモードでもアラームだけはなる設定のはずなのに通知をミュートの例外に設定しても、鳴らない!

何故だ・・・と思い寝起きの頭で考えること2分。諦めてぐぐるとめっちゃ分かりやすい記事を発見。

(Galaxy) アラームを設定する方法を教えてください。 | Samsung JP

Galaxyの公式サイトでした。意外とサポートもちゃんとしているんですねぇ。

今回の問題点は「時計」アプリの唯一の設定項目である「アラームとタイマーをバイブに設定」でした。

これをオンにしているとマナーモードではバイブレーションのみのアラームになるようです。

なんでこれがデフォルト設定なんだ・・・と思いますが、解決しました。

Galaxyシリーズでマナーモード・サイレントモードでアラーム音が鳴らなくて困っている方は是非ご確認ください。

GASとSlackとGoogleHomeで毎朝なにを着れば良いか教えてもらう

f:id:maru0014:20181014232943p:plain

最近は季節の変わり目で朝起きて寒いなーと思って上着を着ていくと、意外と昼間は暑くて上着が邪魔になったり。逆に意外と寒かったり。

朝どんな服装にするべきか悩ましいのですが、tenki.jpではどれくらいの服装なら体感温度が適温になるのか「服装指数」というものを表示してくれています。

これを毎朝確認すれば前述のような自体は避けられる!と思ったが自動化厨にとってそれは大変面倒くさいというもの。

今回はGASでお手軽にスクレイピング→Slackへ投稿→GoogleHomeに喋らせるという仕組みを作りました。

※今回の記事では「GASでスクレイピング→Slackへ投稿」までを紹介します。「→GoogleHomeに喋らせる」は以下の過去記事を参照ください。

code-life.hatenablog.com

Googleスプレッドシートでスクレイピング

東京地方(東京)の服装指数 - 日本気象協会 tenki.jp

https://tenki.jp/indexes/dress/3/16/4410/

東京の方はこちらのページですね。お住まいの地域に合わせてページURLをコピーしておきましょう。

このページに欲しい情報は全て載っています。

  1. 服装指数
  2. どんな服装にすべきかのコメント
  3. 天気
  4. 最高/最低気温

これらの情報をスプレッドシート上に取得・表示できるようにするのですが、Googleスプレッドシートには超便利な関数「importxml」があります。

この関数は=importxml("スクレイピング対象URL","XPathクエリ")のように記述するだけで対象要素のテキストをセルに表示することができます!

スプレッドシートの完成イメージ

f:id:maru0014:20181014234349p:plain

だいたいこんなかんじです。ぶっちゃけ3行目以下は不要なんですが、なぜかXpathのインデックス番号を指定しても全部取得されちゃってめんどくさいので諦めてこのまま使いました。

関数入力

各項目を以下のようなXpathで取得します。

※今回スクレイピング対象URLはI1セルに入力してあります。

項目 関数入力
A 日付 =today()
B 指数 =importxml(I1,"//*[@id='main-column']//*[contains(@class, 'indexes-telop-0')]")
C 天気 =importxml(I1,"//*[@id='main-column']//*[@class='weather-telop']")
D 最高気温(℃) =importxml(I1,"//*[@id='main-column']//*[@class='high-temp']")
E 最低気温(℃) =importxml(I1,"//*[@id='main-column']//*[@class='low-temp']")
F 降水確率 =importxml(I1,"//*[@id='main-column']//*[@class='precip']")
G コメント =importxml(I1,"//*[@id='main-column']//*[contains(@class, 'indexes-telop-1')]")
H 文章 =CONCATENATE("本日の天気は",C2,"、最高気温",D2,"、最低気温",E2,"、降水確率",F2,"%、服装指数は",B2,"です。",G2,"。")

H列にはSlackへ投稿させるメッセージ内容です。各項目を文章として結合しています。

以下を参考にしました

review-of-my-life.blogspot.com

qiita.com

GASでスプレッドシートのデータを取得してSlackへ投稿

Slackで事前に着信Webフックを用意しておきます。以下の過去記事を参考に設定してください。

code-life.hatenablog.com

コード.jsに以下のように記述

var postUrl = 'ここにSlackの着信WebフックURL';

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); //スプレッドシートを取得
  var sheet = spreadsheet.getActiveSheet(); //シートを取得
  var message = sheet.getRange("H2").getValue(); //投稿用文章が入っているセルの中身を取得
  
  var payload = JSON.stringify(
  {
     "text" : message
  });
  
  var options =
  {
    "method" : "post",
    "contentType" : "application/json",
    "payload" : payload
  };
  
  UrlFetchApp.fetch(postUrl, options); //Slackへ投稿
}

ここまでできたらテスト実行。再生ボタンを押しましょう。

f:id:maru0014:20181015000147p:plain

これでSlackへ無事投稿されればOK。

毎朝自動実行する

再生ボタン左にある時計アイコンをクリック。

以下のように設定して保存すれば毎朝教えてくれます。

f:id:maru0014:20181015000336p:plain