『Visual Studio Code 実践ガイド』を上梓しました

f:id:j74th:20200223113818j:plain:w300

VSCode の解説書、『Visual Studio Code 実践ガイド(技術評論社)』を上梓しました。 入れる価値がある!と思ったことを全部詰め込んだ結果、執筆に 1 年がかかり、さらに 400 ページと分厚くなりました。

gihyo.jp

誰に向けての本なのか

全ての VSCode ユーザのための本を作りました。

VSCode は毎月アップデートがあり、現在のバージョンも v1.42 です。 VSCode は直感的に操作ができるようにできているとはいえ、機能が豊富になり、どんな機能があってどうやって使うかを手軽に知ることが難しくなってきました。 この本により、VSCode がどんな機能を持っているか、どうやって操作することで機能が使えるのかを解説する本になっています。 VSCode に習熟した人も、まだ出会っていない機能があるのではないかと探すつもりで読んでいただけると思います。

また、実際に開発を行う時に必要なことは言語ごとに異なります。 筆者は、実際に Type Script、Go、Python のプロダクト開発で VSCode を活用しています。 第 2 部には、Typs Script でのフロントエンド開発、Go でのサーバ API 開発、Python でのサーバ API、Jupyter の使い方を、ハンズオン形式で解説しています。 各言語ごとにどんな機能が VSCode から得られるのか、VSCode を使って開発を始めるにはどんな準備が必要か、記述しています。

ざっくり構成

第 1 部「Visual Studio Code の基本」は VSCode の全機能を解説したものになっています。 Git の章では定番拡張機能である GitLens などの解説もしています。

第 2 部「実際の開発で Visual Studio Code を使う」では、Type Script、Go、Python を使った実践的な開発方法をハンズオン形式で解説します。

第 3 部「拡張機能の開発と Language Server Protocol」では、拡張機能ではどんな部分が拡張できるのか、その開発方法、マーケットプレイスで公開する方法について解説します。 そして、様々な言語ランタイムとエディターをつなぐ共通基盤となった LSP について、実際にやり取りされるデータを示しながらその動きを解説します。 最後には、LSP を使った VSCode拡張機能開発にまで踏み込みます。

この本の特徴

1. 言語別ハンズオンの章で各言語の様々なデバッグ実行のやり方を書いていること

なにかプログラムで躓いた時にはデバッグ実行が欠かせません。 しかし、デバッグ実行しようと思うと、その環境の整備に手間取ることが多いと思います。 VSCode でも、デバッグ実行が簡単にできるかと言われると、多くの設定が必要になります。 本書では、デバッグ実行できることを当たり前に感じてもらうよう、ユニットテスト、サーバプログラム、フロントエンドプログラムのそれぞれのデバッグ実行のやり方や、そのコツを解説しています。

2. 3 つの言語の使い方を解説していること

VSCode は様々な言語をサポートする万能エディタと言えます。 ただし、言語によって環境構築の仕方や、開発で必要となる機能は違います。 またデバッグに必要となるツールや設定も当然異なります。

一つの言語のためだけでは VSCode の解説書としては足りないと感じていました。 特に筆者が実プロダクトの開発で使っている Type Script、Go、Python ならば、それぞれをかなりのレベルで書くことができると思い、第 2 部の言語を選定しました。 すでにこの 3 つの言語で開発している人も、解説、本書を活用できると思います。

3. LSP の拡張機能を作ること

VSCode の解説書を作るからには、LSP を解説したいと思っていました。 LSP は拡張機能のくくりでプロトコルを解説し、 LSP を解説した書籍は、mattn san の Software Design の連載とこの本くらいなのではと思っています。 さらに、LSP の 1 つのプロトコルを実装する拡張機能開発まで進みます。

解説していないこと

まとめ

アップデートが毎月あり、盛り込めるだけ盛り込み、時間が立つほど機能が増え、それに追われる日々でした。 しかし、開発で使う機能はというと、開発の基盤になり得るほど充実してきており、解説書があっても良い時期になったのではないかと思います。

SRE NEXT 2020参加レポート

SRE NEXT 2020に参加したのでブログレポートを。

https://qiita.com/Hassan/items/6f7fb1c206f77716ee2a

全体の感想

SRE NEXTに参加するにあたって、アプリエンジニアとの対比として、運用の非機能要件を担うと決めたエンジニアとは、どのような心持ちなのかを聞きに来るつもりで参加しました。 様々な「実践したこと」が話されていて、凄く刺激になった。

話したこと

所属企業では、スポンサーを担っており、私はスポンサーセッションで以下の発表をしました。 AIをプロダクト化する組織で、実プロダクトにするために考えてやってきたことを駆け足で話させてもらいました。

タクシーxAIを支えるKubernetesとAIデータパイプラインの信頼性の取り組みについて https://www.slideshare.net/dena_tech/xaikubernetesai-sre-next-2020

聴講して印象に残っているもの

以下の感想は所属企業の考えではなく、私個人の感想です。

分散アプリケーションの信頼性観測技術に関する研究

https://speakerdeck.com/yuukit/a-study-of-sre?slide=17

SREは信頼性を制御することを前提に置いた一つのアプローチである

今まで非機能要件といわれてきたものに、工学として当てはめようとするアプローチがSREなんだという気づきを得た。

パフォーマンスを最大化するためのSREオンボーディング事例

https://speakerdeck.com/tkuchiki/sre-next-2020

SREとしてオンコールを受けられるようにするまで、組織でやっていることの事例。 この話は"新人に対して"であるが、私の課題にオンコールを受けられるエンジニアをどうやって増やして今の組織で回していくか、というのがあって、そこにつながるアプローチに思えて、参考になった。

