Masteries

技術的なことや仕事に関することを書いていきます.

PerlCon 2019に参加してきます

perlcon.eu

今年の1月, 2018年の振り返りをしたときに, 2019年は「海外に行く」というTryを挙げていました.

papix.hatenablog.com

それを果たすべく, 今月ラトビアのリガにて開催されるPerlCon 2019に登壇してきます. 登壇ということは, 言うまでもなく(?)何かしらの発表をするのですが, 今回はミスって主語がとても大きい「Perl in Japan」というタイトルで応募してしまったので, 今の日本におけるPerlの現状やはてなにおけるPerlの活用事例, 日本人CPAN authorが作った有用なモジュールの紹介や, JPAを含むPerlコミュニティの近況などについて発表し, 意見交換などができたらいいな... と思っています.

英語についてはまだまだ勉強中なので, 果たして大丈夫なのかな... という気持ちは強いのですが, こういうのは経験を積まないと伸びない領域でもあると思うので, 覚悟をきめて(?)参加してこようと思います. 感想などについては, またブログや勉強会などで共有していきたいと思っていますので, 是非お楽しみに.

【PR】

なお, 今回PerlCon 2019に参加するにあたっては, 現在所属している株式会社はてなより, 渡航費や宿泊費など支給してもらって, 業務として参加することになっています. そういうこともあるので, ちゃんとPerlCon 2019からいろいろ知見やPerlの現状など, しっかり持ち帰りたいですね...

さて, はてなでは, 望めばこのように海外カンファレンスへ業務で参加するチャンスを掴むことができます(もちろん, 予算の都合などもあるので万事叶う訳ではないですが...). 興味のある方はこちらからどうぞ!!!!!!!!

hatenacorp.jp

Scrapboxに書かれたテキストをいい感じにMarkdownっぽく変換するスクリプト

Scrapbox, 便利ですよね. 私も愛用しています. そんなScrapboxに書いたテキストを, Markdownっぽく変換したい時があると思います. ...これは普通に需要がありそうですね.

Scrapboxに書かれたテキストをいい感じにはてな記法っぽく変換するスクリプト - Masteries

Scrapbox <=> markdownも欲しい

2019/07/16 20:47
b.hatena.ne.jp

というわけで, こういうスクリプトを書きました:

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;

while (my $line = <STDIN>) {
    $line =~ s/^([\s\t]+)/"\t" x (length($1) - 1) . '- '/e;
    print $line;
}

このコードを, 例えば sb2md みたいな名前で保存しておいて, 後はScrapboxに書かれたテキストを適当にドラッグしてコピーして,

$ pbpaste | sb2md | pbcopy

...とかすれば, Markdownっぽく変換されたものがクリップボードに入っているので, 後はよしなにペーストすることができます. よかったですね.

あわせてよみたい

papix.hatenablog.com

Scrapboxに書かれたテキストをいい感じにはてな記法っぽく変換するスクリプト

Scrapbox, 便利ですよね. 私も愛用しています. そんなScrapboxに書いたテキストを, はてな記法っぽく変換したい時があると思います. ...あるんです.

というわけで, こういうスクリプトを書きました:

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;

while (my $line = <STDIN>) {
    $line =~ s/^([\s\t]+)/'-' x length($1) . ' '/e;
    print $line;
}

このコードを, 例えば sb2htn みたいな名前で保存しておいて, 後はScrapboxに書かれたテキストを適当にドラッグしてコピーして,

$ pbpaste | sb2htn | pbcopy

...とかすれば, はてな記法っぽく変換されたものがクリップボードに入っているので, 後はよしなにペーストすることができます. よかったですね.

余談: 正規表現のeオプション

上のコードのポイントは正規表現のeオプションを使っているところで, これは置換後の文字列をPerlのコードとして解釈して, その実行結果で置換してくれる... という挙動をします.

今回の場合, 正規表現が s/^([\s\t]+)/'-' x length($1) . ' '/e なので, ^([\s\t]+) にマッチしたものについて, '-' x length($1) . ' ' をPerlのコードとして実行した結果で置き換えてくれるわけです.

例えば, $line = ' sample'(sampleの前に半角スペース3つ) なら, $1 = ' '(半角スペース3つ) となるので, length($1) = 3となり, '---'' ' を文字列で結合した '--- 'がマッチした文字列と置き換えられる... ということになります.

という感じで, 正規表現にマッチしたものに対して, 任意のPerlコードを実行出来る正規表現のeオプションはかっなり強力です. 「これ正規表現で書き換えるの難しそうだな...」という時も, eオプションを使えばサクッと実現出来たりするので, 脳の片隅で覚えておくと良いかもしれません.

「人を動かす」を読んだ

いつの事だったか, 誰かが推薦していて買ったものの積み続けていた本を読みました. デール・カーネギーの「人を動かす」です.

人を動かす 新装版

人を動かす 新装版

