Excelへのテキストの貼り付け(ペースト)が途中で切れる時の対処法

表題のように、Excelへテキストを貼りつけると、貼りつけたテキストが途中で見切れてしまうことがあります。
原因は、貼り付けようとしているテキストにNUL文字(16進数の文字コードでx00)が含まれているからです。
NUL文字が含まれていると、そこで貼りつけが終了してしまいます。
(なお、メモ帳への貼り付け、サクラエディタへの貼り付け等でも同じようにNUL文字の箇所で切れます)

NUL文字をスペース(x20)に置換して問題ないのであれば、予めNUL文字をスペースに置換してからコピーすることで、この問題を解決できます。
詳しい手順は以下の通りです。

1.テキストをファイルに出力する

初めからファイル形式なのであれば問題ないのですが、問題なのはDBのレコード等、ファイル形式になっていない場合です。
DBのレコードであれば、CSV等の形式でエクスポートする必要があります。
エクスポートの方法はRDBMSによって異なるので、別途調べる必要があります。
なお、Oracle SQL DeveloperのようなGUI操作ができるツールを使用しているのであれば、ツール上で探せばエクスポート用の機能が見つかると思います。

2.16進数の置換ができるエディタで置換する

1で出力したファイルを、エディタで開き、NUL文字(x00)をスペース(x20)に置換します。
置換の方法は以下の通りです。

・サクラエディタの場合

 以下のように指定して置換すれば良いです。
  置換前:\x{00}
  置換後:\x{20}

・秀丸の場合

 開いた瞬間に自動的にNUL文字がスペースに置換されます。

・Stirlingの場合

 置換機能で、16進データを選択し、以下の指定をすれば良いです。
  置換前:00
  置換後:20

3.置換後のテキストをコピーし、Excelに張り付ける

 これで途切れずに貼りつけができるはずです。


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

プログラムで出力したテキストには、NUL文字が含まれることが少なくありません。
NUL文字はC言語系のプログラムでは終端文字として使われているからか、Excelに貼りつけることができず、このような考慮が必要になります。

躓く人も少なくないと思うので、今回記事にしてみました。
何かの助けになれば幸いです。

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

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

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


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

■経営者

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

■管理者

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

■担当者

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

  

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


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

■報告

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

■連絡

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

■相談

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

  

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

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

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

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


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

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

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

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

  

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


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

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

本番障害発生時に元請けSIerで発生する作業とその影響

社会インフラを支えるシステム、例えば金融システムや公共システムについては、高い信頼性が求められます。
このようなシステムの本番運用で障害が発生した場合、その結果は重大なものになります。
一般的なイメージとして、その「重大なもの」として、以下のようなものをイメージすると思います。

  • 信頼が失墜する(最悪の場合は報道される)
  • 経営者がお客様に怒られて、責任者が経営者に怒られて、技術者が責任者に怒られる
  • 技術者や責任者が缶詰になる

この記事では、本番運用で障害が発生した場合に、元請けSIerで一体何が発生するのか、元請けSIerのプロパーであった私の経験を交えて、より具体的に書いていこうと思います。
そして、具体的に何が起こるのかを知ることで、品質向上の意識を高めていただければと思います。


【障害の検知】

障害を検知する契機として、「お客様に指摘される」という契機で見つかるのは最悪です。
事前にSIer側で障害を発見できなかったためにお客様の心象が悪くなることで、その後の要求(障害対応、再発防止、補償)が厳しいものになるためです。
また、お客様に指摘されているということは、既にデータが作成されて、「画面」「帳票」といった形でお客様の目に触れているので、そのデータを補正しなければならないということで障害対応の作業内容の難易度も上がります。

そのため、お客様に見つかる前に障害を検知する努力を惜しまず行うべきです。
異常なデータが発生した時点でその箇所の処理を停止させれば、運用作業でその箇所だけ補正して対応することができます。
エラーハンドルが重要であるとされるのはこのような理由からです。
また、この運用作業は人手で行うこととなりミスが発生しやすいので、システムを構築する場合は、運用作業を予め計画して手順化することでミスの発生を抑える努力も重要になります。
システム改修直後は障害が発生する可能性が高いので、すぐに障害対応できるように、改修直後の監視体制を敷くことも重要です。

