読者です 読者をやめる 読者になる 読者になる

$shibayu36->blog;

プログラミングの話や自分の考えを色々と書いています。特にperl、emacsや読んだ本の話が多いです。

TypeScriptを2系にアップデートした

tech typescript

 TypeScript 2.0 is now available! | TypeScript ということで、自分のプロジェクトのTypeScriptを1.8.9から2.0.3に上げた。あんまり困ったことはなかったけど、少しだけハマったのでメモ。

コンパイルを通すための対策

readonly property対策

 今のプロジェクトは基本的に全てのファイルのユニットテストを書くという方針でやっているのだけど、いろんなテストを書こうとするとどうしても基本的には変更できないプロパティへの代入や、関数のモックなどをしたくなる。例えばwindowのinnerWidthを変更したり、_.throttleを置き換えたりである。

window.innerWidth = 800;
_.throttle = ...;

 もともとTypeScript 1系のときは、このような代入をしても特に怒られなかった。しかし、2系では代入するとコンパイルエラーになるようなreadonly propertyというものができた。例えば以下のようなものがreadonlyになる。

  • interface定義でreadonlyと宣言されたproperty
    • window.innerWidthはこれにあたる
    • readonly innerWidth: number; と宣言されている
  • import文で定義されたエンティティ
    • lodashはこれにあたる
    • import * as _ from "lodash";

詳しくは、https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#read-only-properties-and-index-signatures を参照のこと。


 このreadonly propertyによって、先に紹介したinnerWidthへの代入などがコンパイルに通らなくなった。これの解決を雑にやるならany型にキャストしてあげれば良いので、次のようにしてとりあえず解決した。

(<any>window).innerWidth = 800;
(<any>_).throttle = ...;

File name ... differs from already included file name ... only in casing対策

 1系を使っていたときから、もともとコンパイルオプションではforceConsistentCasingInFileNamesというコンパイルオプションをtrueにしていて、ファイル名の大文字小文字を区別するようにしていたのだが、1系のときはエラーにならなかったのに2系に上げたら突然エラーが出始めた。適当にエラーメッセージは書き換えているけど、以下のようなエラーが起こる。

File name '/users/shibayu36/development/src/github.com/hogeproject/src/ts/hoge.ts' differs from already included file name '../../../../../../../Users/shibayu36/development/src/github.com/HogeProject/src/ts/Hoge.ts' only in casing

 特にHoge.tsをhoge.tsとしてアクセスする部分はなかったのだけど、このようなエラーが出てしまう。


 コンパイラのコードを少し追いかけてみたのだけど、なぜこうなるのかというのがちゃんとわからなかったので、仕方なくforceConsistentCasingInFileNamesをfalseにする対応をした。いい方法があったら知りたい。

最終確認

 最終的にビルドをしたら、コンパイル結果が変わらなかった。ということで完了ということにした。

今後の予定

今後は2.0に新しく入った機能を徐々に入れていきたい。例えば

  • 型ファイルをnpmで管理する
  • strictNullChecksの有効化
  • noUnusedLocalsやnoUnusedParametersの有効化

などを入れたい。

「チームが機能するとはどういうことか」を読んだ

tech book

【2016/09/26 12:30補足】

 思ったよりこの記事が読まれてしまったので補足。ちょっと本についてネガティブなことを書いてしまったけど、僕個人が今の知識の状態で読んだ時に、1分間マネージャーシリーズなどの他の書籍である程度知っていた事もあって、文章を読む大変さに比べて満足度が低かったなあと感じただけでした。もし自分がマネージャをやっていて、かつなぜか部下への指示が多くなってしまい、自分の考える時間が少なくなってしまっているなあと思っている人は一読すると良いかもしれません。特にフレーミングの話は参考になると思います。

 ただ、個人的にはこの本は少し長々としているなとも思っているので、先に他の人が読んだ読書ブログやnaoyaさんのプレゼンを読んでから読むと良さそうです。さらに各章の最後にLessons & Actionsみたいなまとめがあり、その部分が章で言いたいことを端的に表しているので、先にそっちを読むと良いかもしれません。

 ちなみに僕は1分間マネージャーというシリーズがむちゃくちゃ好きで、マネージャーで自分の時間を取れないなあと思っている人はむしろそちらのほうをおすすめしたいです。この本は一つ100ページから200ページまでしか無くて、しかも小説っぽい形式でかなり平易にかかれているので、一瞬で読める割に学ぶことが多いです。特に以下の三つの本がおすすめ。

【2016/09/26 12:30補足終わり】

【ここから本題】

開発組織マネジメントのコツ // Speaker Deckにおすすめと書かれていたので読んだ。

