EmEditorで巨大ファイルを開く(サクラエディタとの性能比較有り)

テキストエディタとしてはサクラエディタが良く使われると思います。
しかし、サクラエディタで重いファイルを開こうとして時間がかかってしまった、ということもあると思います。

そこで役立つのが、EmEditorです。
EmEditorは、サクラエディタとほぼ同時期(2000年頃)に生まれたWindows用のテキストエディタです。
サクラエディタと比較すると、巨大ファイルを開く時の速さに定評があります。

EmEditorはこちらからダウンロードできます。
有料版もありますが、今回の用途であれば無料版の「EmEditor Free」で十分です。
https://jp.emeditor.com/#download


参考までに、実際にどれほどの差があるのかを計測しましたので、計測結果を公開します。
先に結論を書くと、今回の計測では、EmEditorの方が40倍以上ファイルを早く開けるという結果になりました。

【動作環境】

  • OS:Windows8.1 64bit
  • CPU:Inter(R) Core(TM) i5-4210U CPU @ 1.70GHz 2.40GHz
  • メモリ:8.00GB
  • ディスク:SSD 128GB
  • EmEditorのバージョン:Version 21.6.1
  • サクラエディタのバージョン:Ver. 2.2.0.1

【開閉対象のファイル】

・約170MB(179,148,566バイト)

【計測結果】

・EmEditor(Free版)

サクラエディタ


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

今回はちょっとした作業テクニックの紹介でした。
ファイル編集に関しては、サクラエディタ以外のテキストエディタはあまり使われないと思いますが、今回紹介した通り、他のテキストエディタを併用すると作業を効率化できる場合があります。

このようなちょっとした小ネタも今後取り上げていきたいと思います!

プログラムリリース時のコンティンジェンシープラン

コンティンジェンシープランとは、想定外の事態が起きた時に備えて事前に定めておく対応策のことです。
この記事では、プログラムのリリース時に定めておくべきコンティンジェンシープランについて、具体的に述べていきます。


プログラムのリリース作業は、事前に定められた一定の時間内に、プログラムを入れ替えて稼働確認を行う、という作業です。
例えば、特定の日の22:00-24:00をメンテナンス時間として事前に通知し、メンテナンス時間中はシステムの開放を止めてプログラム入れ替えと稼働確認を行う、というような作業を指します。

リリース作業時における主な想定外の事態は、稼働確認での不具合の発見です。
不具合を発見した時に備えて、以下のようなコンティンジェンシープランを事前に用意しておくべきです。

1.切り戻し作業の手順の用意と実施

新しくリリースしたプログラムに不具合が存在していたとしても、リリース時間内に元のプログラムに戻して稼働可能な状態に戻せば、利用者にはリリース前と変わらない機能を提供することができます。
リリースによるサービス水準の低下を防ぐという意味では、最も確実な対応策となります。
ただし、切り戻し作業自体にリスクが存在する(切り戻し作業を失敗し、戻せなかったり、より自体が悪化したりする可能性がある)ため、切り戻し作業を行う可能性があるのであれば、作業手順を事前に確立させる必要があります。
データの移行を伴う場合は、データの事前のバックアップとその戻しも必要になるので、特に注意が必要です。

2.サービス水準の低下を許容する方針の検討

切り戻し作業を行うのが最も確実ではあるのですが、発見された不具合が軽微なものであれば、その不具合を許容した上で戻さずにリリース作業を完了させる手もあります。
また、法律改正への対応のような、外部の変更に応じた対応の場合は切り戻し作業の実施自体が難しくなる(自社の判断だけでは切り戻し作業ができなくなる)ため、この場合も不具合を許容、最悪の場合は機能制限を加えた上でリリース作業完了させる必要が出てくることが多いです。

不具合を許容するかどうかの判断はその時々で柔軟に判断する必要がありますが、それを誰が判断するのか(作業時の責任者は誰なのか)は事前に決めておくべきです。
また、機能制限のような作業を行う可能性があるのであれば、その作業手順も事前に確認・確立させる必要があります。

3.切り戻し等の作業を開始するタイミングの確認

稼働確認で不具合が発見されたとしても、リリース時間内に修正できるのであれば、修正するに越したことはありません。
また、切り戻しを行うのかサービス水準の低下を許容するのかの判断が必要になる可能性もあります。