なお、システム改修の結果、思いもよらぬ箇所に影響が発生し、重点的に監視していない箇所で障害が発生しお客様に指摘されるというのも良くあることです。
影響調査を抜け漏れなく行うことも重要になります。

【障害の対応方針の検討】

障害が発生した場合、どのような障害が発生したのか、その事象内容と原因をお客様に報告する必要があります。
そして、システムの都合の観点と、お客様の業務の継続の観点から、対応方針をすり合わせることになります。
検討している間にも障害は発生し続けているので、検討は迅速に行う必要があります。

システムの都合の観点で言うと、障害対応でプログラム作成が必要なのであればその期間を見る必要がありますし、プログラムを実行・リリースするタイミングも計る必要があります(サービス停止日にしか実行・リリースできないことも多いです)。
それまでの間の暫定対応(運用作業)の計画も立てる必要があります。
そして、暫定対応はお客様の業務を継続する上で必要なレベルを満たす必要がありますし、恒久対応では元々求められていたレベルに戻す必要があります。暫定対応中に制約や機能制限が発生するのであれば、そのことについてもお客様の了承を得る必要があります。

なお、この時点で明らかに対応するべきことがあれば、責任者の許可を取った上で、技術者は検討中にも対応し続ける必要があります。
手順書に書かれた作業や、その他常識的に行うべき作業(例えばディスク容量オーバーでシステムが落ちたのであれば不要データの削除とシステム再起動)がそれに該当します。

【暫定対応の実施】

検討された方針に従って、暫定対応を行います。
この作業は基本的に手作業での運用になることが多いため、運用担当者を立てて体制を整える必要がありますし、運用作業でのミスが無いように手順書や簡易ツールを作成する必要もあります。
また、暫定対応中に制約や機能制限が発生するのであれば、そのことを説明する文書の作成と周知という事務作業も発生します。

【恒久対応の実施】

プログラムの作成が必要なのであれば、それを作成する担当者を用意して工数を割り振る必要があります。
そして、プログラムの本番環境での実行・リリースに向けた準備(手順書作成、社内手続き等)も必要になり、また実行・リリースに向けた出社体制を整える必要も出てきます。
お客様の立ち合いが必要なのであれば、お客様にも立ち合いを依頼する必要があります。

【再発防止策策定】

恒久対応が完了した後、お客様へ恒久対応完了の報告を行います。
しかしそこで終わりではなく、今後同じようなことが起こらないように、障害が発生した要因の報告と、再発防止策の策定を求められることが多いです。
社内での再発防止策の検討、そして再発防止策の説明にまた工数を取られることになります。
また、再発防止策は、チェック体制の強化に繋がることも多いので、それが積み重なると開発スピードの低下にも繋がりかねません。
(多くの開発者にとってストレスになるであろう、重厚長大なチェックリスト、煩雑な承認体制、頻繁なダブルチェック・トリプルチェックは、再発防止策が積み重なって出来上がるものです)

【障害に対する金銭的な補償】

障害が発生した場合、SIer側が金銭的な補償をしなければならない場合もあります。
システムのSLA(サービス内容に関する合意文書)に補償に関する項目があるなら、それに従って補償をしなければなりません。
重大な障害である場合は、裁判で損害賠償請求されることもあります。

仮に、直接的な補償がなかったとしても、障害を発生させたことでその後の交渉でSIer側が不利になり、システム継続利用時に値下げ要求をのまざるを得なくなることも少なくありません。
ニュースで報道された場合は、直接被害が発生していないお客様との交渉でも不利になりやすくなります。
当然、競合システムに離反されることもあり、この場合も収益の低下に繋がります。


以上のように、本番障害を発生させることで、SIer側には以下のような損害が発生します。

  • 障害対応や再発防止策のための工数の発生
  • 再発防止策による開発スピードの低下
  • 障害に伴う金銭的な補償

