Windows環境でツールを入れずにMySQLのUTF-8の日本語項目を操作する

Windows環境でMySQLを使う場合、UTF-8の日本語項目の操作が難しいです。
というのも、コマンドプロンプトでMySQLを操作する場合、chcpコマンドでコードをUTF-8(65001)に設定してしまうと日本語が扱えなくなってしまうためです。
(コマンドプロンプトでUTF-8に設定した場合、レジストリで設定変更しない限り日本語のフォントを使えなくなってしまう。日本語を入力することができず、出力時も文字化けする。)

ツールを入れればこの問題は解消するのですが、ツールを入れるのが面倒な場合は、UTF-8で書かれたテキストファイル(.sql)とバッチファイル(.bat)を組み合わせることで日本語項目を操作することができます。
以下、日本語項目をinsert・selectする例です。mysql.exeへのパスは通っているものとします。

【前提】

・データベースのユーザとパスワード

ユーザ  :root
パスワード:root

・データベース名(スキーマ名)

sample

・対象テーブル(DDL)

【insertする例】

・Insert.sql

・Insert.bat

・バッチファイルをダブルクリックした結果

userテーブルにデータが挿入される。日本語項目も正しく挿入される。
(後のselect結果で確認する)

【selectする例】

・Select.sql

・Select.bat

・バッチファイルをダブルクリックした結果

C:\tmp\hoge.txt に下記のように出力される。
(出力ファイルはtab区切り・改行コード\n)


いかがでしたでしょうか。

自宅PCで立てた環境での話を記事化したものですが、まさかコマンドプロンプトでUTF-8の日本語のフォントが扱えないとは思いませんでした。
Windows環境なのであれば、初めからShift-JISで実装した方が楽かもしれません。

Excel・VBA:始めてのマクロの作り方(Hello World)

Excelのマクロ(VBA)の作り方の紹介です。
マクロを使える設定にしてから、「Hello World」をポップアップで表示するボタンを作成し、保存する所まで紹介します。
Excelのバージョンは Excel 2013 とします。

手順1:マクロを開発可能にする

Excelの任意のファイルを開き、「ファイル」タブを開く。
「ファイル」タブの「オプション」を選択する。

オプションが表示されるので、「リボンのユーザー設定」タブを選択し、「開発」のチェックボックスをONにし、「OK」を押下する。

手順2:マクロ有効ブックとしてファイルを保存する

「ファイル」タブを開き、「名前を付けて保存」を選択する。
保存する際、ファイルの種類を「Excel マクロ有効ブック(*.xlsm)」を選択する。

手順3:ボタンを作成する

「開発」タブの「挿入」から「ボタン(フォーム コントロール)」を選択する。

任意の場所にボタンを作成すると、「マクロの登録」ウインドウが開く。
ここで「新規作成」を選択する。

ソースコードの入力画面に遷移するため、下記のように記述する。
(ボタンの名前が「ボタン1」の場合)

手順4:ボタンの稼働確認をする

手順3で作成したボタンをクリックする。
「hello world!」と書かれたポップアップが開くことを確認する。


いかがでしたでしょうか。

今回の例はごく平易です。
しかし、ここまでできるようになれば、プログラム言語の経験者であれば自分で調べながら実務レベルのマクロを作ることができるようになります。
VBAはプログラム言語の一つですので一般的なプログラム言語に備えられている機能は一通り揃っていますし、それをセル参照・更新の機能と組み合わせれば、色々な作業の自動化が可能になります。

これからも役に立つ情報を発信していきたいと思います!

エクスプローラ上でフォルダを任意の順番で並べる

エクスプローラ上でフォルダを任意の順番で並べたい場合、多くの場合は「00_…」「01_…」のような形で番号を割り振り、名前で並び替えると思います。
しかし、フォルダに番号を振らずに作業を進め、既に数多くのリンクが貼られてしまったような状況では、番号を振り直すのが難しくなります。

その場合、更新日時を任意の順番にし、更新日時で並び替えるようにすると良いです。
更新日時を任意の順番にするには、Windows PowerShell を使って自動的で更新日時を更新できるようにすると良いです。
(更新日時が更新されてしまった場合は Windows PowerShell のスクリプトを実行することで更新日時を元に戻す必要は出てきてしまいますが、そこまで面倒ではないと思います)

例えば、以下のようなフォルダ構成になっていて、「hoge」→「fuga」→「piyo」の名前に並び替えたい場合

以下のようなバッチを用意して実行します。

・FolderSort.bat

・FolderSort.ps1


「FolderSort.bat」をダブルクリックして実行すると更新日時が「hoge」→「fuga」→「piyo」の順番になるように更新され、更新日時で並び替えることで「hoge」→「fuga」→「piyo」の順番になります。


あけましておめでとうございます!

今回は新年ということで、ちょっと軽めというか、小ネタを投稿してみました。
Web検索で良く出てくるのはレジストリを変更する方法とフリーソフトを使用する方法ですが、前者は変更をミスした場合のリスクが大きいですし、後者はセキュリティ上のリスク等が出てしまいます。現場のポリシー次第ではどちらもできないこともあります。
そこで、今回は、更新日時を利用する方法を紹介してみました。
もしお役に立てれば幸いです!

