技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

SE仕事術

「新たな導線の追加」という現行踏襲案件

要件が「現行踏襲」である案件の代表的なリスクとして、「現行の仕様を調査してその仕様に合わせる工数が過小評価されやすい」というリスクがあります。そして、要件が「新たな導線を追加する」である案件は、一見現行踏襲でないように見えて、実際は現行踏…

例外ケースは処理の始めに除外する

プログラムで何かしらの処理を記述する場合、本当に実装したい処理(本処理)に入る前に、例外ケースを除外するテクニックがあります。このように記述することで、本処理では例外ケースを考えずに済むため処理内容を考えやすくなりますし、例外ケースの場合…

処理時間はデータ量に比例するとは限らない

処理時間(計算量)はデータ量に比例するとは限りません。例えば、データ量が10倍になったからと言って、処理時間も10倍になるとは限りません。 処理時間が何倍になるかは、アルゴリズムにより決まります。アルゴリズム次第では、データ量が10倍になった時に…

Excelファイルを設定変更無しで読み取り専用で開く方法

エクスプローラー上でファイルを右クリックし、「新規作成」を選ぶことで、表題のことを実現できます。 ファイルを誤更新したくない、しかしファイル設定を変えるのは面倒、という時に使えるテクニックです。

コーディング規約の重要性と無い場合の対処