本番障害が頻発する現場では、不定期に発生する障害対応・再発防止策の工数と開発スピードの低下が原因で、次のシステム開発にも支障が発生し、QCD(品質・コスト・納期)のバランスを取ることが困難になります。
障害に伴う補償をしただけでなく次のシステム開発も予定通りに進めることができなくなるため、収益力が低下することになります。
頑張って長時間働いても、それに見合う収益を得ることができなくなってしまいます。

このように、本番障害を発生させることによる損害は誰にとっても大きいため、本番障害を発生させないように一人一人が意識する必要があります。
障害を発生させた経験から学ぶという姿勢ではなく、社内外の過去の障害事例から学ぶ姿勢が重要になります。


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

2次請け以降の立場で案件に参画していると、本番障害発生時に何をしているのか伺い知れない所が出てきます。
この記事により、その情報を上手く共有できれば幸いです。

来年も、この調子でブログを更新していこうと思います。
では、良いお年を!

Excel:ピボットテーブルの使い道と作り方(テストデータ付き)

ピボットテーブルとは、集計作業を行う機能のことです。
自力で集計用の表を作成して関数を書くことでも集計作業は可能ですが、ピボットテーブルを用いればマウス操作だけで簡単に集計作業を行うことができます。

今回の記事では、架空の体力測定結果を集計する例を挙げて、ピボットテーブルの使い方を説明します。
この例では、握力について、男女で差があるのか、測定月で差があるのかを、平均値を出すことで確認します。

なお、使用するデータは以下からダウンロードできます。手を動かしながら覚えたい方はダウンロードしてみてください。
https://cyzennt.co.jp/blog/wp-content/uploads/2021/10/f0baae9405ab2b4cf966538a631c041e.xlsx


【手順】

1.集計作業を行う表をドラッグで選択し、挿入>ピボットテーブルを選択する。

2.ドラッグした範囲が自動的に選択されているので、OKボタンを押下する。

3.ピボットテーブルのシートが生成されるので、列に測定月、行に性別、値に握力(kg)をドラッグして選択する。

4.「合計 / 握力(kg)」の右にある矢印を選択し、値フィールドの設定を選択する。

5.デフォルトでは合計が選択されているので、平均を選択し、OKボタンを押下する。

6.性別ごと、また測定月ごとで、握力(kg)の平均値が算出される。

これで、男女では大きな差があるが、測定月では大きな差がないことが一目でわかるようになりました。


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

実務でも集計作業を行うことはあり、例えば性能試験の結果の分析で集計作業が必要になります。
そのような場合に、ピボットテーブルで作業を効率化することができるので、覚えておいて損はない機能だと思います。

ExcelでINSERT文を作成

Excelの機能を使うことで、簡単な手順で大量のSQLのINSERT文を作成することができます。
臨時の運用対応ではデータが公表されてから30分以内にDBに反映させなければならない等、限られた時間でのデータ補正が必要になるため、プログラムを事前に用意できない場合はExcelでの対応が有効になります。
運用対応だけでなく、開発時のテストデータ作成も効率的に行うことができます。

以下で、例を挙げて説明していきます。

【INSERT対象のテーブル定義】

【INSERT文の作成】

①下記のように入力する。

G2セルについては、下記の式を入力する。

=A$2&”000000″

この式によりA2セルと文字列”000000″を結合する。

参照時には$マークをつけて絶対参照とする。

(後の手順でコピーする時に参照先がずれないようにするため)

②B2~H2セルを3~6行目にコピーする。

③C3セルに2を入力してから、C2~C3セルを選択し、4~6行目までオートフィルする。

④B2~H6セルをコピーし、サクラエディタ等のテキストエディタに張り付ける。

⑤セルを区切るtabを削除する。

サクラエディタの場合は、”\t”を””に置換することで削除できる。

【完成したINSERT文】


なお、UPDATE文やDELETE文等も、同じ要領で作成することができます。
また、今回は紹介していませんが、区切り位置、重複の排除、フィルタ等も使用頻度が高い機能であり、これらの機能を使えばフォーマット変換やデータ抽出等も可能になります。


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

今回紹介したようなテクニックは技術的には難しいことはしていませんが、実務で良く使う便利なテクニックです。
このようなテクニックはまた紹介していきたいと思います!