ぼくはこんな記事を書いてきた


記事タイトルは立花隆『[ぼくはこんな本を読んできた](https://books.bunshun.jp/ud/book/num/9784163510804)』のパロディー。
ふとマイページを見たら，これまでに書いた記事が 99 本であることに気づいた。
100 本目は何を書こうか。思いつかないので過去記事を振り返ってみた。
101 本目以降の記事も必要に応じて追記していくことにする。

# Ruby

やっぱり Ruby の記事が多い。

## 初心者向け

Ruby の初心者に知ってもらいたいこと。

* [Ruby のエラーメッセージを読み解く（初心者向け）その 1](https://qiita.com/scivola/items/3017068a354892b239f4)<br>エラーメッセージが読めるようになるのが中級への第一歩。
* [Ruby のエラーメッセージを読み解く（初心者向け）その 2](https://qiita.com/scivola/items/77017693de371ab49667)<br>この続きを書くつもりだが，果たせていない。
* [Ruby の文字列配列・シンボル配列を複数行で書く](https://qiita.com/scivola/items/a958edfb9008109472e1)
* [Ruby の正規表現を複数行で書く](https://qiita.com/scivola/items/04270095eb4c17ab8c92)<br>ややこしい正規表現を分かりやすくメンテしやすく書く方法。
* [Rubyのハッシュ記法は混ぜて書ける](https://qiita.com/scivola/items/a7193b4d97bcb9b27ad6)<br>べつに知らなくてもいいか。
* [String#gsub の第二引数にハッシュが渡せるんだった](https://qiita.com/scivola/items/416155c307ec29a37b8f)
* [Ruby でベンチマークを取る方法](https://qiita.com/scivola/items/c5b2aeaf7d67a9ef310a)<br>Ruby でのベンチマークテストのやり方や数値の捉え方について書かれた記事はあまり無かった。今となっては古い部分があるので最新のライブラリーを中心にして書き直したいが方針が定まっていない（benchmark_driver 一択でよいのかどうかなど）。


## Rails

Rails の記事は数も少なく，マイナーテーマのが多い気がする。

* [Rails 5.2 で SQLite3 の boolean の値が変わった](https://qiita.com/scivola/items/5553e117de04de7da6a1)<br>Rails で SQLite3 がどの程度使われているのか知らないけど，使っている人は Rails 5.1 から 5.2 に移ったときに「ぎゃ！」となったはず。とくに過去データを引き継ぎたいとき。
* [Rails 5.2 で ActiveSupport::MessageEncryptor::InvalidMessage](https://qiita.com/scivola/items/cc06ddbfd94d3118f693)
* [Rails：ネストしたルーティングのパスヘルパーが長えよ](https://qiita.com/scivola/items/90952bdef62821d5b34b)<br>`xxx_path` 型のパスヘルパーメソッドが，ルーティングが複雑になると長くなりがち。これを，デコーレーターメソッドを使ってもっと簡素にしようという話。
* [Rails モデル名の i18n のもう一つの方法](https://qiita.com/scivola/items/f6267fe2ffded64bd8bf)
* [Rails で *.scss じゃなく *.sass を生成してほしい](https://qiita.com/scivola/items/36ec4b91215deefff2ba)
* [rails generate annotate:install でエラーが出た](https://qiita.com/scivola/items/9e841be74492cd30f28b)
* [Rails テンプレートにはマジコメ必要](https://qiita.com/scivola/items/95f257510ac82542dbf5)


## Slim

筆者は，テンプレートシステムは Slim 一択。HTML も XML も Slim で書いてる。

* [Slim コードのリファクタリング](https://qiita.com/scivola/items/e9ea12bdd950a35b8eb9)
* [Slim の属性値指定のちょっといい話](https://qiita.com/scivola/items/a182fc613bc9703d8ec8)
* [Slim で autofocus のような論理属性を書く](https://qiita.com/scivola/items/8f6de92a03d7a8246cc0)
* [Slim で一部をまるごとコメントアウトする方法](https://qiita.com/scivola/items/c9a79c13688a3444a3cc)

どれも，似た記事が他に無いと思うんだけど，あんまり「いいね」が付かなかった。

## Windows

Windows で Ruby やってるといろいろある（笑）。
たいがいは文字コード絡み。

* [listen が Encoding::CompatibilityError で死ぬ（Windows はつらいよ）](https://qiita.com/scivola/items/14a49f23aab7ed95b112)
* [Ruby で UTF-8 なのにマジックコメントが必要なケース](https://qiita.com/scivola/items/c7aad4a8fba137352aec)
* [Dir.mktmpdir が短縮ファイル名をブロックパラメーターにするのでエラい目にあった](https://qiita.com/scivola/items/e0729089dba402bb42e8)
* ["Windows で File.expand_path(""~"") はどうなる"](https://qiita.com/scivola/items/210e8e79133952faf93f)
* [Object#inspect は Encoding.default_external の影響を受ける](https://qiita.com/scivola/items/ac51957b491e277c6cd5)

## refinements

* [Ruby の refinements の使い途](https://qiita.com/scivola/items/dc49d56c90fd0cb6d4d3)
* [Refinement で追加したメソッドが irb で呼べない？](https://qiita.com/scivola/items/42c8bcb44d3b5bc04849)
* [Refinement で定義したメソッドが Symbol#to_proc で使えない](https://qiita.com/scivola/items/de7dd9f8a2bbf5e0e709)
* [Refinement で追加したメソッドが send で呼べない](https://qiita.com/scivola/items/9a8887a5a864a7252d75)

refinements は Ruby バージョンが上がるごとに制限が緩和されていったので，もう古くなっているのがあるはず（記事を見直してない）。


## 小ネタ・雑多なもの

### 言語仕様

* [Ruby で識別子に非 ASCII 文字を使う](https://qiita.com/scivola/items/d3506fd17a30e7dcadce)
* [Ruby に xor は無かった](https://qiita.com/scivola/items/308f9cbf0412bc20650b)
* [Ruby のフリップフロップの闇感と Enumerable#flipflop](https://qiita.com/scivola/items/d6c020adaea96aff7f1e)

### 組込みと標準添付のライブラリー

* [素の Ruby で HTML エスケープするなら cgi/escapeが最強](https://qiita.com/scivola/items/b2d749a5a720f9eb02b1)
* [Ruby の csv ライブラリーにおける空フィールドの扱い](https://qiita.com/scivola/items/a2b3a5a4e85b031d8999)
* [Ruby の Integer#pred の pred って何？](https://qiita.com/scivola/items/8deffae7c5ba2f6c93dc)
* [Ruby の Hash#select, reject のブロックパラメーター](https://qiita.com/scivola/items/8900207d04a3794dd167)
* [Random.rand(-1..1) は Random.rand(3) - 1 よりずっと遅い](https://qiita.com/scivola/items/4f35c511af6a102fc68f)
* [Ruby で MatchData#named_captures が欲しい](https://qiita.com/scivola/items/afe86a54101438447762)


### 外部ライブラリー

* [Ruby の i18n を単独で使う](https://qiita.com/scivola/items/9f97f9e6c1a8cf40f87b)
* [thor hoge と書きたい](https://qiita.com/scivola/items/cd41181ccb5dfa8b9537)
* [ホーム以外でホームの Rake タスクを実行](https://qiita.com/scivola/items/558deed073c88fd2c619)
* [Bundler.require でのエラーが変わった](https://qiita.com/scivola/items/11ece48dbf12b14790fd)
* [RuboCop の設定を共通と個別で別管理する](https://qiita.com/scivola/items/2d5c23e0631149aa6c78)
* [巨大 gem がゴミになってた件](https://qiita.com/scivola/items/79ec7b8b7401bafd8283)

### その他

* [Ruby で s が nil か String か分らぬとき s.to_s と s || '' はどっちがいい？](https://qiita.com/scivola/items/1f6704f81aba18df9012)
* [rbenv で gem のコマンドが期待と異なる Ruby で動いてしまう](https://qiita.com/scivola/items/d4e4c2e5a6c336231d6e)
* [Ruby のココがダメ](https://qiita.com/scivola/items/17470c52641d3ffa1650)



## 暇つぶし・遊び

* [Array#permutation で覆面算を解く](https://qiita.com/scivola/items/d64866feb41d819d0161)
* [Ruby で百世紀までの素数日リスト](https://qiita.com/scivola/items/10b5137c9bc34a70da80)
* [愛は金よりも重い](https://qiita.com/scivola/items/eae5ad334802a18132c2)
* [生死から愛が生まれるとき教科書から恐が生まれる](https://qiita.com/scivola/items/c0f89a313b208a654734)
* [Ruby と Rust でアベソートを実装してみた](https://qiita.com/scivola/items/942a36ddb6aeda172a54)
* [x == x が false になることはあるか](https://qiita.com/scivola/items/e1bab285b9266d8a5b71)
* ["Ruby で """""""" < """""""" <=> """""""" > """""""""](https://qiita.com/scivola/items/ee65b227623281c921a8)
* [Ruby 2.6 で 0.step.step は何を返すか](https://qiita.com/scivola/items/6dc03b73f352d027c9f8)


# 用語，日本語文章

専門用語とか，技術文書の日本語表現とかに強い関心があるので，そういう記事をよく書いている。
誤った用語は SNS で一気に広まってしまうので何とか食い止めたいのだけれど，そういう動きに対して嫌悪感や反感を持つ人も少なくない。それはそれで分かるよう気もしている。

* [Qiita などの技術系の記事で残念に思うポイント](https://qiita.com/scivola/items/f02589968a4ca27bc52b)<br>他人の記事を批判するつもりはなく，「こういうことに気をつけて書くといいんでは」ということを書いたつもり。
* [「値を返却する」って言うな](https://qiita.com/scivola/items/d9f26ea13691f8c5e6a4)<br>「値を返却する」はもう止められない気もしている。でも，借りてもいないものを「返却する」のは未だにプログラマー以外が使っているのを見たことが無い。
* [opacity は透明度じゃない](https://qiita.com/scivola/items/fbd2a698761ad78fbba7)
* [YAGNI は何の略？](https://qiita.com/scivola/items/acfe57d4b3b8dc9d11ec)
* [それは後方参照じゃない](https://qiita.com/scivola/items/c432bd500fe927b7b581)
* [違和感のある計算機用語](https://qiita.com/scivola/items/6dff4d2fce3ce588b21f)<br>自分ではいいと思ったんだけど，ほとんど反響がなかった。
* [マイナーな漢語系電算用語](https://qiita.com/scivola/items/426c318a68672c461107)<br>「作譜」とか「算法」とかを集めた。
* [Rubyのブロック引数とブロックパラメーターを混同しないで](https://qiita.com/scivola/items/f6c98c23bc1ba6b0f672)
* [「特異メソッド」は誤訳か](https://qiita.com/scivola/items/eb2096b4e728a2028c76)<br>これは Ruby の用語について書いたもの。あとで分かったけど，「特異メソッド」はそもそも訳語ではなかった。

# 正規表現

正規表現は書きたいことがいろいろあるのだが，果たせていない。

* [強欲な量指定子（絶対最大量指定子）の使いどころ](https://qiita.com/scivola/items/0e71a1964378a80d975d)<br>`++` とかの類は何に役立つのかって話。
* [Rubyの行末](https://qiita.com/scivola/items/132200d5dbe52ff33c9f)<br>「行頭」「行末」って，自明な概念じゃないんだよ，という話。
* [EmEditor で Onigmo 正規表現エンジンを使おう](https://qiita.com/scivola/items/358b6b81d893c045129b)<br>タイトルに「EmEditor」とあるけれど，記事の内容としては Onigmo の機能の紹介だったりする。「部分式呼び出し」の解説は他ではあまり見ないので知ってほしい。

# Rust

Rust は未だに全くのド素人。筆者はシステムプログラミングをしておらず，ふだん作るものは Ruby で足りているので，学習も進まない。
いずれ Ruby と Rust の連携の記事をいくつか書いていきたいと思っているのだけれど。

## 言語仕様

* [Ruby 使いがビビった Rust の -1_i32.abs()](https://qiita.com/scivola/items/5787b2f9e9a5d52a486c)
* [Rubyist が罠にはまる Rust の範囲](https://qiita.com/scivola/items/bf11a28306e91ea3f2ea)
* [Rust の論理積の & は短絡評価じゃなかった](https://qiita.com/scivola/items/25e867d69588bf568a6f)

## 正規表現

* [Rust で正規表現による文字列の検索・置換](https://qiita.com/scivola/items/60141f262caa53983c3a)
* [Rust で CSV を加工して Regex 生成に気をつけようと思った話](https://qiita.com/scivola/items/a5cab0da0826647a1d62)

## なんか作ってみた

Ruby だと計算量的にツライ絵を Rust で描かせてみた，という趣旨（ミンコフスキー距離は Ruby でも平気だろうけど）。

* [ミンコフスキー距離を絵にしてみた](https://qiita.com/scivola/items/ee37b686d0b36d6e9b39)
* [Rust でごった煮マシン](https://qiita.com/scivola/items/98c1f7284469c891cb50)
* [Rust でマンデルブロ集合のズーム・アニメーション](https://qiita.com/scivola/items/f730e66d5020aa350b11)

# テキストエディター

プログラマーで EmEditor や CotEditor を使っている人は少ないのだろう。反響が無い。

* [EmEditor で今書いている Ruby スクリプトの文法をチェック](https://qiita.com/scivola/items/2427c0f3bd0114c262f7)
* [EmEditor 上で書いた Ruby のコードを動かして結果を後ろに挿入する](https://qiita.com/scivola/items/f42888bc288e6092d1b6)
* [CotEditor 上で書いた Ruby のコードを動かして結果を後ろに挿入する](https://qiita.com/scivola/items/d9f5aa8f8bbb17d4eef3)


# その他

* [「プログラミング言語の歴史を会話方式で振り返る」を横目で見ながらの会話](https://qiita.com/scivola/items/b31729f7f8e11402256a)<br>あまり記事にされることが無い SNOBOL, Occam, CLU について，調べて書いてみた。自分では気に入っているが，あまり反響が無かった。
* [職業としてプログラムを書くことになった人にいちばん伝えたいこと](https://qiita.com/scivola/items/3310d7b03dde9bf68dd3)<br>「新人プログラマ応援」という企画に乗っかって書いてみた半ジョーク記事。
* [ロートルエンジニアの私が圧倒的老化に抗おうとしてやれていないこと](https://qiita.com/scivola/items/0aff062b6d99d0c5ce66)<br>老化したプログラマーのため息を記事にしたようなもの。
* [Firefox の Format Link の直し方](https://qiita.com/scivola/items/c08e5b46be491470d9b7)<br>ウェブページへのリンクを Markdown 形式で取得するのにメッチャ便利なアドオン Format Link の異状を直す方法。