SE仕事術
PlantUMLは、テキストからUMLの図を生成することができるツールです。UMLをPlantUMLで書くことで、Gitでの管理が容易になり、差分比較もできるようになる、というメリットがあります。 下記のページにアクセスするだけで、すぐに使うことができます。図の書…
社内教育向けに見積もりの概論を説明するパワポを作成したため、公開します。https://1drv.ms/p/s!AivF3bzWXOzukWVXk5hscKYqkLkM
1つのシステムでは、様々な業務を実現しています。そして、場合によっては、業務毎でシステム内で別々のシステムに分かれていることがあり、この分かれているシステムのことを「サブシステム」と呼びます。 この記事では、サブシステムが生まれる理由や、サ…
SI業界では、開発に関する知識や経験が不十分なメンバーを試験工程の管理者として任命することが少なくありません。本来であれば、応用情報処理技術者試験(最低でも基本情報処理技術者試験)に相当する知識、及びその知識を実務で使った経験を備えた者を管…
システム保守の作業では、通常のシステム開発の他に、システム・データの調査依頼や、データの抽出・補正の作業依頼等、様々な作業が行われます。これらの作業は不定期に、時に大量に依頼されるため、作業のスピードアップが重要になります。 この記事では、…
「ソースコードから重複を排除して保守性を高める」という考え方は、実務で良いコードを書く上で重要な考え方です。この考え方が身に付かない内はオブジェクト指向の理解も不十分になるのですが、いきなりオブジェクト指向から入るとこの考え方の重要性がわ…
オブジェクト指向を利用する理由として、プログラミングの入門書には「オブジェクト指向を用いると、現実世界をプログラミングでそのまま表現できる」という意のことが書いてあることが多いです。その例として、・犬に「ワン」と鳴かせ、猫に「ニャーン」と…
Webシステムでは、同一のサブミット(リクエスト)が二重送信されることによる障害が起こり得ます。二重サブミットが発生する原因としては、以下の3つが挙げられます。①サブミットボタンを連打する②ブラウザの戻るボタンで遷移元の画面に戻り、再度サブミッ…
表題の通りですが、実装では極力要件通りに条件指定をするべきです。従属的に求まる条件で代用できるとしても、その条件は原則として指定するべきではありません。 具体的に何が言いたいのか、なぜそう言えるのか、ということについて、以下で具体例を挙げて…
設計書は、システム概要を指し示すために必要なドキュメントです。設計書があれば、実装を知らない立場の人(例えば要件定義担当や上位の設計者)との意思疎通がスムーズになりますし、開発者を新たに向かい入れる時にも実装の内容をスムーズに理解してもら…
AIや難しいアルゴリズムに憧れる人は少なくないと思いますが、そのような高度は技術が常に最適解であるとは限りません。高度ではない技術には、以下のようなメリットがあります。・人間が結果を予想しやすい・保守が容易である 一言で言うと、「扱いやすい」…
この記事では、文字コードに関する初歩的な内容について簡単に書きます。 1.文字コードという概念とコード体系コンピューターで取り扱う文字には、それぞれコードが割り振られています。コードは1~4バイトの情報として取り扱われ、1バイトの文字は1バイト…
要件が「現行踏襲」である案件の代表的なリスクとして、「現行の仕様を調査してその仕様に合わせる工数が過小評価されやすい」というリスクがあります。そして、要件が「新たな導線を追加する」である案件は、一見現行踏襲でないように見えて、実際は現行踏…
プログラムで何かしらの処理を記述する場合、本当に実装したい処理(本処理)に入る前に、例外ケースを除外するテクニックがあります。このように記述することで、本処理では例外ケースを考えずに済むため処理内容を考えやすくなりますし、例外ケースの場合…
処理時間(計算量)はデータ量に比例するとは限りません。例えば、データ量が10倍になったからと言って、処理時間も10倍になるとは限りません。 処理時間が何倍になるかは、アルゴリズムにより決まります。アルゴリズム次第では、データ量が10倍になった時に…
エクスプローラー上でファイルを右クリックし、「新規作成」を選ぶことで、表題のことを実現できます。 ファイルを誤更新したくない、しかしファイル設定を変えるのは面倒、という時に使えるテクニックです。
ソースコードを書く上で、好みの書き方は個人によってある程度分かれてくると思います。例えば、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を使うフロントエンド業務に従事するようになりました。プログラミング言語に依らない共通のスキルを有していた…
社会インフラを支えるシステム、例えば金融システムや公共システムについては、高い信頼性が求められます。このようなシステムの本番運用で障害が発生した場合、その結果は重大なものになります。一般的なイメージとして、その「重大なもの」として、以下の…
企業間でやりとりするファイルでよく見かけるフォーマットとして、レコードが「ヘッダレコード」「データレコード」「トレーラレコード」に分かれているフォーマットがあります。簡単に言うと、それぞれのレコードの説明は以下のようになります。 【それぞれ…
表題の通りですが、システム開発で本当に必要な設計書は、システムの概要を示す設計書です。そのような設計書があれば、実装を知らない立場の人(例えば要件定義担当や上位の設計者)との意思疎通がスムーズになりますし、開発者を新たに向かい入れる時にも…
Webデザインを学習するにあたり全体像を見渡す記事が必要と感じたので、作成しました。 1.近年のWebページの傾向エンドユーザーの目に触れる部分について、HTMLの機能をそのまま使ったシンプルなページは少なくなり、ボタンやラベル等の見た目を装飾したペ…
通常、初回リリースの時点では、ソースコードは現実のビジネスルールを反映したものになっています。(なっているべきです) 障害対応や保守開発でソースコードを修正する際は、将来の保守性を犠牲にしないために、ビジネスルールに沿った修正を行うべきです…
特定の顧客用に特別なビジネスロジックを用意している場合、以下のようにソースコード中に顧客情報を記述することで実装することはできます。(顧客番号が'1111111'である場合に特別なビジネスロジックを実行するとします) :::if (処理中の顧客番号が'11…
通常のシステムでは、データベースやファイル等にデータを蓄積します。そして、システムの改修の際に、そのデータのフォーマットを変更することがあります。 データのフォーマットの変更には、「これまでに蓄積されたデータをどのように扱うのか」という問題…