「ブログ」カテゴリーアーカイブ

ブログ投稿用のカテゴリ

Eclipse:getter/setterメソッドの自動生成方法

Eclipseでgetter/setterメソッドを自動生成する方法をメモしておきます。
事前にコードテンプレートでgetter/setter用のjavadocを設定しておくとさらに便利です。

環境

  • Eclipse 4.2
  • Windows7 professional 64bit版

getter/setterメソッドの自動生成手順

  1. getter/setterを設定したいBeanやDTOなどのクラスを作成しフィールドだけ記述してgetter/setterを挿入したい行へカーソルを合わせます。
  2. 挿入位置へカーソルを合わせたら右クリックし、「ソース」⇒「getterおよびsetterの生成」を選択します。
  3. getterおよびsetterの生成画面が表示されたら、生成対象とするフィールドを選択し、「メソッド・コメントの生成」へチェックし「OK」ボタンを選択します。
  4. 上記手順で以下の様にgetter/setterメソッドが自動生成されて挿入されます。事前にコードテンプレートでgetter/setter用のjavadocを設定しておけばお好みのjavadocへ変更する事も可能です。

Excel:「重複しない/重複する」ランダム整数値を生成する方法

Excelでランダム整数値を生成する方法をご紹介します。
重複しない整数値を生成する場合はRAND関数とRANK関数の組み合わせで、重複する整数値を生成する場合はRANDBETWEEN関数を使用すると簡単にランダム値を生成出来ます。

動作環境

    Microsoft Office Professional 2013

重複しない整数値の生成例

  • 重複しない整数値を生成する場合、まず「=RAND()」で0以上1未満の実数を生成し、別セルでRANK関数の数値欄へ生成した実数値のセルを指定すれば簡単に重複しない整数値を生成出来ます。
    但し、この方法では「=RAND()」は重複する実数を生成する確率が0%ではありませんので、非常に低い確率ですが重複値が生成される可能性はありますのでご注意下さい。
  • 下記例では1~10までのランダム整数値をB2~B11セルへ表示させるためにA2~A11セルまで「=RAND()」を指定しB2~B11セルまでRANK関数を指定(B2セルなら「=RANK(A2,$A$2:$A$11)」)しています。

重複する整数値の生成例

  • 生成する整数が重複してもよいのであればRANDBETWEEN関数を使用する事で簡単に生成できます。
  • 下記例ではC2~C11セルまで1~10までの整数を生成しています。

ポイントサイト「モッピー」でお小遣い稼ぎ

個人的に、この手のお小遣い系サイトは敬遠していた方なのですが、ものは試しで登録してみたら結構ポイントが溜まりやすいと感じたのでご紹介しておきます。
とりあえず、課金は一切せずに無料で利用してみて1週間程度で1000円程溜まったので結構使い勝手は良いかもしれません。
人によってはカード発行等をじゃんじゃん行って数十万~数百万円も稼いでいる猛者もいるとか。。。

「モッピー」の特徴

    件名詳細
    運営会社株式会社セレス CERES.INC
    会社の設立年月日2005年1月28日
    レート1ポイント=1円
    利用者数累計500万人
    サイトURLWebMoneyEdyiTunesコードなどに交換!\" target=\"_blank\">http://moppy.jp/"

「モッピー」のメリット

  • スマホアプリ登録、クレジットカード発行する際、モッピー経由で登録すればポイントが獲得できる分お得になります
  • 3段階のダウン報酬が獲得出来る
  • スマホだと無料アプリのインストール⇒起動だけでもポイントが獲得可能
  • ゲーム、アプリ登録、CM視聴、無料会員登録、カード発行などポイント獲得方法が多彩
  • PCとスマホ両方で利用すればポイント獲得数も増える
  • 電子マネーやギフト券に交換する場合、手数料は無料

「モッピー」のデメリット

  • 登録する際に利用したメール宛てにスパムメールが飛んでくる
  • 鬱陶しい程、広告が表示されるので、誤クリックが多発しやすい
  • 銀行口座(現金)に換金する場合は手数料が掛かる

Eclipse:jarファイルの作成方法

Eclipseでのjarファイルの作成方法についてメモしておきます。
業務では結合試験以降などはサーバーに資材を配置して試験を実施するのが一般的です。その際、javaソースはjarファイルにして配置することになります。

環境

  • Eclipse 4.2
  • Windows7 professional 64bit版

