gracetory’s blog

東池袋にある合同会社グレストリのエンジニアブログです

怪奇!!アスキーコード混入の巻(Atom編)

f:id:gracetory_yama:20170804121708p:plain

他の皆さんがレベル高い記事ばかり書いていて、

記事を書くことが怖くなってきた山口です。

まぁ、私みたいなゆるふわな記事を書く人が一人くらいいてもいいでしょう。

ギャグ担当的なポジションでお願いします。

本題

少し前に私のせいでちょっとしたトラブルがありました。

前提として、私はエディタにAtomを使用しています。

ある日私の書いたコードに、覚えのない不可視文字(アスキーコード)が混入しているとの報告が。

けど、僕のAtomくんには何も映ってないよ?(不可視文字の表示設定はtrueにしていました)

これはアレだ、パソコンの妖精さんのいたずらだ。

再現

駄文が増えても仕方ないので結論を書きますが、

Mac標準の日本語入力で全角の括弧を誤って使ったことに起因します。

当時の状況は、PHPでint型にキャストしようとしていたところでした。

以下みたいな感じのキャストをしようとしていました。

<?php
    $a = "123";
    $b = (int)$a;
  1. 最初に全角の括弧を入力してしまい、それに気づかずカーソルを一つ左(括弧の中)へ。

  2. 括弧が消滅。ファッ!?

  3. とりあえず書く予定だったintを日本語入力で「いんt」と入力。ここで日本語入力になっていることに気付く。

  4. 「英数」キーを素早く2回押しで英数半角へ変換。

  5. 括弧が消えたのはなんだったのかと思いながら、intを半角の括弧で囲む。

工程はこんな感じだったと思います。

これで、Atom的には問題(が見え)ないコードの完成!

が、キャストした箇所のすぐ左にはアスキーコードが混入していたのであった…

余談

Mac標準の日本語入力が原因ですかね?

素直にGoogle日本語入力をデフォルトに変更すべきですかねぇ。

けど、ライブ変換予測が楽ですし、うーぬ…

時間があったら色々試しめみようかな。

解説

この件の報告してくれた人がSublime Textを使用していたので、

そちらで見たらこんな感じ。

f:id:gracetory_yama:20170804123153p:plain

FS?

軽くググったら「ファイル分離文字 (FS:file separator)」とのこと。

なぜこんなものが発生?

そもそもなぜ、全角の括弧を使用したことに気付かないほどアホなの?

その後

スクリプトで必要ないアスキーコードの混入を検知するようにし、

コミット前に必ずテストをするようにしましたとさ。

それ以来一度も再発していません。

そして、今まで以上に動作テストを念入りに行うようにしてから

コミットするようになりました。

めでたしめでたし。

ちなみに

Visual Studio Codeも、設定をいじれば制御文字の簡易的表示はできるみたいでした。

f:id:gracetory_yama:20170804132544p:plain

Atomでも表示させるようなプラグイン探してみましたが、

パッと出てこないので後回しにしてます。

むしろ自分で作れよ、と。

Atomから乗り換えてしまえ。