技術とか戦略とか

SIerで証券レガシーシステムを8年いじってからSESに転職した業務系エンジニアによる技術ブログ。

SE仕事術

PlantUMLの紹介

PlantUMLは、テキストからUMLの図を生成することができるツールです。UMLをPlantUMLで書くことで、Gitでの管理が容易になり、差分比較もできるようになる、というメリットがあります。 下記のページにアクセスするだけで、すぐに使うことができます。図の書…

「見積もり概論」パワポ公開

社内教育向けに見積もりの概論を説明するパワポを作成したため、公開します。https://1drv.ms/p/s!AivF3bzWXOzukWVXk5hscKYqkLkM

サブシステムとは

1つのシステムでは、様々な業務を実現しています。そして、場合によっては、業務毎でシステム内で別々のシステムに分かれていることがあり、この分かれているシステムのことを「サブシステム」と呼びます。 この記事では、サブシステムが生まれる理由や、サ…

試験工程管理の概論

SI業界では、開発に関する知識や経験が不十分なメンバーを試験工程の管理者として任命することが少なくありません。本来であれば、応用情報処理技術者試験(最低でも基本情報処理技術者試験)に相当する知識、及びその知識を実務で使った経験を備えた者を管…

保守作業をスピードアップする方法のまとめ

システム保守の作業では、通常のシステム開発の他に、システム・データの調査依頼や、データの抽出・補正の作業依頼等、様々な作業が行われます。これらの作業は不定期に、時に大量に依頼されるため、作業のスピードアップが重要になります。 この記事では、…

ソースコードの重複の排除を関数で学ぶ

「ソースコードから重複を排除して保守性を高める」という考え方は、実務で良いコードを書く上で重要な考え方です。この考え方が身に付かない内はオブジェクト指向の理解も不十分になるのですが、いきなりオブジェクト指向から入るとこの考え方の重要性がわ…

オブジェクト指向を利用する本当の理由

オブジェクト指向を利用する理由として、プログラミングの入門書には「オブジェクト指向を用いると、現実世界をプログラミングでそのまま表現できる」という意のことが書いてあることが多いです。その例として、・犬に「ワン」と鳴かせ、猫に「ニャーン」と…

二重サブミットのテストにはクリック連打ツールを用いる

Webシステムでは、同一のサブミット(リクエスト)が二重送信されることによる障害が起こり得ます。二重サブミットが発生する原因としては、以下の3つが挙げられます。①サブミットボタンを連打する②ブラウザの戻るボタンで遷移元の画面に戻り、再度サブミッ…

実装では極力要件通りに条件指定をするべきである

表題の通りですが、実装では極力要件通りに条件指定をするべきです。従属的に求まる条件で代用できるとしても、その条件は原則として指定するべきではありません。 具体的に何が言いたいのか、なぜそう言えるのか、ということについて、以下で具体例を挙げて…

設計書のメンテナンスのあるべき姿

設計書は、システム概要を指し示すために必要なドキュメントです。設計書があれば、実装を知らない立場の人(例えば要件定義担当や上位の設計者)との意思疎通がスムーズになりますし、開発者を新たに向かい入れる時にも実装の内容をスムーズに理解してもら…

高度な技術が最適解とは限らない

AIや難しいアルゴリズムに憧れる人は少なくないと思いますが、そのような高度は技術が常に最適解であるとは限りません。高度ではない技術には、以下のようなメリットがあります。・人間が結果を予想しやすい・保守が容易である 一言で言うと、「扱いやすい」…

文字コードの入門

この記事では、文字コードに関する初歩的な内容について簡単に書きます。 1.文字コードという概念とコード体系コンピューターで取り扱う文字には、それぞれコードが割り振られています。コードは1~4バイトの情報として取り扱われ、1バイトの文字は1バイト…

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

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

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

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

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

処理時間(計算量)はデータ量に比例するとは限りません。例えば、データ量が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…

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

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