個人的には結構微妙だった。チームマネジメントに関することで非常に良いことは書いてあると思う。しかし、この本でしか述べられていない言葉の定義を理解をしなければならなかったり、短く説明すればいいことを長々と説明していたりで、言っている内容の割に読むのが大変という感じだった。

正直なところ、この本で言いたかったことは上のスライドでかなりの部分が理解できる。なのでそちらを参照するくらいで良いのじゃないかなーと思った。また補足としていくつかのブログエントリを読んだら良さそう。

speakerdeck.com

読書メモ

一応最後に読書メモだけ載っけておく。

  • チーミングとは、新たなアイデアを生み、答えを探し、問題を解決するために人々を団結させる働き方 507
  • 成功しているチーミングは次の四つの特別な行動を伴う 958
    • 率直に意見を言う。チーミングの成功は、個人間でじかに、誠実な会話ができるかどうかにかかっている。会話には、質問すること、意見を求めること、過ちについて話すことが含まれる。
    • 協同する。協同の姿勢と行動があって初めて、チーミングはプロセスを推し進めることができる。これはチーミングを行う所定のグループのうちでも外でも言えることである。
    • 試みる。チーミングでは何度も試みが行われるが、これにより個人と個人の交流につきものの新奇さと不確実性を受け容れることになる。
    • 省察する。チーミングでは、プロセスと結果をしっかり観察し、明瞭に質問し、よく話し合うことが重視される。これは、毎日であれ、毎週であれ、あるいはそのプロジェクト特有のタイミングであれ、仕事のリズムに応じて常に行われる。
  • 次の四つの戦略は、対立を緩和し、チーミングの成功に欠かせない協調的な取り組みがしっかりできるようにするものである 1298
    • 対立の性質を見極める
    • 優れたコミュニケーションを具現化する
    • 共通の目標を明らかにする
    • 難しい会話から逃げずに取り組む
  • チーミングを促進する四つのリーダーシップ行動 1415
    • 学習するための骨組みをつくる
    • 心理的に安全な場をつくる
    • 失敗から学ぶ
    • 職業的、文化的な境界をつなぐ
  • 学習フレームを確立するための、四つのステップ 1867
    • 登録。プロジェクトのメンバーが熟慮の上で選ばれていることを伝える。プロジェクトの目的を伝える
    • 準備。職場を離れてセッションをひらき、新たな技術などの変化がもたらす結果について、気兼ねなく意見を交わす
    • 試行。新しい考え方や、プロセスや、ツールを試してみる。どんなことが起こるか細かく注意を払う
    • 省察。試行の結果について話し合う
  • 学習しながら実行することの土台 4034 ☆

「きょうも京都で京づくし」が出版されました & 読みました

以前このブログで、漫画のアシスタントをして感じたこと - $shibayu36->blog; という記事を書きましたが、その時に手伝った「きょうも京都で京づくし」という本が出版されました。

きょうも京都で京づくし (地球の歩き方コミックエッセイ)

きょうも京都で京づくし (地球の歩き方コミックエッセイ)

 この本は生まれてからずっと京都に住んでいる著者が、正月から大晦日までの一年をとおして、家族でどのように京都を楽しんでいるかをコミック形式で書いた本です。京都の伝統行事・地元のグルメ・穴場スポットなど、地元民だからこそ知っている情報が多く載っています。

 京都のメジャーな観光名所は載っていませんが、京都をさらに楽しむための情報が盛りだくさんの本になっているので、京都を数回観光したけど他に面白い所ないかなあとかという人におすすめです。他にも京都に数年住んでいて、観光できるところやごはんが美味しいお店がないかなあと思っている人にもおすすめできます。僕は京都に住んでもう10年くらいで、大学にいたときにはある程度京都の観光をしていた方なのですが、この本で紹介されている行事やスポットは初めて知るものが多かったです。


 僕が個人的に一番面白いなあと思ったのは「ミッドナイト念仏」の話です。あるお寺でひたすら木魚を叩き続けるというイベントの紹介なのですが、最初に想像していたイベントのイメージと全く違うものが出てきて衝撃を受けました。本当に狂った感じのイベントで行ってみたいという気にさせられました。
f:id:shiba_yu36:20160921110732j:plain:h400


 その他、穴場の苔スポットや紅葉スポット、祇園祭のマイナーな観光どころ、おすすめカフェなど、いろんな観光どころが載っています*1。京都をもっと楽しみたい人は是非買って読んでみてください!

f:id:shiba_yu36:20160921110817j:plain:h400

*1:僕も登場しているので興味があれば探してください