ここ数日VSCodeの拡張機能開発をやり始めた。 VS Code API | Visual Studio Code Extension API 日本語の解説記事はあんまりないので、数少ない手本とこの公式のAPIガイドとにらめっこしてちまちま進んでいる。 TypeScriptにそこそこ慣れたので、型で説明されている部分も大分わかるようになってきた。進歩を感じる。
というか、API全般そうだけど、JavaScriptだけやってても説明がよくわからないのではという感じがする。 TypeScriptを使えるようになるというのは「読む」ために必要なことなのかもしれない。
あ、でもJSDocがわかればいいのか。 いずれにしろどちらかの方法で型付けを理解する必要があるのだろう。
あとVSCodeのデバッグ機能というのを初めて使っている。 これまでデバッグ機能は「よくわからないから触らないでおこう」という感じだったので、前進した感がすごい。実績解除というやつか。ゲームで鍵がかかっていた機能が解放されたみたいな。 といっても今のところは「拡張機能開発ホスト」というのを立ち上げる用途しか理解していない。とりあえずはそれでいいかなと思う。そのうち勉強します。
コードブロックを使えるし具体的なコードのメモも書けるな、と思ったけど、それなら言語やAPIごとにトピックを作った方がわかりやすいか。 どんなことをしたかという日記・日誌はここに書き、具体的なコードのメモ・ノートはそれぞれトピックを立てることにしよう。
VSCode拡張機能開発についての具体的なコードのメモなどはこっちに。 →VSCode拡張機能開発ノート
自作アプリケーション(デジタルノート系)を色々作ってきたけど、結局今ガッツリ使っているのは日記用に作ったものひとつだけ…。 前にブログに書いた、HyperDatabaseと名付けた自分的に高機能なアプリケーションは、自分の生活の状況によって使い勝手が変わってくるというのが自分でわかっていて、作った時はよかったけど今はちょっと違うかなという感じで休眠している。また使う時が来るだろうとは思う。
まあ、実際に作ったアプリケーションがどれだけ活躍するかよりも、自作の試みを通してアプリケーションというものについてちゃんと考えたことで既存のアプリケーションの使い方が変わっていくことの方が重要だなと思う。
あと自作よりカスタマイズの方が難しくて、ScrapboxのUserScriptなりChromeなりVSCodeなりを自分で機能拡張できるようになったのは本当に大きい。 やっぱり、土台の頼りない完全自家製ツールで頑張るよりも、ちゃんとしたものを自分仕様に近づけられた方が安心感があるし有用だと思う。でもそれができるようになるにはツールを自作しまくって鍛錬を重ねることが必要だったと感じる。
VSCode拡張機能は今のところ、
あたりができるようになった。 そんなに難しくはないのだと思うけど、APIと格闘するということ自体がそんなに慣れていないことなのでなかなか時間がかかる。
少し前から諸事情によりしばらくの間マウスを使いにくい環境になってしまって、作業効率が著しく落ちている。 文章はそんなに影響ないんだけどプログラミングがやりにくい…。 あまり「全てキーボードで完結!」みたいなことやっていないからマウスの有無の影響が大きい。
TypeScriptでオブジェクトの全プロパティを走査するときの注意点 | JavaScript/TypeScriptメモ
TypeScriptでfor...inを使うと面倒だなあと思っていた。あんまりスッキリした解決策はないのか。
JavaScriptのMapオブジェクトってどういうタイミングで使えば良いんだろうと思ってたけど、ObjectをObjectとして使うことを考えるとMap的に使っているものはObjectにしないでMapにすべきということか。
初心者的に「オブジェクト」を考えた時、オブジェクトらしさではなくあくまで「キーとプロパティの組」を束ねたものとしてイメージしている。それがMapだということかな。
ふむ
>> 12の問題はMapで解決するのだろうか。
でもJSON化は難しいか? というか、オブジェクトへの変換を挟む必要が出てくるか。 javascript Mapからjsonに変換する | mebee
// Map→Object const map = new Map([ [1,'aaa'], [2,'bbb'], [3,'ccc'] ]); const obj = Object.fromEntries(map); const json = JSON.stringify(obj); // Object→Map const obj2 = JSON.parse(json); const arr = Object.entries(obj2); const map2 = new Map(arr);
これだとmapではkeyがnumberだったけどObject.fromEntries()の時点でstringになるのか。
keyに何でも設定できる、ということもちゃんと考える必要があるな。
JavaScriptのクラスとインスタンスのことをもうちょっと柔軟に考える必要があるかもしれない。
Smalltalk(Pharo)に触って感化された。
オブジェクトとは何か、ということについて考えるようになった。
JavaScriptのObjectの仕組みもようやくわかってきた。プロパティとメソッドが読めるようになってきた。
Object - JavaScript | MDN
標準組み込みオブジェクト - JavaScript | MDN
JavaScriptの標準組み込みオブジェクト、多っ! 知らないことがいっぱいある…。
>> 13>> 17
有効かどうか、良いコーディングかどうか、というより、もっと色々遊びたいなという感じ。自分の遊び場を広げていきたい。
関連>> 20
Generator - JavaScript | MDN
あ~、今見たら使い所がちょっとわかったかもしれない。どう実装すればいいのかずっとわからなかったことが、これで解決するんじゃないか。
関連>> 13>> 20
WeakMap と WeakSet
はあ、なんとなーくわかった。
Symbolっていつ使うんだろうと思ってたけど…。
【JavaScript】 シンボル(Symbol)とは?使い方を解説します
使い所はなさそうかな。
JavaScript互換性の要!Symbol(シンボル)について|もっこりJavaScript|ANALOGIC(アナロジック)
シンボルは私たちのようなJavaScriptを使ってコードを書く側の人間ではなく、JavaScriptの仕様策定側にとって最も必要な仕組みだった、というわけですね。
なるほど。
ECMAScript6にシンボルができた理由 - Qiita
そんな訳で、ECMAScriptの仕様策定側にとってシンボルは非常に重要。だが逆に言えば、使うライブラリを自分達で決められ、自分達で書いたアプリを自分達でテストできる一般の開発者は、名前の衝突なんてどうとでも回避してきたわけで、今更シンボルが使えてもそんなに嬉しいことはないと思われる。
Functionのapply,call,bindってよくわかってなかったけどなんとなくわかった気がしないでもない。
なんでもかんでもオブジェクトのメンバー化してまとめる期がちょっと前までマイブームだった。クラスでそうしていたのを、インスタンス化しないオブジェクトでもそうしてみようと思ってやっていた。 そのオブジェクト内で完結させる、という発想を自分の中で定着させるにはとても役立ったが、オブジェクトだとprivateに設定できないので外からアクセスするメソッドがどれかがパッとわからないという欠点があった。
現時点では、即時関数を使ってメソッドをまとめたオブジェクトを返す形に落ち着いている。 最初からこうしていればよかったのになあ。
これをクロージャというわけだ。
textarea内でショートカットキーを使った時に色々便利なことが起こるように機能を作っているんだけど、Markdownのtable記法の処理ができるようになって我ながらすごいものを作ったという気分。 行追加、列追加、列の入れ替えができるようになった。
offset類の計算がどうも苦手で頭がこんがらがったが、テストをちょこちょこやって正しいっぽい挙動を作れた。 結構複雑な処理になった…。
不適切なコンテンツとして通報するには以下の「送信」ボタンを押して下さい。 管理チームへ匿名通報が送信されます。あなたが誰であるかを管理チームに特定されることはありません。
どのように不適切か説明したい場合、メッセージをご記入下さい。空白のままでも通報は送信されます。
通報履歴 で、あなたの通報と対応時のメッセージを確認できます。
ここ数日VSCodeの拡張機能開発をやり始めた。
VS Code API | Visual Studio Code Extension API
日本語の解説記事はあんまりないので、数少ない手本とこの公式のAPIガイドとにらめっこしてちまちま進んでいる。
TypeScriptにそこそこ慣れたので、型で説明されている部分も大分わかるようになってきた。進歩を感じる。
というか、API全般そうだけど、JavaScriptだけやってても説明がよくわからないのではという感じがする。
TypeScriptを使えるようになるというのは「読む」ために必要なことなのかもしれない。
あ、でもJSDocがわかればいいのか。
いずれにしろどちらかの方法で型付けを理解する必要があるのだろう。
あとVSCodeのデバッグ機能というのを初めて使っている。
これまでデバッグ機能は「よくわからないから触らないでおこう」という感じだったので、前進した感がすごい。実績解除というやつか。ゲームで鍵がかかっていた機能が解放されたみたいな。
といっても今のところは「拡張機能開発ホスト」というのを立ち上げる用途しか理解していない。とりあえずはそれでいいかなと思う。そのうち勉強します。
コードブロックを使えるし具体的なコードのメモも書けるな、と思ったけど、それなら言語やAPIごとにトピックを作った方がわかりやすいか。
どんなことをしたかという日記・日誌はここに書き、具体的なコードのメモ・ノートはそれぞれトピックを立てることにしよう。
VSCode拡張機能開発についての具体的なコードのメモなどはこっちに。
→VSCode拡張機能開発ノート
自作アプリケーション(デジタルノート系)を色々作ってきたけど、結局今ガッツリ使っているのは日記用に作ったものひとつだけ…。
前にブログに書いた、HyperDatabaseと名付けた自分的に高機能なアプリケーションは、自分の生活の状況によって使い勝手が変わってくるというのが自分でわかっていて、作った時はよかったけど今はちょっと違うかなという感じで休眠している。また使う時が来るだろうとは思う。
まあ、実際に作ったアプリケーションがどれだけ活躍するかよりも、自作の試みを通してアプリケーションというものについてちゃんと考えたことで既存のアプリケーションの使い方が変わっていくことの方が重要だなと思う。
あと自作よりカスタマイズの方が難しくて、ScrapboxのUserScriptなりChromeなりVSCodeなりを自分で機能拡張できるようになったのは本当に大きい。
やっぱり、土台の頼りない完全自家製ツールで頑張るよりも、ちゃんとしたものを自分仕様に近づけられた方が安心感があるし有用だと思う。でもそれができるようになるにはツールを自作しまくって鍛錬を重ねることが必要だったと感じる。
VSCode拡張機能は今のところ、
あたりができるようになった。
そんなに難しくはないのだと思うけど、APIと格闘するということ自体がそんなに慣れていないことなのでなかなか時間がかかる。
少し前から諸事情によりしばらくの間マウスを使いにくい環境になってしまって、作業効率が著しく落ちている。
文章はそんなに影響ないんだけどプログラミングがやりにくい…。
あまり「全てキーボードで完結!」みたいなことやっていないからマウスの有無の影響が大きい。
TypeScriptでオブジェクトの全プロパティを走査するときの注意点 | JavaScript/TypeScriptメモ
TypeScriptでfor...inを使うと面倒だなあと思っていた。あんまりスッキリした解決策はないのか。
JavaScriptのMapオブジェクトってどういうタイミングで使えば良いんだろうと思ってたけど、ObjectをObjectとして使うことを考えるとMap的に使っているものはObjectにしないでMapにすべきということか。
初心者的に「オブジェクト」を考えた時、オブジェクトらしさではなくあくまで「キーとプロパティの組」を束ねたものとしてイメージしている。それがMapだということかな。
ふむ
>> 12の問題はMapで解決するのだろうか。
でもJSON化は難しいか? というか、オブジェクトへの変換を挟む必要が出てくるか。
javascript Mapからjsonに変換する | mebee
これだとmapではkeyがnumberだったけどObject.fromEntries()の時点でstringになるのか。
keyに何でも設定できる、ということもちゃんと考える必要があるな。
JavaScriptのクラスとインスタンスのことをもうちょっと柔軟に考える必要があるかもしれない。
Smalltalk(Pharo)に触って感化された。
オブジェクトとは何か、ということについて考えるようになった。
JavaScriptのObjectの仕組みもようやくわかってきた。プロパティとメソッドが読めるようになってきた。
Object - JavaScript | MDN
標準組み込みオブジェクト - JavaScript | MDN
JavaScriptの標準組み込みオブジェクト、多っ!
知らないことがいっぱいある…。
>> 13>> 17
有効かどうか、良いコーディングかどうか、というより、もっと色々遊びたいなという感じ。自分の遊び場を広げていきたい。
関連>> 20
Generator - JavaScript | MDN
あ~、今見たら使い所がちょっとわかったかもしれない。どう実装すればいいのかずっとわからなかったことが、これで解決するんじゃないか。
関連>> 13>> 20
WeakMap と WeakSet
はあ、なんとなーくわかった。
Symbolっていつ使うんだろうと思ってたけど…。
【JavaScript】 シンボル(Symbol)とは?使い方を解説します
使い所はなさそうかな。
JavaScript互換性の要!Symbol(シンボル)について|もっこりJavaScript|ANALOGIC(アナロジック)
なるほど。
ECMAScript6にシンボルができた理由 - Qiita
Functionのapply,call,bindってよくわかってなかったけどなんとなくわかった気がしないでもない。
なんでもかんでもオブジェクトのメンバー化してまとめる期がちょっと前までマイブームだった。クラスでそうしていたのを、インスタンス化しないオブジェクトでもそうしてみようと思ってやっていた。
そのオブジェクト内で完結させる、という発想を自分の中で定着させるにはとても役立ったが、オブジェクトだとprivateに設定できないので外からアクセスするメソッドがどれかがパッとわからないという欠点があった。
現時点では、即時関数を使ってメソッドをまとめたオブジェクトを返す形に落ち着いている。
最初からこうしていればよかったのになあ。
これをクロージャというわけだ。
textarea内でショートカットキーを使った時に色々便利なことが起こるように機能を作っているんだけど、Markdownのtable記法の処理ができるようになって我ながらすごいものを作ったという気分。
行追加、列追加、列の入れ替えができるようになった。
offset類の計算がどうも苦手で頭がこんがらがったが、テストをちょこちょこやって正しいっぽい挙動を作れた。
結構複雑な処理になった…。