Paractices for Making Alerts Actionable

https://speakerdeck.com/egmc/practices-for-making-alerts-actionable

アラートの計測を行い、定期的な振り返りで改善していった話。

スクラムを1年回して SREと開発組織がどう変わったのか

https://speakerdeck.com/licht110/sukuramuwo1nian-hui-site-sretokai-fa-zu-zhi-gadoubian-watutafalseka

開発とは異なるSREで、スクラムをまわして、タスクコントロールしていった事例。 優先度を数値にして、それを基準にプロダクトと握るのは凄く正しく、SREでもそれができるとの話が印象的だった。

ZOZO MLOps のチームリーディングとSRE (Engineering)

https://docs.google.com/presentation/d/1zEkR9Dm_epg7fxOCFE-asBsUlHDozwObsBEGAILiqic/

心理的安全性を下げる組織の作りを、ただ心理的安全性というだけではなく実践して文化にしていくのに感心した。 印象に残ったことは多いですが、振り返りたいと思ったのは以下のこと。

  • KPTその日にアクション
  • 1on1 でAction Itemの確認、ちゃんとやる
  • 文化として「技術力で殴る」
  • リーダーをボトルネックにしない

実践Observability

https://www.slideshare.net/toshihumianan/observability-224174523

本当に実践した内容を話してくれて、とても参考になる。 Release後もTestは続くという考え方とても良いと思う。 Istio入れて、どこでBlue/Greenするかとか、クラスター外もトレースできているの良いなと思う。

Webサービスを1日10回デプロイするための取り組み

https://speakerdeck.com/fujiwara3/sre-next-2020

だれでも安全に、即座にデプロイできる仕組みは開発体験に重要

これの実践するために何をしていったかというお話。

2019年をエンジョイしたソフトウェア6つ

2020年を迎え、2019年を振り返るために、2019年から特にお世話になったソフトウェアをまとめてみます。 ただし人様の役には立たないと思います。

1. VSCode Remote Development

リモートLinuxPythonインタプリタとか拡張機能を動かしながら、VSCodeのフロントエンドはmacOSWindowsで使えるようになる機能 https://code.visualstudio.com/docs/remote/remote-overview

今年開発環境が凄く快適だったのは、VSCode Remote Developmentのおかげが大きい。これにより、macOSWindowsのデスクトップを使いながら、全てLinuxのソフトウェアで開発ができるようになった。

会社PCは、macOSWindowsのどちらかという制限があったのを、Parallels DesktopUbuntu Serverを入れて、VSCodeのRemote SSH機能を使って、運用中。Docker for Macの辛さとか、開発のためだけにmacOSでライブラリのコンパイルしなきゃいけないのとか、そういうものから開放されて、Linuxの世界に引き込もれるようになったのは、ほんと大きい。Linuxは人権。まじおすすめ。

技術書典7でRemote Developmentの本を出しました。Boothで販売中→ https://74th.booth.pm/items/1575583

f:id:j74th:20200126142302p:plain

2. xonsh

Pythonでカスタマイズできるシェル。 https://xon.sh/

BashZshにしても、カスタマイズをするにはシェルスクリプトの世界に降りていかなければならない。それが、Pythonで書けると凄くカスタマイズが捗ります。

・プロンプトにKubernetesクラスタ、ネームスペースを表示する ・プロンプトにGitの情報をたくさん出す。現在のブランチ名にmasterの時は🌟マークを追加したり、cleanだとフクロウ🦉が褒めてくれるが、stashがあるとサボテン🌵🌵🌵が立つ。

こちらも技術書典6で本にしました。Boothで販売中→ https://74th.booth.pm/items/1317300

f:id:j74th:20200126142328p:plain

3. Homebrew(Linux)

Linuxでも使えるパッケージマネージャ

Linuxに環境を移してもすぐに開発が立ち上がったのは、HomebrewがLinuxでも使えたことが大きい。昔はLinuxbrewはmacOSのHomebrewとは別リポジトリだったが、今は同じHomebrewになり、基本的にmacOSのHomebrewで使えていたパッケージがそのままLinuxでもそのまま使えることになった。

4. Vivlio Style

CSS組版エンジン https://vivliostyle.org/ja/

Re:viewから移行し、技術書典7ではこれで2冊を作成。Re:viewは非常に完成度の高い本ができるけれど、Re:view以上の表現力が欲しくなったらTeXに降りていかなければならず、それは気軽ではなかった。CSS組版になった今では、Markdownで表現力が足りなくなったら、HTML+CSSでなんとかなるようになりました(ヘッダーに節見出しが載せられないなど、課題はあるけれど)。

5. Emby

自分専用の音楽ストリーミングサービスを立てることができる https://emby.media/index.html

手持ちのCDを全部スマホに入れることは不可能だけど、自宅サーバ上になら全部入れられて、好きな時に聴くことができる。 M3で同人CDを30枚くらい買ったのを聞けるようにして、これがなかなか便利でした。Google Play Musicでも良いのだけれど、いつまでサービス続くかわからないので。

6. QMK Firmware

自作キーボード用ファームウェア。独自のキーバインドを設計できる。

冬コミでLily58に一目惚れして、自作キーボードに入門。Linux Desktop用とmacOS用に設定を切り替えられるようにして使っています。

2019年の休日はほとんど本の執筆に奪われたので、2020年は溜まったアイディアをソフトウェアにしていきたい。

2019年からではないけれど2019年もお世話になったソフトウェア VSCode, Kubernetes, Python, Go, Fabric(Invoke), Ubuntu Server