のらてつの雑記帳 検索除外

プログラミング日記

30 コメント
views
0 フォロー

現在使っている言語

  • JavaScript/TypeScript
  • (AutoHotkey)

取り組んでいること

  • HTML+CSS+JavaScript+ローカルサーバーで自作Webアプリ
    • (前はElectronを使っていたが今はWebブラウザ+ローカルサーバー)
  • Chrome拡張機能開発
  • VSCode拡張機能開発
  • Reactの勉強
noratetsu
作成: 2023/04/16 (日) 21:35:04
最終更新: 2023/04/17 (月) 09:29:52
通報 ...
1
noratetsu 2023/04/16 (日) 21:41:09

ここ数日VSCodeの拡張機能開発をやり始めた。
VS Code API | Visual Studio Code Extension API
日本語の解説記事はあんまりないので、数少ない手本とこの公式のAPIガイドとにらめっこしてちまちま進んでいる。
TypeScriptにそこそこ慣れたので、型で説明されている部分も大分わかるようになってきた。進歩を感じる。

3
noratetsu 2023/04/16 (日) 21:45:08 >> 1

というか、API全般そうだけど、JavaScriptだけやってても説明がよくわからないのではという感じがする。
TypeScriptを使えるようになるというのは「読む」ために必要なことなのかもしれない。

4
noratetsu 2023/04/16 (日) 21:46:23 >> 3

あ、でもJSDocがわかればいいのか。
いずれにしろどちらかの方法で型付けを理解する必要があるのだろう。

2
noratetsu 2023/04/16 (日) 21:43:28

あとVSCodeのデバッグ機能というのを初めて使っている。
これまでデバッグ機能は「よくわからないから触らないでおこう」という感じだったので、前進した感がすごい。実績解除というやつか。ゲームで鍵がかかっていた機能が解放されたみたいな。
といっても今のところは「拡張機能開発ホスト」というのを立ち上げる用途しか理解していない。とりあえずはそれでいいかなと思う。そのうち勉強します。

5
noratetsu 2023/04/17 (月) 08:37:18

コードブロックを使えるし具体的なコードのメモも書けるな、と思ったけど、それなら言語やAPIごとにトピックを作った方がわかりやすいか。
どんなことをしたかという日記・日誌はここに書き、具体的なコードのメモ・ノートはそれぞれトピックを立てることにしよう。

6
noratetsu 2023/04/17 (月) 08:41:07 修正

VSCode拡張機能開発についての具体的なコードのメモなどはこっちに。
VSCode拡張機能開発ノート

7
noratetsu 2023/04/17 (月) 21:27:07

自作アプリケーション(デジタルノート系)を色々作ってきたけど、結局今ガッツリ使っているのは日記用に作ったものひとつだけ…。
前にブログに書いた、HyperDatabaseと名付けた自分的に高機能なアプリケーションは、自分の生活の状況によって使い勝手が変わってくるというのが自分でわかっていて、作った時はよかったけど今はちょっと違うかなという感じで休眠している。また使う時が来るだろうとは思う。

8
noratetsu 2023/04/17 (月) 21:31:50 >> 7

まあ、実際に作ったアプリケーションがどれだけ活躍するかよりも、自作の試みを通してアプリケーションというものについてちゃんと考えたことで既存のアプリケーションの使い方が変わっていくことの方が重要だなと思う。

9
noratetsu 2023/04/17 (月) 21:32:05 >> 7

あと自作よりカスタマイズの方が難しくて、ScrapboxのUserScriptなりChromeなりVSCodeなりを自分で機能拡張できるようになったのは本当に大きい。
やっぱり、土台の頼りない完全自家製ツールで頑張るよりも、ちゃんとしたものを自分仕様に近づけられた方が安心感があるし有用だと思う。でもそれができるようになるにはツールを自作しまくって鍛錬を重ねることが必要だったと感じる。

10
noratetsu 2023/04/17 (月) 21:46:34 修正

VSCode拡張機能は今のところ、

  • 左サイドメニューにアイコン設置
  • 左サイドパネルの表示
    • 任意のデータでツリー構造作成(Tree View)
      • 開いているmdファイルのフロントマターのデータをサイドパネルにツリー構造で表示
  • 絞り込んだファイル群を選択肢としたクイックオープン構築
    • 選択でそのファイルを開く

あたりができるようになった。
そんなに難しくはないのだと思うけど、APIと格闘するということ自体がそんなに慣れていないことなのでなかなか時間がかかる。

11
noratetsu 2023/04/18 (火) 22:12:40

少し前から諸事情によりしばらくの間マウスを使いにくい環境になってしまって、作業効率が著しく落ちている。
文章はそんなに影響ないんだけどプログラミングがやりにくい…。
あまり「全てキーボードで完結!」みたいなことやっていないからマウスの有無の影響が大きい。

12
noratetsu 2023/04/29 (土) 20:49:22

