ごらくらいふ

プログラミングしたりゲームしたり

SHINY COLORS 3rd LIVE TOKYO公演 のレポート記事を読む

シャニマス 3rd LIVE TOKYO公演 をこじらせてアーカイブを周回するだけでは飽き足らず、各社のレポート記事を読み漁ってしまった。 レポート記事のフォーマットはある程度固まってはいるものの、媒体の方向性によって構成から差異があるのは面白かった。

公演直後の記事ではセットリストを時系列に紹介していくようになっていて、コメントは一行スッと差し込む程度になっているものが多かった。 特徴的なのは声優グランプリで、1日目の紹介のみかつ、ソロとアンコールに比重を置いたものとなっていた。媒体の方向性が視えるというのは主にこの部分。

画像については各社同じで、同一の資料が提供されているのだな、という気づきを得た。

緊急事態宣言の影響に言及しているのはまちまちだった。 後発の記事なだけあって、リスアニ!の記事は情緒的な表現に富んでいた。

各社の記事を読んで構成を箇条書きにしてみた

続きを読む

ボツ案: 同じ内容で、ファイル名が連番のファイルを作成する

zenn に1件記事を書いた。 記事に仕立てようと調べていく内にコマンドの内容が変わっていったので、その供養記事。

zenn.dev

決定稿 (2021-05-04 に zenn.dev へ投稿したもの)

cd /path/to/diary/2021/05
seq -f '%02g.md' 1 31 | xargs -n 1 cp /path/to/template
# 01.md ~ 31.md が生成される

決定稿^

cd /path/to/diary/2021/05
seq -f '%02g' 1 31 | sed -e 's/$/.md/' | xargs -n 1 cp /path/to/template
# 01.md ~ 31.md が生成される
  • sedを使って拡張子を追加していた

決定稿^^

日記ではなく、コンテストを題材にしていた。 01.rs だけが存在していて、問題の数だけ複製しようと試みた。

cd /path/to/contest/src
# 01.rs だけは存在している
paste <(seq -f '%02g' 1 19 | sed -e 's/$/.rs/') <(seq -f '%02g' 2 20 | sed -e 's/$/.rs/') | (while read from to
do
  cp $from $to
done)

01.rs02.rs に、 02.rs03.rs にという発想だった。

同じ内容で良いのだから、前後の番号を意識する必要はないという気づきを得てボツに。面倒くさいし。

Hello Deno

退屈を感じていたので、名前だけは聞いていた Deno を触ってみた。

https://deno.land/

今回、公式サイトトップを眺めながら hello world まで触っただけの完全に雑多なメモ。

Deno とは

  • JavaScript TypeScript のランタイムである
  • セキュアなランタイムである
    • 明示的に有効にしない限り、ファイル・ネットワーク・環境へのアクセスが不可

Deno のインストール

Deno は単一の実行可能バイナリが配布される。

Ubuntu on WSL2 の環境にインストールを試みる。 シェル環境においては、インストールスクリプトを実行すればよい。

curl -fsSL https://deno.land/x/install/install.sh | sh

Oops !!

unzip コマンドが必要だったが、環境に存在していなかった。