jarファイルの作成手順

  1. プロジェクトを右クリックして「エクスポート」を選択します。
  2. エクスポート画面で「Java」⇒「JARファイル」を選択し、「次へ」ボタンを選択します。
  3. JARファイル化するプロジェクト、エクスポート先を指定し、特に詳細設定にこだわりがなければ「完了」ボタンを選択すればjarファイルが作成されます。
  4. 作成されたjarファイルの拡張子をzipに変更すると「Lhaplus」などのツールで解凍出来ます。「7-Zip」ならjarのままでも解凍可能です。

WinMergeの文字コードを変更する方法

使用しているWinMergeのバージョンによってはUTF-8のファイルを比較する場合は基本的にS-JISで表示するため、日本語の箇所が文字化けして表示される場合があります。
そういう場合はデフォルトの文字コードを変更する事で解消する事が出来ます。

環境

  • WinMerge Version 2.14.0.37+-jp-37

文字コードの設定手順

今回はデフォルトコードページをUTF-8に変更する手順をご紹介します。

  1. メニューから「編集」⇒「設定」を選択します。
  2. オプション画面で「コードページ」を選択し、デフォルトコードページで「カスタムコードページ」を選択し、「65001 – Unicode(UTF-8)」を選択して「OK」ボタンを選択します。

補足

  • 上記で指定した「65001」というのは文字コード番号を表します。
    一般的に使用されるコードは以下の通りです。
    文字コード番号文字コード
    932SHIFT-JIS
    20932EUC-JP
    65001UTF-8

    ※文字コード番号の詳細については下記ページが参考になります。
    Microsoft Code Page Identifiers
  • UTF-8のBOM有無
    UTF-8には「BOMあり/なし」の2種類があり、環境やソフトによってはBOM付きファイルで文字化けや差分検出の誤認が発生する場合があります。必要に応じて保存形式を確認してください。

  • 改行コードの違い
    Windows(CRLF)、Linux(LF)、古いMac(CR)などで改行コードが異なるため、WinMerge上では不要な差分として表示されることがあります。設定で「改行コードの違いを無視」を有効にすると便利です。

  • フォントの問題
    日本語環境でもフォントによってはUnicodeの一部が表示できず「□」に化ける場合があります。異体字や特殊記号が含まれる場合は注意してください。

  • 文字コードの見極め
    比較対象のファイルが本当にUTF-8かSJISかなどを確認することが重要です。エディタ(VS Codeや秀丸など)で文字コードを明示的に確認すると確実です。

  • バージョン差異
    WinMergeのバージョンによって設定画面やコードページ指定方法が異なることがあります。環境に合わせた確認をおすすめします。

  • 代替ツールの活用
    WinMergeで対応が難しい場合、Beyond Compare、Meld、kdiff3など他の比較ツールを利用するのも有効です。特に大規模な差分確認やUnicode依存の環境では効果的です。

  • ファイルごとの文字コード指定
    通常は「ツール」→「コードページ」から全体設定を変更しますが、比較画面で 個別のファイルに文字コードを指定して再読み込み することも可能です。
    特定のファイルだけが文字化けしている場合に便利です。
  • 自動判定とBOM付きファイル

    WinMerge は基本的に文字コードを自動判定しますが、以下のようなケースでは誤判定が起きやすいので注意が必要です。

    • UTF-8 with BOM と UTF-8 without BOM の区別

    • Shift-JIS と EUC-JP の曖昧さ

    • 絵文字や合成文字を含む場合

    文字化けが発生した場合は、手動で文字コードを選び直すと解消することがあります。

  • 改行コードとの関係
    Git などの外部ツールと連携する場合は、改行コード(CRLF / LF)の違いにも注意が必要です。
    WinMerge の設定で「改行コードの無視」を有効化すれば、文字コード以外の差分を最小限に抑えて比較できます。
  • 設定が反映されない場合

    文字コードの設定を変更しても反映されない場合は、以下を確認してください。

    • 管理者権限で WinMerge を起動しているか

    • 古い設定ファイル(WinMerge.ini)が残っていないか

    • 比較対象のファイルがキャッシュされていないか

    一度設定をリセットしてから再設定すると改善することがあります。

  • 他ソフトとの比較
    文字コード周りの扱いは差分ツールごとに特徴があります。
    たとえば Beyond Compare は自動判定精度が高い一方で有料版が中心、Meld はオープンソースですが日本語処理に弱いなど、WinMerge の「無料で日本語に強い」という利点は際立っています。