TypeScriptでオブジェクトの全プロパティを走査するときの注意点 | JavaScript/TypeScriptメモ

TypeScriptでfor...inを使うと面倒だなあと思っていた。あんまりスッキリした解決策はないのか。

13
noratetsu 2023/04/29 (土) 20:51:32

JavaScriptのMapオブジェクトってどういうタイミングで使えば良いんだろうと思ってたけど、ObjectをObjectとして使うことを考えるとMap的に使っているものはObjectにしないでMapにすべきということか。

初心者的に「オブジェクト」を考えた時、オブジェクトらしさではなくあくまで「キーとプロパティの組」を束ねたものとしてイメージしている。それがMapだということかな。

15
noratetsu 2023/04/29 (土) 21:38:01 修正 >> 13

>> 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になるのか。

16
noratetsu 2023/04/30 (日) 09:05:48 >> 13

keyに何でも設定できる、ということもちゃんと考える必要があるな。

17
noratetsu 2023/04/30 (日) 11:00:12

JavaScriptのクラスとインスタンスのことをもうちょっと柔軟に考える必要があるかもしれない。

Smalltalk(Pharo)に触って感化された。

19
noratetsu 2023/04/30 (日) 11:04:36 >> 17

オブジェクトとは何か、ということについて考えるようになった。

JavaScriptのObjectの仕組みもようやくわかってきた。プロパティとメソッドが読めるようになってきた。

Object - JavaScript | MDN

20
noratetsu 2023/04/30 (日) 11:09:53 >> 17

標準組み込みオブジェクト - JavaScript | MDN

JavaScriptの標準組み込みオブジェクト、多っ!
知らないことがいっぱいある…。

18
noratetsu 2023/04/30 (日) 11:02:26

>> 13>> 17

有効かどうか、良いコーディングかどうか、というより、もっと色々遊びたいなという感じ。自分の遊び場を広げていきたい。

21
noratetsu 2023/04/30 (日) 11:12:12

関連>> 20

Generator - JavaScript | MDN

あ~、今見たら使い所がちょっとわかったかもしれない。どう実装すればいいのかずっとわからなかったことが、これで解決するんじゃないか。

22
noratetsu 2023/04/30 (日) 11:31:46

関連>> 13>> 20

WeakMap と WeakSet

はあ、なんとなーくわかった。

23
noratetsu 2023/04/30 (日) 11:48:25

Symbolっていつ使うんだろうと思ってたけど…。

【JavaScript】 シンボル(Symbol)とは?使い方を解説します

使い所はなさそうかな。

24
noratetsu 2023/04/30 (日) 11:50:35 >> 23

JavaScript互換性の要!Symbol(シンボル)について|もっこりJavaScript|ANALOGIC(アナロジック)

シンボルは私たちのようなJavaScriptを使ってコードを書く側の人間ではなく、JavaScriptの仕様策定側にとって最も必要な仕組みだった、というわけですね。

なるほど。

25
noratetsu 2023/04/30 (日) 11:53:34 >> 23

ECMAScript6にシンボルができた理由 - Qiita

そんな訳で、ECMAScriptの仕様策定側にとってシンボルは非常に重要。だが逆に言えば、使うライブラリを自分達で決められ、自分達で書いたアプリを自分達でテストできる一般の開発者は、名前の衝突なんてどうとでも回避してきたわけで、今更シンボルが使えてもそんなに嬉しいことはないと思われる。

26
noratetsu 2023/04/30 (日) 12:05:25

Functionのapply,call,bindってよくわかってなかったけどなんとなくわかった気がしないでもない。

27
noratetsu 2023/05/28 (日) 11:11:35

なんでもかんでもオブジェクトのメンバー化してまとめる期がちょっと前までマイブームだった。クラスでそうしていたのを、インスタンス化しないオブジェクトでもそうしてみようと思ってやっていた。
そのオブジェクト内で完結させる、という発想を自分の中で定着させるにはとても役立ったが、オブジェクトだとprivateに設定できないので外からアクセスするメソッドがどれかがパッとわからないという欠点があった。

現時点では、即時関数を使ってメソッドをまとめたオブジェクトを返す形に落ち着いている。
最初からこうしていればよかったのになあ。

28
noratetsu 2023/07/31 (月) 10:17:29 >> 27

これをクロージャというわけだ。

29
noratetsu 2023/07/31 (月) 10:19:01

textarea内でショートカットキーを使った時に色々便利なことが起こるように機能を作っているんだけど、Markdownのtable記法の処理ができるようになって我ながらすごいものを作ったという気分。
行追加、列追加、列の入れ替えができるようになった。

30
noratetsu 2023/07/31 (月) 10:20:44 >> 29

offset類の計算がどうも苦手で頭がこんがらがったが、テストをちょこちょこやって正しいっぽい挙動を作れた。
結構複雑な処理になった…。