msfukuiの日記

おおまさのみみはそらのみみ。

TDD by example for TypeScript をやってみた

VSCode で書く TypeScript をもう少し手に馴染ませたいなと思い、手元にあった書籍「テスト駆動開発」を TypeScript で写経してみました。

github.com

shop.ohmsha.co.jp

もともと初版も持っていて、XP に興味を持っていたかなり以前に一通り読んではいたのですが、改めて読み進めてみるとほぼ頭に入っていなかったことに気がつきました。書籍の中でも書かれていますが、コードを書いてみて初めて気がつくことがいっぱいあると改めて実感します。

書いていてただただ楽しい。最初の commit が 12/8 なので一ヶ月ほどちょこちょこと戯れていた感じです。最後は帰省先の実家で子どもたちが遊んでいる隣で、一緒に楽しい道具で遊んでいる気分でした。終わるのが勿体無い気分。

これも書籍内に書かれていたことですが、まるで隣で Kent Beck さんがペアプロしてくれている気分で読み進めることができ、凄腕プログラマーの頭の中を少しだけ見せてもらった気になれました。

次は積まれている「プログラムの数学」を読んだ後、アルゴリズム本か、もうちょっと実用的に Vue.js の本に進みたいなって思っています。

www.hyuki.com

追記(2019-01-04)

読んでいて印象に残ったフレーズがあった。「第 32 章 TDD を身につける」の「 TDD は誰のものか」からの一節。

いま「素朴」と言ったが、そこにはいささか誇張が含まれている。素朴とは、きれいなコードさえ書ければ成功するという考え方だ。実際には、優れたエンジニアリングがプロジェクトの成功に占める割合は 20% といったところだろう。お粗末なエンジニアリングはプロジェクトを間違いなく破綻させるが、普通のエンジニアリングであっても、残りの 80% がしっかりしている限り、プロジェクトを成功へ導きうる。

仕事として少しでもコードを書いていると、とても実感として意識することだと思う。プロジェクトは、たくさんのプロフェッショナルな人たちが、目指すべき一つの価値を練り上げていく場だと思うし、その中で自分は、他の人たちの考え方・やり方を尊重しながら、プロとしてより優れたエンジニアリングを提供し続けられる人でありたい。

VSCode extension 作ってみた。

昨日、社内のLT大会があったので、せっかくなので、先日作ってみた [EOF] を VSCode のエディタ領域の一番最後に表示するだけの extension について、スライドにまとめて説明してみた。

VSCode extension 作ってみた

TypeScript たのしー、で話すつもりだったのだけど、まとめてみたら TypeScript な要素は皆無だった。。

over age 枠でお話させていただいたのだけど、若手のみなさんのお話が漏れなくすごくて、僕は今後何で食べていけばいいのかなー、という気持ちになりながら、でも、とても楽しかったです!

そういえばスライドの保存に github.io を初めて設定して使ってみたのだけど、レポジトリとパスの紐付けとかとても自然に設定できる様になってて、とてもよかった。これまで gist で markdown な感じだったけど、今後もスライド置き場に使っていきたい。master ブランチを設定できるのもシンプルでよい感じ。

POSIXの仕様では「テキストファイルの末尾は改行(newline)で終わる」のが正しい、を確認してみた。

唐突ですが、先日、エディタ領域のファイル末尾に [EOF] を表示するだけの VSCode extension を作ってみたのですが、そのもともとの動機が、テキストファイルの最後は改行で終わりたい→それエディタで見える様にしたい、という自分の好みから始まっていて、いろいろ調べていると、以下の様なお話があることを知りました。

POSIX のテキストファイルの仕様では、テキストファイルは行か行の集合であり、行はnewlineで終わる、と定義されている

だから Vim で末尾が改行コードでないファイルを開くと警告が出るんだなー、ということを今更ながら知ったのですが、以下のブログの記述を参考に、おおもとの定義はどうなっているのかな、と思って確認してみました。

yuu.nkjmlab.org

2004年時点の仕様

The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition

http://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap03.html

によると、

3.205 Line

A sequence of zero or more non- s plus a terminating .

となっていて、

3.392 Text File

A file that contains characters organized into one or more lines. The lines do not contain NUL characters and none can exceed {LINE_MAX} bytes in length, including the . Although IEEE Std 1003.1-2001 does not distinguish between text files and binary files (see the ISO C standard), many utilities only produce predictable or meaningful output when operating on text files. The standard utilities that have such restrictions always specify "text files" in their STDIN or INPUT FILES sections.

なので、line は改行で終わり、テキストファイルは1つ以上の行のまとまりなので、テキストファイルの末尾はで終わるということで納得。(えいごむずかしい。)

ところで今の最新の仕様

The Open Group Base Specifications Issue 7, 2018 edition IEEE Std 1003.1-2017 (Revision of IEEE Std 1003.1-2008)

The Open Group Base Specifications Issue 7, 2018 edition

を眺めてみると、

3.206 Line

A sequence of zero or more non- characters plus a terminating character.

...

3.403 Text File

A file that contains characters organized into zero or more lines. The lines do not contain NUL characters and none can exceed {LINE_MAX} bytes in length, including the character. Although POSIX.1-2017 does not distinguish between text files and binary files (see the ISO C standard), many utilities only produce predictable or meaningful output when operating on text files. The standard utilities that have such restrictions always specify "text files" in their STDIN or INPUT FILES sections.

となっていて、後者の表現が、0個以上の行のまとまり、と微妙に表現が変わっていて、で終わらないことを許容するようになったようにも読める。

ここ、この表現になったのはもうちょっと背景を含めて知りたいと思ったのでした。

