技術とか戦略とか

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

2020-01-01から1年間の記事一覧

java:例外発生後に例外のメッセージを書き変える

例外オブジェクトにはメッセージが格納されており、getMessage()メソッドでそのメッセージを取得することができます。しかし、このメッセージはコンストラクタでのみ設定可能であり、メッセージを後で変更するメソッドは用意されていないため、例外クラスに…

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

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

java:引数で渡した参照型変数をメソッド内で変更する書き方について

参照型変数を引数としてメソッドに渡し、呼び出し先のメソッドの中でその参照型変数に変更を入れた場合、呼び出し元でもその変更内容を参照することができます。ソースコードで言うと、以下のような形で呼び出し元に影響を与えることができます。(isDisplay…

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

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

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

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

java:例外を先に生成して後でthrowする

多くのソースコードでは、例外を発生させると同時にthrowしています。しかし、例外クラスもクラスの一つであり、newするとオブジェクトが生成されますので、先に例外クラスのオブジェクトを生成し、オブジェクトとしてやりとりした後、後でthrowすることが可…

テーブル結合のキーはテーブル間で同一の値を用いること

SQL

当たり前のことなのですが、テーブル結合の際には、結合に必要なキーはテーブル間で同一の値を用いて、結び付けができるようにする必要があります。プログラムでキーとなる値を順次生成する場合、テーブルへのinsertの際にテーブル毎に別々の値を生成してし…

テーブル結合でキー指定が不足すると意図せず直積結合になってしまう

SQL

タイトルの通りです。SQLでテーブル結合する際にありがちなミスの一つだと思うので、情報展開します。 ---------------------- 例えば、以下のようなテーブルがあるとします。 ・社員マスタテーブルcreate table employee_master(company_id CHAR(3) NOT NUL…

WindowsバッチでSofTalk(ゆっくり音声)のHelloWorld

表題のような記事がありそうでなかったので、書いてみました。この記事を見ている方が期待している動作をさせるには、少しだけ工夫が必要でした。 Windows8.1で試しています。 ---- 以下、手順です。 1.SofTalkのダウンロードサイト(vector)にアクセスす…

C#:自ユーザーのダウンロードフォルダーのパスの取得方法

C#

C#には、WindowsOSで定められる特殊なフォルダのパスがEnumで定義されています。 Environment.SpecialFolder 列挙型 (System) | Microsoft Docs 自ユーザーのダウンロードフォルダの直接のパスはEnumに登録されていないのですが、ユーザーのプロファイルフォ…

JavaScript:ブラウザからローカルのテキストファイルの入出

JavaScriptをブラウザから使用する場合、セキュリティによりローカルへのテキストファイルへのアクセスは制限されています。その制約の中で、下記の方法を使用すれば、ローカルのテキストファイルへの入出力が可能になります。 ・入力 テキストファイルをJav…

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

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

Select文の結果を好きな順番に並び替える

SQL

既存データを使用してテストをする場合、特定の項目(社員番号や電話番号等、ソートキーになり得る項目)の順番にテストすることは少ないので、特定の項目でorder byするだけではテーブルのレコードをテスト順通りに並び替えられないことが多いです。 そこで…

JavaScript:inputの入力可能文字を制限する

HTMLのinputタグ(テキストボックス)では、onInput属性により文字が入力される度にJavaScriptの処理を実行し、入力された文字を取得したり編集したりすることができます。これを利用して、inputの入力可能文字を任意に制限することができます。入力の時点で…

WindowsPowerShellでHelloWorld

WindowsPowerShellとは、Windows7以降に標準搭載されているスクリプト言語です。比較的新しい言語であり、従来のWindowsバッチ(cmd.exe)に慣れていると取っつきにくい面もあるのですが、後発である分高機能であり、実務でも使うことがあります。 今回は、Win…

JavaScript:Node.jsから対話式の外部プログラムを実行(別ウインドウ立ち上げ)

Node.jsでは、"child_process"を呼び出すことで、標準出力や標準エラー出力を受け取ることができます。しかし、この実行方法では、別ウインドウでプログラムを実行することができません。具体的には、対話式のプログラムを実行するような場合に困ることにな…

JavaScript:小数点以下の丸め誤差に対応する

JavaScriptでは数値リテラルがNumber型(浮動小数点型)として扱われるため、何も考えずに小数点以下の計算を行うと誤差が発生します。この問題への対処法は他の記事でも紹介していますが、大きく分けて以下の2つが存在します。1.数値項目の単位を変えた…

JavaScript:オブジェクト指向らしい記述をする

JavaScriptではオブジェクト指向がサポートされています。JavaやC#に触れている方であればお馴染みだと思いますが、オブジェクト指向を用いることで規模が大きいプログラムを作る時の生産性が向上します。 以下では、インスタンス生成と、ポリモーフィズム(…

JavaScript:動的型付けとは

JavaやC#に慣れている人だとJavaScriptの動的型付けの概念に戸惑うと思うので、この記事では動的型付けについて簡単にまとめてみます。 ------------------------- JavaScriptには、下記の7つのプリミティブ型(ECMAScript 2015の場合)とObject型が存在し…

Node.jsインストール手順とHelloWorld(Windows、2020年10月)

Node.jsをインストールすることで、JavaScriptをCUIで実行することができるようになります。JavaScriptが得意なエンジニアがサーバーサイドプログラミングに関わる場合によく使われるようです。 今回は、WindowsOSのPCにインストールし、実行確認をする手順…

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

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

JavaScriptでHelloWorld(ブラウザ上に文字表示)

JavaScriptはCUIでも実行できますが、GUIで使うケースの方が多いので、GUIでHelloWorldを書いてみました。JavaScriptのHelloWorldはログに出力したりポップアップ表示したりするものが多いですが、ブラウザ上に出力した方がJavaScriptっぽい気がするので、ブ…

外部結合で結合条件をWHERE句に記述してしまうと片方のテーブルにしかないレコードが抽出されない

SQL

タイトルの通りですが、実務でちょっとうっかりしていたのでメモです。 ---------------------- 例えば、・ユーザがログインした日時を管理するテーブルと、ユーザ名の履歴テーブルがある・ユーザがログインした時、ユーザ名が存在しない場合がある・ユーザ…

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

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

C#:外部コマンド呼び出しの方法

C#

javaプログラムからの外部コマンド呼び出しは別の記事に掲載したのですが、C#でも同様に外部コマンド呼び出しが可能です。プライベートで「画面から外部コマンドを呼び出し、外部コマンドで出力されたファイルを取り込む」というプログラムを作る予定がある…

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

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

java:重複を排除する方法3選

今回は、javaでListの重複排除を行う方法を3つ紹介します。 1つ目の方法は、for文で自力でアルゴリズムを記述して重複排除を行う方法です。記述が冗長になり、コーディングミスも起こりやすいことから、現在の実務ではこの方法で重複排除を行うことはない…

java:標準入出力の入力元・出力先を変更する

javaには・System.setIn・System.setOut・System.setErrの3つのメソッドが用意されており、これらのメソッドにより標準入出力の入力元・出力先を変更することができます。これらのメソッドを利用することで、標準入力や標準出力を使用している処理の立ち振…

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

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

java:関数を引数として渡す

C#では、こちらの記事のようにdelegateの仕組みを利用して関数を変数として扱うことができます。例えば、引数と引き渡してコールバック処理を実現することができます。 javaでも、8以降であれば関数型インターフェースを利用して関数を変数として扱うことが…