技術とか戦略とか

SIerで証券レガシーシステムを8年いじってからSESに転職した普通の文系SEによる技術ブログ。

SE仕事術

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

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

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/…

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

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

「現行機能の踏襲」という要件定義のまずさと、苦し紛れの対応策

私自身は幸運なことに、要件が「現行機能の踏襲」であるプロジェクトに携わったことはないのですが、要件がこれに近いプログラムをプライベートで作成しているので、参考までにその経験を記事として残します。 -------------- 私が作成しているプログラムは…

動的計画法を試してみた

動的計画法とは、再帰的なロジックを、計算結果を都度記録するロジックで代替することで、計算速度を向上させるテクニックです。競技プログラミングのテクニックの一つなのですが、高度なアルゴリズムを実装する開発だけではなく普通の業務システム開発にも…

O/Rマッピングの簡単な説明

今更ですが、O/Rマッピングについて、背景にある考え方や必要な機能、問題点を簡単にまとめました。ちなみに、私も性能問題の対応案件でO/Rマッパーを少し使ったことがあります。その時の体験も元にしてまとめます。 【O/Rマッピングが生まれた背景】O/Rマッ…

ソースコード修正の競合と統合

複数の案件が同時に動いており、1つのソースコードを複数の案件で修正する場合、ソースコード修正の競合(コンフリクト)の統合(マージ、差分取り込み)が必要になります。統合には、全体のロジックの整合性や案件のリリース時期の違いを考慮する必要があ…

フィボナッチ数列と見積もりへの応用

フィボナッチ数列とは、0,1,…から始まる数列であり、左の2項を足し合わせた数が続く数列のことです。続きを書くと、0,1,1,2,3,5,8,13,21,34,55…となります。 フィボナッチ数列は、「ストーリーポイント」と呼ばれる見積もり手法で用いられる数字です。スト…

java:実務で使うテクニックでfizzbuzzを解いてみた

10年ほど前に流行ったプログラミングの問題として、fizzbussと呼ばれる問題があります。この問題は、応募者のプログラミング経験の有無を見極める問題であり、問題の内容は以下の通りです。・1から100までの数を出力する。・3の倍数の時は代わりに"fizz"と…

プログラミングにおけるトランザクションの基本的な考え方

情報処理技術者試験では「トランザクション」はデータベースにおける考え方の一つとして取り上げられていますが、実際にプログラミングを行う際にもトランザクションを意識することは重要になります。画面でもバッチでも重要になります。 例えば銀行システム…

マークダウン記法とは

【マークダウン記法とは】マークダウン記法とは、簡単に言うとマークアップ記法(HTML等)を簡略化したものです。タグを用いることなく、簡単な記法で文書の整形を行うことができます。Wordに代表される文書作成ツールやマークアップ記法の文書よりも簡単に…

シーケンス図を書いてマルチスレッドプログラムを整理する

マルチスレッドプログラムを開発していると、どの処理がいつ動くのか把握し辛くなることがあります。そこでシーケンス図を書くと、ややこしいスレッド間の関連をわかりやすく整理することができます。 シーケンス図とは、UMLの一種であり、クラスやオブジェ…

半角カナの文字コードに関する注意

0x00~0x7FのASCIIコード(半角英数記号やNUL・改行等の特殊な文字)に関しては文字コードセットの違いを気にする必要がないのですが、日本語の文字に関しては複数の文字コードセットが存在し、違いを気にする必要があります。半角カナについても例外ではな…

人的ミスを考慮した手順の作成

システムを運用する上で、手作業での運用作業は避けられないものです。例を挙げると、プログラムの不具合の対応でデータを補正する、自動的にデプロイできない特殊なプログラムをデプロイする、といった運用作業が発生します。 手作業での運用作業では、コマ…

プライバシーマーク取得企業で働く上での心がけ(一般社員向け)(2019年度版)

私が勤める会社でもプライバシーマークを取得しており、2019年度版の一般社員向けの研修があったので、内容を簡単にまとめます。研修テキストはネットに上げられませんし上げてもあまり意味はないので、一般論的なことを簡単にまとめるだけにします。詳細な…

チェックリストの形骸化とその対策

バグの埋め込みを防ぐために、現場毎でチェックリストが設けられていることが多いです。そのチェックリストには過去のバグの経験則が書かれていることも多く、ある意味宝物のようなものです。 しかし、実際の開発では、そのチェックリストが形骸化することも…