[WIP] 技術情報 > tag > Qiita, esa.io, はてなブックマーク, Scrapboxなどで使っているタグリストと意味

WIP: Work in Progress (適宜項目を足したり、構成を変更したりするかもしれない）。

### 前置き

2021年9月現在のサービス利用と項目数

- Qiita : 6175投稿
- esa.io : 14000記事
- はてなブックマーク : 15000
- Scrapbox : 290 (最近は学習専念日には1日50ページずつ増える)

など

この記事においては、それぞれで共通して使用しているタグとその意味を列挙する。

### 記事の目的

- 使用してきたタグの整理
- 読者: 今後付けるタグに関して「考える糧」になるように

タグの推薦を受けたいわけではなく、自分が上記の資料を作成するときの経験の公開。

### 使用タグとその意味 (順不同)

- mistake : 自分や他者の失敗から学ぶ
- trap : 将来の失敗につながる事項
- performance : ソフトウェアやハードウェアのパフォーマンスに関する記事
- difficultToSearch : 後から検索が困難であろう事項
    - 例: とある言語での「?」の意味
    - 資料を読んでいる時の記載コストは小さく、あとで検索する場合のコストが大きそうなものに対して付ける
    - 暗黙のルールや一般的な慣習なども (例: Verilog-1995の1ビットwireタイプになるというルール)
- primer : 初心者向けのもの
    - 久しぶりに使うツールの使い方を思い出すなども
- tutorial : チュートリアルとして見る一連の情報が掲載されたもの
    - 例: PYNQでLチカをする (Vivado + Verilog HDL + Vitisなどを使う一連の手順)
- procedure : 手順が主体となったもの。tutorialと区別するのはどうかは検討しているが。。。
- naming : 名前付けに関する検討や参考情報
- codingRule : コード記述時のルールに関するもの
- difference : 二者以上の違いについて注目したい場合につける
- keyword : あとで探したいキーワードが掲載されているもの。キーワードそのものを忘れた時の思い出すきっかけ、かつ、キーワードの短期記憶に使用
- UI : ユーザインターフェイスに関しての検討や参考情報
- BADUI : UIの中でも失敗しているもの。 (UI + mistake)でも見つけられるが、これだけ独立タグにしている
- summary : まとめ的なもの
- documentation : 記事を書く時の決まりや検討事項に関連して
- IDE : IDEの機能や操作に関するもの
- notification : 通知に関するもの
- communication : 複数人との会話などの検討や資料
- example : コードの実装例などで使う
- WIP : Work in Progress. 解消していない疑問など。
- idea : アイデアが秀逸なもの。「これは思いつかなかったな」というような事項。
- why : 「なぜこういうことをしたんだろう？」と考える糧になるもの
    - reasonも考えたが、「なぜ」というキーワードからwhyの方が良いと考えた
- EOL : End of Life. サービス類の終了に関しての事項 (将来終了するものと、すでに終了したもの）
- diagram : 図に関する検討事項と資料
- grammer : 言語独自の文法的なもの
- memoryPalace : 記憶の宮殿(*1)に入れる工夫に関する事項
    - (*1) 本: 1年で全米記憶力チャンピオン by Joshua Foer
- tips : 公式マニュアルではあまり見られない使い方
    - 例: Scrapboxで「.」で検索すると、リスト表示される
    - 例: Qiitaで「*」で検索してから「新着順」にすると、全記事数がリスト表示される
- setup : OSやツールのセットアップが主な記事
- regex : 正規表現に関する記事
    - regularExpressionなども検討したが、文字数が多いのでregexとしている
- testing : テスト関連の記事. testだとまた別の意味を持つこともあるためtesting
- GPIO : 汎用I/O関連
- license : ライセンスに関する決まりや注意事項、使用例、など
- version : バージョンが主体となる記事. とあるバージョンから有効になった機能なども
- fileIO : ファイルの読込、書込みに関する記事
- fileExt : ファイル拡張子の説明
    - 例: .xsa : Xilinx Shell Archive. ハードウェア定義のファイル、など
- power : 消費電力、および電源に関する記事
- battery : バッテリー駆動に関する記事
- TechEnglish : 技術英語関連
    - かつてQiitaで投稿していたが、ガイドラインの変更に伴い投稿しなくなった
    - esa.ioや別のサービスではこれを継続使用
- memoryLeak : メモリーリークに関するもの
- formatspecifiers : printfの書式指定子など
- secureCoding : CERT Secure Coding Standardsやそれに類するもの
    - https://ja.wikipedia.org/wiki/CERT_Secure_Coding_Standards
- 64bit : 64bit特有の事項について
- stringOperation : 文字列操作に関する記事
- appOperation : アプリAがアプリBを操作するような実装
- bitOperation : ビット演算に関する記事
- ImageProcessing : 画像処理関連 
    - ImageOperationとすれば、他のタグと対称性が良くなりそう。
- winAppDev : Windowsアプリ開発に関する記事
    - 最近は使用しなくなっているか
- typeConversion : 型変換に関する記事 (例: string -> Tensor objects)
- runtimeArgument : 実行時引数に関する記事
- link : リンクにコメントなどを付けた記事
- onlineTool : ブラウザで使用できるツール
- noiseReduction : ノイズ低減に関する記事
- 電子工作 : 基板実装などに関する記事
    - タグ名を英語にしていない
- datetime : 日時に関連する記事
- timerEvent : 日時に基づく処理に関する記事
- crossPlatform : クロスプラットフォーム、マルチプラットフォームに関する記事
- debug : デバッグするときの工夫やツールの使い方など
- network : 通信に関する実装
- networkApp : 通信の実装案など
- Design : 設計に関する記事であるが、設計というのはいろいろなものがあるので不明瞭ではある
- CRLF : `<CR>`と`<LF>`に関する記事
- batch : Windowsの.batファイルに関する記事
- constraint : 性能の限界に関する記事。絶対最大定格や、応答特性、など
- migration : バージョン移行するときの注意点や要変更対応点


### 言語や固有名に関するもの

- cppbuilder : C++ Builder関連のもの。「C++Builder」にすると使えないサービスも考慮して「cppbuilder」としている
- Csharp : C#関連のもの。「C#」だとハッシュタグとかぶるサービスがいくつかあるので、「CSharp」の方が良いとは思っている
- RISCV : RISC-V関連のもの。「-」を許容しないサービスなども考慮して「RISCV」としている
- braceExpansion : bashのBrace Expansionに関する記事
- draw.io / drawio : draw.ioに関する記事
    - draw.ioが正式名称であるが、「.」をきちんと扱えないサービスの場合はdrawioに
    - 現在はdiagrams.netが正式名称であるが、既存の記事の継続性からdrawioを継続使用している
- esa.io / esaio
    - draw.ioと同様
    - サービス名に「.」があるとタグとして使いにくい
- RPi : Raspberry Piに関する記事
    - タグ入力補完がないサービスでRaspberryPiと入力して入力間違いするよりも良い場合も
    - タグ入力補完があるサービスなら正式名称に近いRaspberryPiとする方がいい気もする
- NCL : NCAR Command Language関連
- Jupytor : Jupyter Notebookに関する記事
- AD2 : Analog Discovery 2に関する記事
- CommandPrompt : コマンドプロンプトに関する記事


### その他

FPGA, Python, R, Unity, WPF, bash, csh, ksh, NCL, awk, Zephyr, PYNQ, MindMup, など言語、フレームワーク、ハードウェア、などの固有名のタグも別途使用している (マイナスや空白がなく、そのまま使用可能な表記）。

Qiitaの「新人プログラマ応援」。これは他の人と共有で使うので、このまま。


### 今後足すかもしれないもの

- 電子回路でなく、概念的な回路を表すタグ
    - 例: 順序回路の記事
- 「ツールの使い方」ではなく「ツールをどのようにうまく使っているか」を表すタグ
    - usageではないような気がする
    - purpose?
- XXXという利点があるという記事
    - advantageが第一候補

### タグを決めるときの検討事項

- 記憶しやすいもの、思い出しやすいものにする
- 記憶しにくいものでも頻繁に使うものはそれでも良い
- 他のサービスで広く使われているタグなども参考に
    - Stackoverflow
- 階層構造を使わない
    - 例: 71回路、など数値で覚えることで使いやすいもの
        - かつてEvernoteで使っていたが、階層そのものが破綻したのと、記憶コストが増える点から
使用停止
- 英語のタグを主に使う
    - 入力しやすい
    - 表記ぶれを減らせる
- uppcer case, lower case : Primer, primer, PRIMER
    - 一般的でない用語についてはprimer
    - 複合語の場合はprimerApplicationとして、二つ目のwordの先頭をupper caseに
    - 固有名や正式名称はPRIMER
    - など
    - すでに付けたタグで変更できないものはそのまま
    - 公式名でcaseの表記ブレがある場合は小文字でも (例: stackoverflow)


### 記事を記載しながら思いついたアイデア

自分用のタグ検索ツールをGodotで作成して、GitHubで公開するのはありかもしれない。
異なるOS上からアクセスできるように。


### 関連

- [2018-03-21 技術情報およびデータを失う技術 + 2019-04-07追記](https://qiita.com/7of9/items/75c0e5b94eeb605197b5)
    - 技術情報の継続性に関しての記事

### 備考

記事に句読点のばらつきなどある。修正するかもしれないし、このままかもしれない。
思い出しながら、見返しながら、整理しているので、記載もれはずっとあるかも。