いつでも発展途上

猫と珈琲とゲームが大好きなシャチ。ITエンジニアらしいです。メモ代わりにいろいろ書いています。

JavaScript で選択したテキストを取得する

これで、ブラウザ上でマウス等で選択したテキストを単に取得します。

window.getSelection().toString();

するのですが、選択されている範囲に、特定の要素が含まれているかどうかをチェックしたいときもあります。

たとえば id="hoge" な要素で選択されているかどうか見たいときは、こんなかんじ。

var element = document.getElementById("hoge");
var sel = window.getSelection();
if (sel.containsNode(element, true)) {
    console.log(sel.toString());
}

Selection#containsNode の第二引数に true を指定すると、すこしでも要素が含まれていれば true が返ってくるようです。細かい動作はちょっと調べきれていませんが、false を指定するとけっこう判定がシビアな感じ。

注意点

参考

Mastodon アップグレードメモ 2020年6月

趣味で運用している Mastodon のサーバを 2.8.0 から 3.1.4 に上げたときのメモです。

環境

方針

  • リリースノート の Upgrade notes に従ってやっていく
  • 一気にあげると崩壊しそうなので、だいたい db:migrate が発生する単位ぐらいであげていきました。

ハマったこと

yarn install が停まる

yarn install が何度かこんなメッセージで停止しました。

Browserslist: caniuse-lite is outdated. Please run next command `yarn upgrade`

色々ググった結果 browserslist の内容を最新にするといいらしいとわかり npx browserslist@latest --update-db を実行したら、うまくいきました。

$ npx browserslist@latest --update-db
npx: 11個のパッケージを3.759秒でインストールしました。
Current version: 1.0.30000986
New version: 1.0.30001081
Updating caniuse-lite…
warning " > react-redux-loading-bar@4.0.8" has incorrect peer dependency "react-redux@^3.0.0 || ^4.0.0 || ^5.0.0".
caniuse-lite has been successfully updated

参考

node.js のバージョンアップが必要

v3.1.0rc1 以降は Node.js のバージョン 10 以降が必要になります。自鯖は 8 だったのでアップグレードしました。

CentOS の場合は公式から RPM パッケージを持ってくる必要があります。root でやります。

curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum install -y nodejs

node -v して v10.21.0 になっていることが確認できました。

参考

bundle install できなかったバージョンがある

3.0.1 より後のバージョンで、なんかいろいろ bundle install で問題が発生していたのでいくつかスキップしました。おかげで 3.0.1 から一気に 3.1.4 へ。

参考

Redis のバージョンアップが必要

v3.1.3 以降は Redis 4 以降がサポート対象になるとのことで Redis のバージョンもあげました。

yum install epel-release
yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum info redis --enablerepo=remi

これで最新バージョン 6 が入りました。

参考

まとめ

  • バージョンアップはこまめにやろう
  • 参考サイトの作者さま、ありがとう

リモートでインセプションデッキの「やらないことリスト」を試してみる会 に参加しました

リモートでインセプションデッキの「やらないことリスト」を試してみる会 に参加してきました。インセプションデッキとは何かはググってください(手抜き)! 書籍「アジャイルサムライ」で有名になったやつです。

達人ファシリテーター(私の中で)ガオリュウさんが、リモートでどのようなファシリテーションをされるか模索中ということで、興味津々で参加させていただきました。

全体のながれ

1. 今日期待することを出し合う

Zoom のブレイクアウトルームを使って参加者が数人ずつ+ファシリテーター1名 に分かれ、今日の場に期待することをあげていきました。 皆さんリモートでどうファシリテートするのか、やらないことリストとはどんなものか、との期待が(当然ながら)あるようでした。

2. しくじり先生登場!

Kaz さんによるオンラインでのファシリテーション失敗談。ITリテラシーの高めな人が集まっても、各自の自宅のインターネット回線がよわいとラグが発生しまくってオフラインと同じようにはいかない、という貴重なお話でした。なるほどー・・・

3. リモートで「リモートでやらなくなったこと」をあげていく (Google スプレッドシート)