unix/linux:決められた時刻に処理を実行する(ワンライナー編)

unix/linuxの便利コマンドの紹介です。


テストや補正作業を行う際、決められた時刻に決められたコマンドを実行したい場合があります。
unix/linuxでは、atコマンドを使用することで、決められた時刻に決められたコマンドを自動的に実行するように登録することができます。

しかし、atコマンドを通常の使い方をする場合、対話式にコマンドを入力したりコマンドを記載したファイルを別途用意したりする必要があり、オペレータに作業を依頼したりシェルスクリプトに組み込んだりする場合に都合が悪い場合があります。
そこで、下記のようにプロセス置換(コマンドをファイルに見立てる記法)を用いることで、対話式のコマンド入力やファイルの用意をする必要がなくなります。

・20:00に/home/hoge/test.txt(空ファイル)を作成するように登録する例

#> at 20:00 -f <(touch /home/hoge/test.txt)


OSのバージョンやatコマンドの設定によっては、atコマンドを使用できない場合もあります。
その場合は、下記のようにループ処理とバックグラウンドを併用することで、atコマンドと同じようなことを実現できます。

・20:00に/home/hoge/test.txt(空ファイル)を作成するように登録する例

#> (TIME=date "+%H%M"; while[${TIME} -lt 2000]; do sleep 60; TIME=date “+%H%M”; done; touch /home/hoge/test.txt) &


いかがでしたでしょうか。

unix/linuxのコマンドを使いこなせるようになると、できる作業の幅が広がります。
今回紹介したコマンドも、使う機会が少なくないのではと思います。

これからも、便利コマンドを紹介していきたいと思います!

ウォーターフォールモデルとV字モデル

日本でシステム開発を行う場合、多くの場合は「ウォーターフォールモデル」と呼ばれるプロセスに従って開発を進めます。
ウォーターフォールモデルを知ることで、各々の工程を何のために行うのかを考えることができるようになります。
システム開発作業に参画する際は、ウォーターフォールモデルについて知っていることが望ましいです。

ウォーターフォールモデルでは、実際にプログラムを作るまでは「要件定義(基本計画)」→「外部設計(基本設計)」→「内部設計・プログラム設計(詳細設計)」→「プログラミング(製造)」といった工程を踏みます。
ユーザの要求からスタートし、段階的に詳細化しシステム化の方針を決めるといった形で、トップダウンで開発を行います。
プログラムを作り終えてからは、「単体テスト(UT)」→「結合テスト(IT)」→「システムテスト(総合テスト、ST)」→「運用テスト(UAT)」といった工程を踏みます。
バグ頻発でテスト進行が妨げられることを防ぐために、細かい箇所からテストを行い徐々に統合するという形で、ボトムアップで開発を行います。

開発工程とテスト工程は、以下のように連関しています。

プログラミングの内容は単体テスト、内部設計・プログラム設計の内容は結合テスト、外部設計の内容はシステムテスト、要件定義の内容は運用テストで検証します。
これをV字モデルと呼びます。

誤りを修正する場合、後の工程になるほど手戻り工数が増え、修正コストが増大します。
最悪なのは、リリース後に誤りが発見され、修正の必要が生じた場合です。
そのため、手戻りは原則として行わず、各々の工程を順番にこなしていくことが理想です。
(水が流れるように順番に工程をこなすことから、「ウォーター(水が)フォール(流れ落ちる)」と呼ばれるようになりました)

手戻りを防ぐためには、レビューを強化する等し、ある工程で埋め込んだ誤りはその工程の中でできる限り解消することが重要になります。
仮に後の工程で誤りが発見された場合は、その誤りについてなるべく早い段階で例外的に前工程に戻り、その誤りの修正に関わる要件・設計・実装を見直すことが重要になります。
大規模かつミッションクリティカルなシステム開発では特にこの原則を守ることが重要となります。
以下は東証のシステム更改の例で、前工程への手戻りを正式にプロセスに組み込むことで手戻り工数を削減する「フィードバック型V字モデル」が採用されました。
http://ac.nikkeibp.co.jp/cn/xdev10/pdf/10907-xdev-A-1.pdf

また、実現性が疑わしい箇所について開発開始前にプロトタイプを作成し、実現性をあらかじめ検証するという手法も使われます。
プロトタイプを作ることで、開発開始時に実現性の問題が出て手戻りが発生することを防ぐことができます。
(このような事前検証は「POC」と呼ばれることもあります)

ざっくりまとめると、先が見える場合は1つ1つの作業を確実にこなす、先が見えない場合は先回りして視界を良好にする、という姿勢がプロジェクトを円滑に進める上で重要になります。


いかがでしたでしょうか。

私も1~2年目だった頃は、手戻りのリスクを考えずに猪突猛進に作業を進めて、結局手戻りして先輩に迷惑をかけたことがあります。
若手なら先輩に迷惑をかける程度で済みますが、リーダーや管理者の立場で同じことをすればプロジェクト全体の進捗に影響してしまいます。

ウォーターフォールモデルはシステム開発のプロセスとしては基本的なものですが、基本だからこそないがしろにしてはいけないと思っています。
単純に各工程の名前と作業内容を覚えるだけでなく、その背景にある理念も含めて理解する必要があると思っています。

それではまた次回!