本書は, 「人を動かす」, 「人に好かれる」, 「人を説得する」, 「人を変える」という観点で, うまく他人と接していくための原則(テクニック)を, 実例を盛り込みながら紹介してくれる本です. 内容としては, 以前読んだ「ハーバード流交渉術」と近しい(補足する)内容が多いように思いました. 読中の感想も似ていて, 突拍子のない内容は一切なく, 素朴というか, 手堅いというか, いろいろな意味で当たり前の事で, だからこそ案外意識出来ず, 日頃実施できていない... そういった原則が並んでいる気がします. 面白かったのは, 本を読みながら, 自分自身のこれまでの振る舞いや, 周囲にいた人たちの振る舞いを思い出すシーンがあって, 「無意識にこういう事していたなあ」とか, 「確かに, こういう振る舞いされると, お互いに, いい感じにやっていけたなあ...」といった気付きがありました. そういう意味での説得力もありましたね.

本書では, 「人を動かす」ためのいろいろな原則が紹介されていますが, その中でも印象深かったのは「誤りを指摘しない」でした. 結構, エンジニアという職種のはしくれとして仕事をしていると, 相手の誤りに気付いた時, そこに真っ直ぐにツッコんで正したくなる事が多いです. エンジニアどうしで会話している時などは, それでコミュニケーションがうまくいく時もありますが, 時と場合によってはそのツッコミによって相手が不快感を持ったり, あるいは警戒心を持ったりして, 結果としてそれ以降のコミュニケーションがうまくいかなくなる... という事も時折ありました. これは反省すべき点ですが, 自分自身も間違いを指摘された結果, 意気地になってしまったという経験は何度かあったりしますし.

そういった時の対応策の1つとして, 本書では(相手が明確に間違っていたとしても),

「恐らく私の間違いでしょう。私はよく間違います。一つ事実をよく考えてみましょう」

といった感じで, 相手と一緒に再考を促し, その結果として相手に対して「誤りを気づく手助けをする」のが良い, という事が書かれています. こういったコミュニケーションは, 正直に言えば面倒と思います. とは言え大事な会議(例えば, 部署間/会社間のリーダーが集まって相談や調整をする会議とか)で, 「それは間違っています!」とまっすぐにツッコミを入れて場の空気を凍りつかせるよりは, こういったアプローチで穏便に推めた方がトータルで良い結果になる, ということはありそうと思いました.

最後に, 本書で少しモヤっとしたところを挙げると, 先に「実例を盛り込みながら」各種の原則を紹介している, と述べました. その例が, 一部かなり出来すぎなものがあって, 「本当にそんなにうまくいくか...?」と思ったりした部分がありました. ...まあ, この辺りは, 本書で紹介されている原則が万事うまく有効に効く, という事はなくて, 原則を意識しながら生活したり, 仕事をしていると, 時折うまく"刺さる"場面があり, それを抜粋したものだ... と捉えると, 「確かにそういう事もありそう」という気持ちになるので, 自分自身そこまでの違和感にはなりませんでした.

今現在の自分自身にも活きる原則も多々ありましたが, 本書で紹介されている原則が本当に活きるのは, 今後自分自身チームを率いたり, あるいは今以上に部署間, 会社間のコミュニケーションをする機会が多くなった時ではないかと想像しています. そういった時に改めて本書を読み, その原則を意識出来ると, 意識しないより, うまい立ち振舞いが出来るようになるのではないかな, と思いました. 一方で, 他者とのコミュニケーションをもっと潤滑にしたい! ...と考えているなら, 「人を動かす」, 「人に好かれる」の辺りをつまみ食いするだけでも, 得るものはあるのではないかと思います.

次は, 「戦略思考コンプリートブック」を読んでいます.

GitHub.comでオーガニゼーションごとにメールの通知先を変更する

GitHub.comは個人のメールアドレスを使って登録しているのですが, この状態で会社のオーガニゼーションに所属し, 業務で利用するプライベートリポジトリで作業をすると, 個人のメールアドレスに業務に関するIssueやPull Requestの通知などがメールで届いてしまって, 「微妙では...?」と思っていました.

その最中, 先のcatatsuyさんのツイートを見て, 「マジで!?」と思ったのでやってみました. 備忘録兼ねて手順も乗せておきます.

メールアドレスの追加

GitHub.comの管理画面のEmailsで, 業務で利用するメールアドレスを登録します.

f:id:papix:20190706134356p:plain

しばらくすると, 確認のメールが送られてくるので, 「Verify email address」しましょう.

f:id:papix:20190706134352p:plain

メールアドレスの設定

続いて, GitHub.comのNotificationsで, 先程設定したメールアドレスを特定のオーガニゼーションの通知先として設定します. ページの下の方に, 「Custom routing」という設定項目があるので, ここで設定ができます.

f:id:papix:20190706134341p:plain

先程登録したメールアドレスを選択してあげればOKです.

f:id:papix:20190706134347p:plain