お題「リモートでやらなくなったこと」を協力者4人で Google スプレッドシートに書いていきます。付箋がなくてもこれならリアルタイムで更新されるのがみんなで見られていいですね。

4. リモートで付箋を使って整理していく (miro)

ここからはワークショップぽい流れに。miro を使って前項であがったやらないことリストを付箋に貼り、それを協力者4人で以下にわけていきます。

  • やらなくなったけど、やる とすること
  • やらない or やる にしたけど、ちょっと考えていきたいこと(やり方とか本当にやる/やらないで良いか議論したいとか)

長距離通勤などだれもが無駄と思いそうなことは「やらない」のまま残るけど、本屋さんに行く・散髪する・ちょっとした会議 などは「やる」に移動されていき、議論の余地がありそうなことが可視化されていくのが面白かったです。

5. みんなで感想を言い合う

再びブレイクアウトルームに入って感想を語りあい、最後に全員で共有します。

得られた気づき

  • リモートでもやりようによっては、十分ワークショップできる!! んだけど、ワザと慣れは必要そう
  • 参加者の回線が使いたいツールに耐えられそうかどうかは、事前に確認したほうがよさげ
  • Google スプレッドシート最強! Excel ライクならみんな使い方を知ってるし、回線がよわくてもつかえる!
  • miroCSV から付箋のインポート・エクスポートできるのが超べんり!

個人的に感じたこと

  • みんな(無駄な)通勤はしたくない
  • みんな(無駄な)会議はしたくない
  • みんなコミュニケーションに飢えている
  • ガオリュウさんの「場をあたためる力」はリモートでも衰えない

見学もOKということで見ているだけでも楽しめる勉強会だったと思いますが、オンラインだと気軽に離席できるのもメリットっぽいです。 運営のみなさま、楽しい学びの場をありがとうございました。

rails-erd で Rails アプリの ERD を出力する

ERD は Entity Relationship Diagram の略でテーブルの関係図です。はじめてのアプリを触るときに ERD があるとモデル周りの構造がわかりやすくなります。

なお反映されるのはあくまで DB 上のもので、Active Record 上で定義している制約などは反映されません。 -> よくみたらちゃんと反映されていました。

手順

Graphviz というツールが必要なので Homebrew から事前に入れておきます(macOSの場合)。

brew install graphviz

Gemfilegem "rails-erd" を追記したうえで

bundle install
bundle exec erd

とするとカレントディレクトリに erd.pdf が作成されます。

参考

新しいプログラミング言語を覚えるときにしていること

この記事は エムスリーキャリア アドベントカレンダー の4日目です。ハードルを下げていく所存です。

1. オフィシャルサイトを見る

オフィシャルサイトにはその言語の制作者がもっとも伝えたいことが書かれており、情報の鮮度も良いため、あれこれググるより効率的なことがしばしばあります。

だいたい英語ですが、最近は非ネイティブに配慮したやさしい英語を用いているサイトが多く助かります。日本語翻訳がある場合は、感謝のあまり錐揉みジャンプしつつ利用させてもらいます。

そのプログラミング言語が生まれた経緯や、設計思想なども読んでおくと、あとあと役立ちます。その言語の本来の用途から大幅に外れたコードを書くと、将来の誰か(自分ふくむ)が泣くことになるでしょう…

2. 言語処理系を手元のマシンで使えるようにする

オフィシャルサイトからそのプログラミング言語の処理系をダウンロードしてきて、手元のマシンで Hello World します。

3. プロダクトコードを読む

  • 3-1. 業務で扱う対象となるコードが目の前にあれば、まずはそれを読みます
  • 3-2. その言語で書かれた有名なプロダクトのコードが Github 等で公開されていれば、それを読みます

例: Ruby ですと tDiary とか昔はよく読んでました。いまは Mastodon をたまに。

できれば 3-1. だけでなく 3-2. もやっておくと、その言語でのだいたいのお作法なんかがわかります。気合の入った人や C/C++ のわかる人は、言語自体のソースコードとかも読むと楽しいかもしれないです。