プログラム最適化の法則(Rules of Optimization)の初出について少し調べてみた。

まだ調べている途中なので、覚書メモです。

今朝たまたま以下の資料を拝見していて、

speakerdeck.com

6枚目のスライドにあった「パフォーマンス対策一般論」の最初の二つの法則、よく目にはするのだけど、いかにもハッカーぽい格言で、ふと初出はどこなのかなって思って、少しだけ調べてみた。

まず、日本語だと、最適化 (情報工学) - Wikipedia の末尾に、

「プログラム最適化の第一法則: 最適化するな。プログラム最適化の第二法則(上級者限定): まだするな。」 - Michael A. Jackson

という形で記述がある。

こちらの記述によると、

Michael A. Jackson - Wikiquote

以下の書籍からの引用で、

Michael A. Jackson. Principles of Program Design, Academic Press, 1975

原文は以下とのこと。

Rules of Optimization:

Rule 1: Don't do it.

Rule 2 (for experts only): Don't do it yet.

この書籍、邦訳は以下みたい。

鳥居宏次訳, “構造的プログラム設計の原理,” 日本コンピュータ協会, 1980.

どんな文脈で出てくる文章なのか気になったので、別途図書館で借りて読んでもうちょっと理解を深めてみたいと思いました。

Michael A. Jackson さんのホームページ Michael Jackson Software Development のタイトルにちょっと笑ってしまった。有名人と同じ名前だといろいろ大変なんだろうなあ。。

2019-01-24 追記

近所や帰省先の図書館で検索してみたけどヒットせず、思い直してアマゾンさんをみてみるとありました!(普段使わないから気がつかなかった。)

www.amazon.co.jp

古書扱いで、現時点で最低価格が ¥11,723 ..。さすがにちょっと手が出ない..。

前々から行ってみたいと思っていた国会図書館にみんなで行ってみるかなー。

「ヤフーの1on1」を読みました。

お仕事で、チームのみなさんと今後どうして行こうかな、そういえば 1 on 1 をやって確かめてみるのはどうだろう、と思って一回やってみたのだけれど、そもそもなんでやるんだっけ、、これみんなの役に立ってるのかな、、などもやもやしたので、会社の本棚で見つけた本をお借りしてみた。(長い。

奥さんと子ども達がイオンさんでお買い物をしている間にささっと読めるくらいの分量で、内容もとてもシンプルにまとまっていて、当初思っていたよりもとても軽く読めた。

以下、gist にメモした内容をこちらにも転記してみる。

気になったフレーズ、考え方など

  • 1 on 1 の実施の意図は、実施する相手の成長を支援すること。プロジェクトの状況を探って解決に導くことではない。

  • 振り返りの機会でもある。

  • 人事の仕事は、会社に対して中長期的な視点から貢献できる。短期的な事業上の売り上げ・利益目標やプロダクトの成功とは別の視点を持てる。

  • 1 on 1 をあえて制度として強制する。コミュニケーションしなければならない言い訳・きっかけを与える。

  • 実施の間隔は、1〜2週間に一度、30分程度を推奨。

  • 1 on 1 チェックというアセスメントの仕組みがある。部下が回答した結果が集計されて上司にフィードバックされる。

  • 指標を「内省効果」「気づき」「キャリア自律」「目標達成・評価」で点数化。例はこのような感じ。

    • 「内省効果」:「仕事を通して得た経験を定期的に振り返る機会となっている」

    • 「有効な気づき」:「対話を通して新しい行動に繋がる気づきが得られている」

    • 「キャリア自律」:「適切なタイミングで今後のキャリアを描くための支援が得られている」

    • 「目標達成・評価」:「業務遂行上の目標達成に向けた支援が得られている」

  • 1〜4で段階評価。1: 当てはまらない、2: あまり当てはまらない、3: やや当てはまる、4: 当てはまる

  • それぞれ 0, 33, 67, 100 で数値化して分布人数をかけて100点満点で数値化。

  • 指標とは別に定性の「コメント」、「総合質問」(1 on 1が役になっているかどうかを五段階で選択)がある。

  • どれも全社平均が併記されている。

  • 点数が低いマネージャーは研修でフォローする。

  • アセスメントは3ヵ月単位。

  • 導入時は、トップダウンで。適応できない人は管理職を降りてもらう。これこそがトップからの明確なメッセージ。適材適所である。

  • これとは別に定期で従業員満足度評価を実施している。

  • 「事業戦略上の差別化要因になるから。」

  • 「人が資産」が前提。メーカーは人への投資が後になりがち。

個人的な感想

  • 実施の意図が、相手の成長を支援するということが繰り返し述べられていて、実施する上での一番重要な意識するべきポイントと感じた。

  • ベースとなる給与がある程度高く満足度が高いことを前提として、人に対してさらにやる気を引き出し、やりたい仕事に自主的に取り組んでもらうための仕掛けだと思った。

  • 逆に、給与が十分ではなく、立場が平等でない(正社員と派遣、請負、契約社員など)立ち位置で、1 on 1 のみでその状況を改善するのは当たり前だけど難しい。

  • 人事的メッセージ強い。

まだちゃんと始めてないのにこんなことを書くのもあれですが、導入時に読むのにとてもいい本だと思いました。もっとずっと深い何かがあって、そのほんの表面だけが顔を出してにっこりしている感じ。(怖い

はてなダイアリーから引っ越してみました。

はてなダイアリーが終了する、という記事を拝見して、今更ながら引っ越してみました。

久々に見てみたら、2年も放置してたのか..。

そしてインポート機能は一時停止中とのことで、今しばらくお待ちしています。