ソースコードを書く上で、好みの書き方は個人によってある程度分かれてくると思います。例えば、if文で定数を右辺に書くか左辺に書くかは、人によって好みが分かれます。 ・右辺に書く例 if (value == 9) { ・左辺に書く例 if (9 == value) { 左辺に書く方法…

炎上プロジェクトへの人員追加のまずさと、正しい人員追加の方法

IT業界では、炎上プロジェクトへの人員追加は悪手とされ、遅れが更に拡大する結果になることが多いです。(一般的には、スコープ見直しやスケジュール延伸が良い手とされます) このことは「ブルックスの法則」として知られており、その法則では以下の理由に…

ソース管理のアンチパターン「リポジトリ内のソースが信頼されない」

この記事は「ソース管理ルールが信頼されないことによるデグレード例と対策(https://akira2kun.hatenablog.com/entry/2019/01/03/103732)」の焼き直しです。 ---- ソース管理を行う方法としては、今日ではGitベースのプラットフォーム(GitHub、Bitbucket…

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

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

類似バグを効率的に見つけ出すための観点

品質を上げる上では、レビューやテストにてあるプログラムのバグを1つ見つけた場合、「他にも同じようなバグが潜んでいないか」という視点で追加でレビューやテストを入れるのが定石です。類似バグが発生しやすいポイントを押さえて追加レビュー・追加テス…

事例から見るシステム利用者に向けた理想的な障害報告

少し古い事例ですが、2020年10月01日の東証ArrowHead障害の会見から、システム利用者に向けた理想的な障害報告を見て行きたいと思います。https://www.youtube.com/watch?v=Sokp32qOvyE この会見は、障害報告のお手本と言える会見だと思います。 ビジネスを…

プログラミング言語のスキルチェンジで役に立った共通スキル

私は元々COBOLやC言語を主に扱っていたエンジニアでしたが、3年前からJavaやC#を中心的に扱う現場で仕事をするようになり、現在ではJavaScriptを使うフロントエンド業務に従事するようになりました。プログラミング言語に依らない共通のスキルを有していた…

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

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

データレコードの種類を増やして拡張性を持たせる

企業間でやりとりするファイルでよく見かけるフォーマットとして、レコードが「ヘッダレコード」「データレコード」「トレーラレコード」に分かれているフォーマットがあります。簡単に言うと、それぞれのレコードの説明は以下のようになります。 【それぞれ…

システムの概要を示す設計書が本当に必要な設計書である

表題の通りですが、システム開発で本当に必要な設計書は、システムの概要を示す設計書です。そのような設計書があれば、実装を知らない立場の人(例えば要件定義担当や上位の設計者)との意思疎通がスムーズになりますし、開発者を新たに向かい入れる時にも…

Webデザインの超概要

Webデザインを学習するにあたり全体像を見渡す記事が必要と感じたので、作成しました。 1.近年のWebページの傾向エンドユーザーの目に触れる部分について、HTMLの機能をそのまま使ったシンプルなページは少なくなり、ボタンやラベル等の見た目を装飾したペ…

プログラム上の変数やロジックの意味を現実のビジネスルールと合わせることの重要性

通常、初回リリースの時点では、ソースコードは現実のビジネスルールを反映したものになっています。(なっているべきです) 障害対応や保守開発でソースコードを修正する際は、将来の保守性を犠牲にしないために、ビジネスルールに沿った修正を行うべきです…

ソースコード中に顧客情報を記述してはいけない

特定の顧客用に特別なビジネスロジックを用意している場合、以下のようにソースコード中に顧客情報を記述することで実装することはできます。(顧客番号が'1111111'である場合に特別なビジネスロジックを実行するとします) :::if (処理中の顧客番号が'11…

システム改修で発生するデータ移行とは

通常のシステムでは、データベースやファイル等にデータを蓄積します。そして、システムの改修の際に、そのデータのフォーマットを変更することがあります。 データのフォーマットの変更には、「これまでに蓄積されたデータをどのように扱うのか」という問題…

Base64の説明とjavaでのエンコード・デコードの例

Base64とは、テキストデータやバイナリデータ(画像ファイル、PDFファイル等)を表現する方式の一つです。以下の64種類の文字と末尾のパディング文字(=)を用いて表現するのが特徴です。・アルファベット(a~z, A~Z)・数字(0~9)・一部の記号(+, /) …

Google翻訳を利用した英文コミュニケーション

国内で開発作業に従事している場合でも、国外の技術者とのやりとりが必要になるケースがあります。特に理系大卒の技術者は英語力に自信が無い場合が多い(理系大卒の新卒時点でのTOEICの平均スコアは400点台)のですが、現在はGoogle翻訳という文明の利器が…

テレワークにおけるコミュニケーションのコツ

コロナ渦の影響で、テレワークが流行っています。テレワークではコミュニケーションの取り方が変わるため、チャットでのやりとりに慣れていない技術者がコミュニケーションの取り方に悩むという姿を目にします。 先日、相談に乗る機会があったので、それを元…

カプセル化によるルールの強制

オブジェクト指向を適用すると、ソースコードの重複した記述を排除でき、生産性や品質を向上することができます。それとは別に、他の開発者にルールを強制できるメリットもあります。カプセル化を例にして説明するのがわかりやすいので、今回はカプセル化を…

HelloWorldを書く意義

職業柄、実務で使った経験のない言語やフレームワークをある日突然現場で使うようになることが多いです。そのような場合、HelloWorldをプライベートで書くだけで、現場の実務に挑むようなこともあるのですが、HelloWorldを書くだけでも大分違うと感じます。 …

JSONフォーマットとは

JSONとは、データ構造を記述するフォーマットの一種です。CSV等とは異なり、階層構造を記述することができます。階層構造を表現できるフォーマットとしてはXMLも挙げられますが、JSONフォーマットはXMLよりも簡易的に記述できる、JavaScriptとの親和性が高い…

ゴンペルツ曲線(信頼度成長曲線)とは

ゴンペルツ曲線(信頼度成長曲線)とは、テストで発見されるバグ数をグラフにしたものです。横軸に時間、縦軸に累積バグ数をとる場合、下記のようなグラフになります。 テストを開始した直後は、テスト手順が確立していないため、バグはなかなか見つかりませ…

障害の発生原因の切り分けのポイント

テストや本番運用で障害が発生した場合、既知の障害等で原因が明らかな場合を除き、対応のために原因を調査する必要があります。原因を調査する上ではどこに原因があるのかの切り分けが必要になります。以下では、切り分け作業を行う上でのポイントを順を追…

総合試験(システムテスト)では設計の前提を疑う

設計においては、入力データについてある前提を置いて条件分岐を作り込みます。例えば、・「支払い手段」が"1"の場合はクレジットカード払いであると判定する・「契約日」が"2016/01/01"~"2016/12/31"かつ 「支払い回数」が"48"ならキャンペーン対象である…

2020年10月01日-東証ArrowHead障害まとめ

ニュースや東証の会見をまとめたものです。 ・2020/10/01の9時前(取引開始前)、東証ArrowHeadの相場情報システムで障害発生。・原因は機器のハード障害である。・機器は多重化されており、フェールオーバー(機器切り替え)も想定されていた。・今回の障害…

CAB試験について調べてみた

IT業界の適性検査では、「CAB」と呼ばれる試験が使われることが多いようです。どのような試験なのか気になったので、以下のサンプル問題を見てみました。 【2022年卒】CAB 例題・問題をイラストで超分かりやすく解説! 【Study Pro】https://saisokuspi.com/…

フローチャートを書く意義と書き方

フローチャートは、処理の流れを図に起こして整理するために使う技法です。フローチャートを起こすことで、他の人に処理の流れを伝えやすくなるので、設計書では良く用いられます。また、自分自身も処理の流れを理解しやすくなるので、複雑なプログラムを組…