httpとhttpsの違い

ここではhttpとhttpsの違いについてメモしておきます。
この2つを理解しやすくするには「http」と「https」の正式名称を思い浮かべるとイメージし易いでしょう。

  • http :Hyper Text Transfer Protocol
  • https:Hyper Text Transfer Protocol Secure

httpsの「s」とは「セキュア」つまり「安全なhttp」という事です。
httpのホームページでは住所、氏名といった個人情報をそのままサーバへ送信してしまいます。一方httpsでは情報を暗号化してサーバへ送信します。
ブログなどのように相手に読ませるためだけのページであればhttpでも大きな問題にはなりにくいですが、ログイン画面や決済時にクレジットカードなどの個人情報を入力するような画面では「https」になっている事が大前提と言えます。逆に個人情報を入力するのに「http://~」となっているようなサイトであれば、セキュリティに対する認識が甘い企業と見られてしまうでしょう。

httpを使用する場合

  • 広告やブログなど不特定多数の人に閲覧されても問題ない場合

httpsを使用する場合

  • ログイン情報、住所、氏名、クレジットカード番号などを入力する場合

データベース製品のライセンス一覧

データベース製品のライセンス一覧です。

製品名オープンソース/商用ライセンスデータ
モデル
料金
DB2商用IBMORDBMS1プロセッサ
・461万7000円
2年目から5年目の保守料
・88万700円/年
1プロセッサで5年間運用した場合のコスト
・813万9800円
HiRDB商用日立製作所RDBMS同時接続数ライセンス
・120,000円
1プロセッサ
・1,800,000円
MySQLオープンソースGPL or 商用RDBMS1-4 ソケットサーバー 1台/年(税抜)
・Standard Edition:240,000
・Enterprise Edition:600,000
・Cluster Carrier Grade Edition:1,200,000
5+ ソケット・サーバー/年(税抜)
・Standard Edition:480,000
・Enterprise Edition:1,200,000
・Cluster Carrier Grade Edition:2,400,000
Oracle Database商用オラクルRDBMS
PostgreSQLオープンソースBSDORDBMS無料

SQL:前方一致・後方一致・部分一致検索する方法

SQLで前方一致・後方一致・部分一致等のあいまい検索の方法についてご紹介します。
SQLであいまい検索を行う場合はワイルドカード文字として「%」を使用します。

サンプルテーブル

以下の商品テーブル「goods」を元に説明します。

    商品テーブル「goods」
    //write-remember.com/wordpress/wp-content/uploads/2016/02/b8f86f58054e38e75bb14b5d465b829c.png\">//write-remember.com/wordpress/wp-content/uploads/2016/02/b8f86f58054e38e75bb14b5d465b829c.png\" alt=\"\" width=\"333\" height=\"176\" class=\"aligncenter size-full wp-image-4895\" />"

前方一致検索

SQL文(クエリー)

    • 前方一致検索する場合、LIKE演算子を指定して検索条件の最後に「%」を記載します。
    • 「SELECT * FROM [テーブル名] WHERE LIKE ‘[条件]%’;」の形式で記述します。

実行結果

以下の様に前方に「商品」と入力されているデータのみ出力されます。

後方一致検索

SQL文(クエリー)

    • 後方一致検索する場合、LIKE演算子を指定して検索条件の先頭に「%」を記載します。
    • 「SELECT * FROM [テーブル名] WHERE LIKE ‘%[条件]’;」の形式で記述します。

実行結果

以下の様に後方に「A」と入力されているデータのみ出力されます。

部分一致検索

SQL文(クエリー)

    • 部分一致検索する場合、LIKE演算子を指定して検索条件の前後に「%」を記載します。
    • 「SELECT * FROM [テーブル名] WHERE LIKE ‘%[条件]%’;」の形式で記述します。

実行結果

以下の様に文字列に「ボード」が含まれているデータが出力されます。

補足:実務で気をつけたいポイント & 応用例

1. ワイルドカード検索とインデックスの相性

LIKE 演算子を使ったあいまい検索は、通常のインデックスが利かないケースが多く、パフォーマンス低下の原因になります。

  • 前方一致('文字列%')であれば B-Tree インデックスが使われることもありますが、後方一致('%文字列')や部分一致('%文字列%')では使われないことが多いです。

  • 大量データを扱う場合は、全文検索エンジン(たとえば PostgreSQL の pg_trgm 拡張、Elasticsearch、MySQL の全文検索機能など)の導入を検討したほうがよいでしょう。