このように、不具合が発見されたとしても、切り戻しの行わない、という判断をすることがあります。
しかし、切り戻し作業にも時間が必要なので、その判断をいつまでに行うのか、ということは事前に決める必要があります。

例えば、24:00までにサービスを再開する必要があり、切り戻し作業に(余裕を見て)30分かかる場合、切り戻しを行うかどうかの判断は23:30までに行う必要があります。
23:30までに修正が完了しなかったり、サービス水準低下の許容の判断ができなかったりするのであれば、安全側に倒すために23:30を迎えた瞬間に切り戻し作業を開始するべきです。


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

今回は、後輩に指導したことを記事として残しました。
記事に書いたことは、保守作業に携わるエンジニアであれば意識するべきことです。
大規模なシステムでは書類の形でプランを作る必要がありますし、小規模なシステムであっても関係者間で事前に認識を共有しておくべきです。

指導した内容はこれからも記事として残すようにしていこうと思います!

アイデアを引き出すのに使えるマクドナルド理論とは

「マクドナルド理論」と呼ばれる心理学のテクニックの紹介です。

あるテーマについて誰もアイデアを発言しない時に、すぐに思いつく限りで最低のアイデアを発言すると、皆がアイデアを発言し始める、というテクニックです。
昼食を決める時に「マクドナルドに行きたい」と言うと他のメンバーがより良いアイデアを発言し始める、という話が「マクドナルド理論」の由来です。
(マクドナルドが本当に最低のアイデアなのかどうかは置いておいて)

なぜこれでアイデアを発言するようになるのかは定かではありませんが、以下のような理由があると思っています。

  • 最低のアイデアで決まってしまうのを避けたい、という動機が生まれる
  • (取るに足らないかもしれない)自分のアイデアを発言しても良い、という安心感が生まれる

なお、ブレーンストーミングのようにメンバー全員でアイデアの数を稼ぐ必要があるような場面でなければ、あえて最低のアイデアを発言することに拘る必要はないと思っています。
とにかくアイデアを発言すれば、そのアイデアが許容できるものであればすんなり通りますし、最低のアイデアであればマクドナルド理論で対案を発言してくれます。
日々の業務で生産性を上げたいのであれば、アイデアの良し悪しに関わらずとりあえず口火を切って、お互いに悩む時間を減らすことが大事だと考えています。


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

今回は、私も使うことがある心理学のテクニックの紹介でした。
心理学のテクニックの中には仕事で使えるものも少なくないので、また紹介したいと思います!

Chromeでharファイルを出力する手順

ChromeのデベロッパーツールのNetworkタブでは、アクセスしたページとやりとりされたリクエストやレスポンスについて、その内容や所要時間を確認することができます。
そして、Networkタブで確認した内容は、harファイルと呼ばれるファイルに出力し、保存することができます。

harファイルを出力する手順は以下の通りです。

【手順】

1.Chromeを立ち上げる。

2.F12でデベロッパーツールを立ち上げる。

(「その他ツール」→「デベロッパーツール」、Ctrl+Shift+Iでも可)

3.「Network」タブをクリックする。

4.録画状態なら停止する(画像中③が赤丸ならクリックして黒丸にする)

5.既に出力されているリクエスト・レスポンスを削除する(画像中①をクリック)

6.「Preserve log」にチェックを入れる(画像中②のチェックを入れる)

7.録画状態にする(画像中③をクリックして赤丸にする)

8.ブラウザ上で任意の操作を行う(リクエスト・レスポンスが記録される)

9.画像黄枠内で右クリックし、”Save all as HAR with content”をクリック

10.ファイル保存ウインドウが開くので、任意のフォルダにharファイルを保存


ちなみに、harファイルはjson形式で保存されています。
そのままでは人間の目で確認するのが困難ですが、”HTTP Archive Viewer“のようなページでharファイルを解釈することで、ChromeのNetworkタブのような表示形式に加工することができます。


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

Webシステムの開発ではリクエスト・レスポンスの調査・確認が必要になることが少なくありません。
そこでharファイルが役に立つので、harファイルの扱いには慣れておいた方が良いです。

このような細かいテクニックはこれからも展開していこうと思います!

役職に応じた役割の違いと、それを意識した行動

通常の会社では、大まかに言って役職が「経営者」「管理者」「担当者」と分かれています。
先に挙げた方が、責任が重い上位の役割であるとみなされます。
そして、組織は通常ピラミッド式になっており、上位者は見る範囲が広く人数が少ない、下位者は見る範囲が狭く人数が多くなります。