Error: unzip is required to install Deno (see: https://github.com/denoland/deno_install#unzip-is-required).

unzip をインストールした。ついでにzipも。

sudo apt install unzip zip

PATHを通す

export DENO_INSTALL="$HOME/.deno"
export PATH="$DENO_INSTALL/bin:$PATH"

フォーマッターや各種ツールが一つのバイナリにまとまっていて、それでなお 72MB ほどというので、キュッと収まっている印象がある。

Getting Started

deno run https://deno.land/std/examples/welcome.ts
# Download https://deno.land/std/examples/welcome.ts
# Warning Implicitly using latest version (0.90.0) for http://deno.land/std/examples/welcome.ts
# Download https://deno.land/std@0.90.0/examples/welcome.ts
# Check https://deno.land/std/examples/welcome.ts
# Welcome to Deno!

deno runでそのままスクリプトを実行できるらしい。 インストールスクリプトcurlで取って shに 流しておいて言うのもなんだが、ちょっと緊張する。 だからこそ、ファイルやネットワークや環境へのアクセスはデフォルトで遮断してあるのだなと実感した。

Downloadの部分はそのまま素直に受け取っていいだろう。 Checkはよくわからない。

スクリプトの内容は素直。

console.log("Welcome to Deno!");

再実行したら、スクリプト本体によるWelcome to Deno!だけが出力された。 スクリプトはキャッシュされるらしい。

ドキュメント

モジュールはネットワーク上にある

  • Node.js では npm を使ってパッケージをローカルに取得し、名前の解決をNode.jsに任せて import していた
  • Deno では モジュールの所在を URL で指定する
  • 標準のモジュールでさえ、インターネット上で配布されている
    • それは監査済みである、とのこと

感想

node.jsを触ったときのように、TypeScriptのコードを書いてdenoでさっと実行できるのは手軽になってよい。 eslintを足したりpretterを入れたり、@typesを入れたりと、そういう手間がなくなった。

モジュールにどう依存してるかが import 文の URL しかないので、 dependabot が仕事しにくくなりそう。 いや、grepして最新と突き合わせるだけか?

調べたいこと

  • std module さえ無い状態でできることの確認
  • stdinとstdoutの扱い方
    • とりあえずこれさえ押さえれば、何かしら使える

posh-gitを導入した

Windows + PowerShell環境におけるGitの使い勝手を改善したくなり、posh-gitを導入した。

手順

repositoryの取得

2021/02/17時点において、posh-gitの v1 はまだ beta らしい。 v1未満のバージョンも、v1のbetaも不安定であることに変わりはないので、repositoryを取得し、masterの最新コミットを使うことにした。

# 自分は `ghq` コマンドを愛用している。
ghq get https://github.com/dahlbyk/posh-git.git

下準備

  • posh-git v1 は PowerShell 5.x、または PowerShell Core 6.0 が必要らしい。バージョンの確認は $PSVersionTable.PSVersion を見ればよい。
  • Windowsではスクリプトの実行ポリシーが RemoteSignedUnrestricted である必要がある。確認は Get-ExecutionPolicy を実行すればよい。
  • git コマンドが環境変数 PATH から参照できなくてはいけない。

Profileへの反映

posh-git は、カレントパスの出力やサフィックスをよしなにやってくれる prompt を標準で用意しているらしいが、自分好みの prompt を定義することもできる。

posh-git に求めているのは git の情報を出力することだけなので、 Write-VcsStatus を拝借すればよさそうだった。

Import-Module \path\to\posh-git-repo\src\posh-git.psd1
function prompt {
    $prompt = ""
    $prompt += "(*-w-) [$(Split-Path (Get-Location) -Leaf)]"
    $prompt += Write-VcsStatus
    $prompt += " > "
    if ($prompt) { "$prompt" } else { " " }
}

f:id:yajamon:20210217225941p:plain

Good.

参考リンク

RSS 0.91の仕様書を読んだというメモ

ウン年前にPHPRSS Readerを作ったことを思い出した。 当時はWebサービスで、今度はiOSアプリケーションにでもしてやろうと思う。

これにあたって、RSSの仕様書をちゃんと読んでみようと考えた。 RSSは諸々分岐していることをWikipediaから知り、RSS 2.0 -> 0.92 -> 0.91 と元にしているバージョンが連なっているようだった。

RSSはXML1.0 で記述されているとのこと。 アプリケーション内で表現するにあたって、まずは構造を把握しようと試みた。 文字列の長さに関する規定などが個別にあるようだが、それらは一旦後回しとした。

RSS 0.91 の構造を手元に書き写した

  • rootに <rss> を持つ
  • <rss>は単一の要素 <channel> を持つ
  • <channel>の必須要素
    • <title>
    • <link>
    • <description>
    • <language>
    • <image>
  • <channel>のオプショナル要素
    • <copyright>
    • <managingEditor>
    • <webMaster>
    • <rating>
    • <pubDate>
    • <lastBuildDate>
    • <docs>
    • <textInput>
    • <skipDays>
    • <skipHours>
  • <image>は以下の必須要素を持つ
    • <url>
    • <title>
    • <link>
  • <image>は以下のオプショナル要素を持つ
    • <width>
    • <height>
    • <description>
  • <channel>は複数の<item>を持つ
  • <item>は以下の要素を持つ
    • <title>
    • <link>
    • <description>

参考URL

エクスポートしたKindle note HTMLをmarkdownに変換するコマンドを作った

Kindleには自分のハイライトをエクスポートする機能がある。 マイノートからシェアボタンを押すと、メモをHTML化した上でメール送信できる。

このHTMLを、必要な分だけ抽出してmarkdownにするコマンドを作った。

github.com

自分のメモを共有したい。ブログに載せたい。 しかもmarkdownの形式になっていると助かる。

実践例:

yajamon.hatenablog.com

読了記録: 「面白くならない企画はひとつもない - 髙崎卓馬」

貸本屋 Kindle Unlimited から一冊を手にとった。

自分について、なんとなしにプログラミングやらWebサービスの機能を成立させるくらいの力はあるんじゃないかと考えているが、「何を作りたいか」を思いつけないという漠然とした諦観がある。 で、「企画力」とはなんぞやと思って手にとった本は、なぜか「テレビCMの企画」の話だった。

次の本を読むには返却しないといけないので、感想やハイライトをメモ。

感想

  • テレビが影響力を失いつつある状況を「家庭内サイネージ」と表現していたのは面白かった。
  • CMのクリエイターなんて全く意識したことがなかったので、三井のリハウス のCMを企画した人だと分かると「ああ!あの!」となるのであった。
  • 判断の基準を他人に置く危険性のくだりは、直近の開発で思い当たる節がある。似たようなことは起こるものだ。
  • 思いの外、要件定義などの上流工程に通ずるところがある。

以下、商品とKindle note のハイライトから特に印象にのこった部分


面白くならない企画はひとつもない 高崎卓馬のクリエイティブ・クリニック (宣伝会議養成講座シリーズ)

著者: 高崎卓馬

はじめに

ハイライト(イエロー) - 位置21

そして僕がたどり着いた結論は「わからない」をなくすこと

ハイライト(イエロー) - 位置23

よくわからずつくりはじめたから色んなひとの意見が入り込んで来る。

1章 セツメイ病を治そう

続きを読む