2. 大文字・小文字の扱い

データベースによっては、LIKE は大文字・小文字を区別するかどうかが異なります。

  • MySQL(latin1utf8_general_ci など)では大文字・小文字を区別しないことが多い

  • PostgreSQL では ILIKE を使うことで大文字・小文字を無視したマッチングが可能

  • 必要であれば、LOWER() を併用して検索キーとカラムを小文字化して比較する方法もあります。

3. エスケープ処理

検索文字列中にワイルドカード文字(%_)を含めたい場合は、適切にエスケープを行わないと意図しないマッチングをしてしまいます。SQL では ESCAPE 句を使ったり、特殊文字をエスケープ文字で前置したりする必要があります。

 
SELECT * FROM goods WHERE name LIKE '%50\%%' ESCAPE '\';

この例では「50%」という文字列を検索対象に含めたい場合の書き方です。

4. 複数条件との組み合わせ

あいまい検索と他の条件(数値比較、日付範囲、結合など)を組み合わせる際は、WHERE 句の書き方、実行計画、インデックス設計に注意が必要です。
たとえば、部分一致検索を先にするとスキャンが広くなり、結合条件や他の絞り込み条件を後に書いても性能が出にくくなる場合があります。
そのため、可能な限り絞り込み条件(等価比較や範囲条件など)を先に適用する、あるいはサブクエリ・CTE を使って事前に対象を絞るなど工夫するとよいでしょう。

5. 応用例:あいまい検索の代替アプローチ

アプローチ用途・メリット注意点
正規表現検索(REGEXP、~ など)より複雑なパターンマッチングが可能になるパフォーマンスに注意、サポート状況に依存
トークン分割・前処理検索対象をあらかじめトークン化して部分一致を高速化実装が複雑、追加のメンテナンスコストあり
専用全文検索エンジン高速な全文検索、スコア付け、複合検索データ同期や運用コストを考慮
n-gram / trigram 検索部分一致の高速化を狙える技術インデックス設計やメモリ・ストレージ消費に注意

SQL:INDEXのメリットとデメリットについて

業務でデータベースの操作をする場合、データが大量に登録されているテーブルへアクセスする場合に索引(INDEX)を作成するとSQLクエリの実行が劇的に早くなるケースが多々あります。この索引(INDEX)についてどういう場合に作成すれば良いのか、メリット、デメリット等についてまとめておきます。

どういう場合に索引(INDEX)を作成すれば良いのか

索引(INDEX)を作成した方が良いケース

  • 項目数/データ数が多い大規模な表の1%~15%程の行を頻繁にアクセスする場合
  • WHERE句で頻繁に使用されている列である場合
  • 列の値が比較的一意である場合
  • 参照整合性制約で使用されている外部キーになっている列である場合

索引(INDEX)を作成しない方が良いケース

  • データ登録件数が少ない表である場合
  • 列内の値がほぼユニークである場合
  • NULL値が多く、NULL以外の値を検索しない場合

索引(INDEX)のメリット

  • 表検索(SELCET)する際、特定の行を素早く検索する事が出来る為、検索のパフォーマンスが早くなります。
  • ソート作業を省略出来ます。

索引(INDEX)のデメリット

  • データの登録(INSERT)、変更(UPDATE)の際、索引変更のためのオーバーヘッドが加わるため、索引(INDEX)がないテーブルに比べると時間が掛かります。
  • 索引(INDEX)を作成する領域が必要となります。

Eclipse:デフォルトのVM引数を設定する方法

EclipseでJUnitやDjUnitを実行すると「junit java.lang.OutOfMemoryError: Java heap space」とメモリエラーが表示された場合は「デフォルトのVM引数」を設定する事でこの事象を回避する事が出来るのでその設定方法をご紹介します。

環境

  • Eclipse 4.2
  • Windows7 professional 64bit版

対処方法

  1. Eclipseメニューの「ウィンドウ」⇒「設定」を選択します。
  2. 設定画面で「Java」⇒「インストール済みのJRE」⇒使用しているjdkを選択して「編集」ボタンを選択します。
  3. JREの編集画面で「デフォルトのVM引数」へ以下の様に設定します。