それぞれ役割が違うため、その役割の違いを意識して行動することで、仕事がスムーズに進むようになります。
自分の役割をこなすことも重要ですが、組織として高いパフォーマンスを出すためには、役割が違う者と上手く協働することもまた重要です。


「経営者」「管理者」「担当者」の役割の違いは、簡単に言うと以下の通りです。

■経営者

  • お客様を開拓し、お客様にサービスの提案を行う
  • サービスを提供することで利益を得られるようにし、経営を継続可能にする
  • 会社全体の状況を見て、全体最適を考える

■管理者

  • サービス提供の実作業、及びサービスの担当者の管理を行う
  • 複数のサービスについて管理を行う

■担当者

  • サービス提供の実作業を行う
  • 自分が担当するサービスについて専門的に取り扱う

  

ここで重要なのは、下位者が持っている全ての情報を上位者は持っていないということです。
一つ一つのサービスの専門的な知識、ITシステム提供であればプログラムや業務ロジックといったものは、通常は担当者が一番詳しく、管理者や経営者は概要しか知らないことが多いです。


役割の違いにより、持っている情報には差が生まれます。
この差を必要に応じて埋めるためには、上位者への的確な「報連相」が重要になります。
今更書くまでもないかもしれませんが、「報連相」とは以下のようなものです。

■報告

上位者から指示された作業の進捗状況や結果を知らせる。

■連絡

上位者に事実を知らせる。

■相談

判断に迷うことがあった時に、上位者に指示を仰ぐ。

  

何か良くない事象が起きた時に、上位者が作成した方針やマニュアルに沿って対応できる場合には問題ありません。
その場合は、報告や連絡で問題がないことを伝えれば良いです。

しかし、上位者が作成した方針やマニュアルに沿って対応できない場合は問題です。
その場合は、どのように対応するか相談する必要があります。
(IT業界では「エスカレーション」とも呼ばれます)

相談を行う際、自分が担当しているサービスについて上位者は自分ほど詳しくないので、判断に必要な情報を的確に連絡することが重要です。
また、上位者は見る範囲が広く忙しいので、多くの労力をかけずに判断できるような形で相談すると尚良いです。
つまり、「~という事象が起きています。~と私は判断したので~をしたいのですが、それでよろしいですか?」という形で相談を行うことが理想です。

しかし、このような相談を行うためには、上位者の意図を汲む必要があります。
スキルや経験を積まない内は難しいので、その場合は「自分で判断できない何かが起きている」ということを伝えられれば及第点です。自分で抱え込むのが一番良くないです。


上位者の意図を汲んで仕事ができるようになると、自分自身が上位者へステップアップするチャンスを得られます。
この際、自分が担当していた仕事を後任に任せられるかどうかが一つの課題になります。
今の仕事をしながら上位者の仕事もこなすことは仕事量的にできないので、自分が担当していた仕事は後任に任せる必要があります。
(それができない場合は、ステップアップが止まってしまいかねません)

しかし、実際に後任に仕事を任せてみると、教える時間がかかりますし、普段自分がやらないようなミスもします(そのリカバリーでも時間を取られます)。お客様に迷惑をかけてしまうこともあります。
自分よりも知識・経験が浅い人に仕事を任せる場合は特にこの傾向が顕著です。そうではない場合も、仕事に慣れる期間は必要なため、この傾向が見られることがあります。
とはいえ、このようなデメリットは一時的なものであり、長期的に見れば組織にとって以下のようなメリットがあります。

■後任に仕事を任せることによるメリット

  • 自分の技術が他の人にも伝わり、組織全体としてレベルアップする
  • 複数人で作業できるようになるので、残業が減り、アウトプットの量も増える
  • 自分にしかできない作業に集中できるようになり、作業の品質が良くなる(品質チェックと報告、仕事の方向性の検討…等)
  • 休暇や異動等で自分が居なくなった時にも仕事が回るようになる
  • 自分の仕事に他の人の目が入ることで、仕事の改善点に気付くことができる

  

そのため、自分の仕事を後任に任せることは、自らのステップアップのためだけでなく、組織のためにもなります。


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

スキルや知識に優れている若手でも、組織での動き方がわからずに躓くことがあります。
それはとても勿体ないことなので、組織の中ではどのように役割が分担されているのか、その中で自分はどのように動くべきなのか、ということを意識していただければ、と思っています。