4. 自分でなにか作る

これが一番大事です。とにかく自分で手を動かしてなんか作ります。大切なことは ハードルを上げすぎない ことです…!

あまり大きなプログラムですと挫折するので、私は だじゃれ bot の移植をよくしています。これはテキストファイルからだじゃれを読み込んでランダムに抽出し、SNS に投稿するというシンプルなものですが、覚えたい言語でこれを移植することにより以下のことがわかります。

  • 言語機能の調べ方(疑似乱数はどう生成するの?とか)
  • File I/O のやり方
  • ライブラリの探し方、使い方
  • デバッグのやり方、エラーメッセージの見方
  • その言語の雰囲気(アバウトですが、意外に大事)

手を動かすと、ささいなことで悩みます。オフィシャルのチュートリアル(あれば)を読むなり、ググりまくるなり、人に聞きまくるなりでどうにか動作までもっていければ、しめたものです。

例: Scala に移植してみた

5. 継続的に情報を収集する

イベントや勉強会に参加する、SNS でタグやエバンジェリストを追う、著名プロダクトの更新やニュースをチェックする、同僚に聞く、などなど。


他にも、こんなことをやると良いよ、自分はこうやっているよ、などがあればぜひコメントで教えてください。

TV版「トライガン」をいまさら全話観た

Amazonプライム・ビデオで「トライガン」テレビアニメ版を全話観た。原作漫画はリアルタイムで読破していたが、アニメは初めてだ。

終盤では原作漫画とは違う展開になるが、これはこれでうまくまとまっていてよかった。Amazonレビューでは酷評もあるようだ。たしかに若干誇張が強いところもあるが、たった26話であの壮大な話をもらさず語るのは無理というものだろう。

ヴァッシュの苦悩も、ウルフウッドのもがきもよく伝わってきた。保険屋さん二人は漫画より活躍していた気がするが、これはアニメならではのサービスだろう。

この短さで Gung-Ho-Guns を全員登場させているのも驚かされた(連載中に放映終了のため一部出てないキャラはいる)。ただ本当にちょっとしか写らないキャラもいる。尺の都合で仕方がないのだが、どうにか個性を表現しようと頑張ってる感じは伝わる。

そして、なんといっても、ガンアクションが売りのこの作品で「動く」のは最高に強い。ヴァッシュが撃つ!神父が撃つ!保険屋さんも撃つ!!心躍るバトル!!!それなのに主人公は人を殺さない主義。こんな作品、ほかにはない(知らない)。

600億$$(ダブドル) の男

600億$$(ダブドル) の男

 

ちなみに映画のほうも良かったので、そっちもおススメである。

劇場版 TRIGUN Badlands Rumble

劇場版 TRIGUN Badlands Rumble

 

※一部主語が大きすぎた表現を修正しました

コーヒー店のおじさんと、笑顔のこと

よくいく駅前のコーヒー店がある。

カウンターでおじさんが接客してくれる。たぶん店長だろうと思うが、この人がいつも笑わない。

接客業のひとは笑顔を絶やさないというイメージもあるが、このひとの笑顔をついぞ、見たことがない。

ただそれで不満を感じたことはない。

おじさんは黙々と、ビジネスライクに注文をとり、料理を用意し、お客に届ける。それでいいと思う。

突然昔の話になるが、30年以上前にパリ旅行へ行ったとき、地元のスーパーに入った。

そこではたくさんの人が買い物しているが、レジで接客を担当する人は誰一人として笑っていなかった。

妙齢のお姉さんもレジにいたが、堂々とイスに座り、笑顔一つ見せなかった。

当時は「外国ってすごいなあ」と他人事のような感想を持っていたが、日本もあれでいいと思う。もっと笑顔を減らしてほしい。笑顔は疲れる。※個人の感想です

コーヒー店のおじさんのように、ビジネスライクにして、笑顔に使うエネルギーをほかのことに使ってほしい。それでお客としては十分ありがたい。