2018年12月14日金曜日

文字コード変換はコマンド一発で解決!



こんにちは。よっしーです。

今日は文字コードについてのお話しをしたいと思います。


今まで、いろいろなプロジェクトに携わってきましたが、

開発環境、実行環境などによって、ソースファイルの文字コードが決まっており、

開発者が文字コードを「意識する」という場面がよくあります。


使用するテキストエディタ、ツール等によるところがありますが、

新規作成したソースファイルを保存する際、デフォルトの文字コードが決まっており、

そのデフォルトの文字コードが、期待する文字コードになっていないと、

知らず知らずのうちに、プロジェクトに沿わない文字コードで

ソースファイルを生成してしまうこととなります。


チームで開発をしていると、ソースファイルを集約したときに、

ファイル毎に文字コードがばらばら。。。なんてことも、よくありますよね。


で、そういったとき、ソースファイルの文字コードを正しいものに「変換」するのですが、

Windows でいろいろと文字コード変換ツールを使ってはみたものの、

あまりしっくりくるものがなく、いろいろと試した結果、Linuxコマンドを

使用して変換する。というスタイルに落ち着きました。


なので、今回は文字コード変換の方法についてご紹介したいと思います。

(例のごとく、Ubuntu環境でのやり方となります)




はじめに、nkf というコマンドを使用しますので、インストールします。

nkf コマンドをインストール
$ apt-get install nkf


あとは、いろいろなコマンドとを組み合わせて使います。

まずは、現在のファイルがどのような文字コードになっているかを確認してみましょう。


複数ファイルの文字コードをコマンド一発で確認
$ find . -type f | xargs nkf --guess | column -s: -t

出力結果
↓ファイル文字コード
./inc/client_recv.hUTF-8 (BOM) (LF)
./inc/client_send.hUTF-8 (BOM) (LF)
./inc/main.h       UTF-8 (BOM) (CRLF)
./inc/svc_recv.h   Shift_JIS (CRLF)
./inc/svc_send.h   Shift_JIS (CRLF)
./src/client_recv.cUTF-8 (LF)
./src/client_send.cUTF-8 (LF)
./src/main.c       UTF-8 (BOM) (CRLF)
./src/svc_recv.c   Shift_JIS (CRLF)
./src/svc_send.c   Shift_JIS (CRLF)

ファイルによって文字コードや改行コードがバラバラですね。。。


で、これを1つの文字コードに統一するため、変換をかけます。

複数ファイルの文字コードをコマンド一発で変換

※ Shift-JIS、改行コード=CR+LF にする場合
$ find . -type f | xargs nkf --overwrite -s -Lw

※ UTF-8、改行コード=LF にする場合
$ find . -type f | xargs nkf --overwrite --oc=UTF-8 -Lu

※ UTF-8(BOM付)、改行コード=LF にする場合
find . -type f | xargs nkf --overwrite --oc=UTF-8-BOM -Lu



UTF-8、改行コード=LF の変換をかけた後、文字コード確認をしてみると、、、

出力結果
./src/client_recv.cUTF-8 (LF)
./src/client_send.cUTF-8 (LF)
./src/main.c       UTF-8 (LF)
./src/svc_recv.c   UTF-8 (LF)
./src/svc_send.c   UTF-8 (LF)
./inc/client_recv.hUTF-8 (LF)
./inc/client_send.hUTF-8 (LF)
./inc/main.h       UTF-8 (LF)
./inc/svc_recv.h   UTF-8 (LF)
./inc/svc_send.h   UTF-8 (LF)
キレイに文字コードがそろってますね!


ファイルをテキストエディタで開いて、文字コードを指定し保存する。

というやり方でもよいですが、ファイルの数が多くなってくると、

かなり手間になってしまうので、そんな時はコマンド一発で一気にやってしまいましょう!


ではまた~。

2018年12月7日金曜日

ExcelでF1を押してもヘルプが出ないように



こんにちは、ふじかーです。

先日「Excelがもっと捗る小技」をいくつか紹介しましたが
ひとつ大事なのを忘れてました。


誤って F1 を押したときに出るヘルプがうざい


もっとも不要と思われるキー「F1」

大人気の主要キーである「F2」「ESC」の間に隠れて、自分も押下されるのを待ち続け
ついブラインドタッチミスで押されようもんなら

お前は必要ない

と見たくもないのに最前面に姿を現し、しかも重くイラッとさせられる。
そんな経験、誰しもあるんじゃないでしょうか。

このF1ヘルプ、周りで使っている人見たことありません。
私も活用したこと無いですし、あなたもおそらく無いでしょう。

皆これには辟易としているようで、
こいつを出なくする方法を検索するとたくさん出てきます。

 キーボードのF1キーを抜く
 F1ブレイカーというアプリを入れておく
 レジストリを書き換える
 マクロを利用する

などなど。
①②③ はちょっと過激なので をチョイスします。

マクロでの対処方法をググってみると
「個人用マクロブックを使う」という記事が多いようです。


「個人用マクロブック」とは
マクロの記録画面で選択できる保存先の一つなんですが

これは、一度使うと「PERSONAL.XLSB」というブックが生成され、それ以降
Excelの起動と同時に、こいつも背後でこっそりと自動的に開かれるようになります。

一応これを使っても実現可能なんですが、
これだとExcelを同時に複数、別ウィンドウで開いた時に

と出るようになり、これはこれでイラッとするので却下。


私は「アドインとしてマクロを組み込んでやる」方向で対応しました。


対策方法


対応の流れは
 1.ExcelファイルOpen時にF1を無効にするVBAマクロを書く
 2.マクロをアドインとして保存する
 3.アドインを有効化
という感じ。


1.ExcelファイルOpen時にF1を無効にするVBAマクロを書く
・Excelを新規に開き、
・Alt+F11を押下してVBEditorを開いて、
・ThisWorkbookをダブルクリックして開き
・下記のコードを貼り付ける

Private Sub Workbook_Open()

    Application.OnKey "{F1}", ""

End Sub
・VBEditorを閉じる



2.マクロをアドインとして保存する
・「名前を付けて保存」画面を開き、
・ファイルの種類で「Excelアドイン(*.xlam)」を選択
・勝手にアドインフォルダが開かれるので
・適当に名前を付けて保存(ここでは 「F1ヘルプ無効化」 にします)





3.アドインを有効化
・Excelを表示した状態で 「Alt」「T」「O」 と順番に押下し、Excelのオプション画面を開く
・アドイン → 設定(G) をクリック
・上で作成した F1ヘルプ無効化 にチェックをいれて、OKで閉じる
・Excelを一度閉じる






以上、終了です。これでもう、あの大嫌いだったF1ヘルプは
どれだけプッシュしようが出てこなくなりました。少し寂しいくらい。

同じようなストレスを抱えてる方がいれば、参考にして下さいな。