目的を決めてリファクタリングしよう 「リファクタリングの目的も,その方法もだいたいわかった。でも,いつリファクタリングを行うべきか?」----そうですね。前述のようにリファクタリングはユーザーのためではなく,プログラマのために行うものです。ユーザーから「今からリファクタリングをしてほしい」なんていう要望はけっして出てきません。いつリファクタリングするかの判断は,プログラマ次第というわけです。 ところがデバッグ,機能追加,パフォーマンス改善に比べると,プログラムの構造をきれいにして,拡張性や再利用性を高めることは実際にはかなりアイマイです。「きれいかどうか」という判断には多分に主観が入りますし,拡張性や再利用性も,何をどこまで考慮するかによってずいぶん基準が変わります。こうした作業はある意味キリがありません(注9)。 したがって,リファクタリングをいつ行うか,どこまでするかという判断は案外
背景 最初は、Javaの開発要因として入ったけど、諸々の事情により全然Javaと関係ない現場に。。。 同然、開発メンバはJava開発要因として雇ったのは知っているので、無茶ぶりはない。 そして、ドキュメントばかり読んでいるわけにもいかないので、ちょっとしたツールの改修を依頼され、VBAを使う羽目に。。。 VBA VBAの経験 無いわけではない。 日本だから、仕様書はMS OfficeのExcel使うことが多い。 業務効率化のためにVBAでちょっとしたものを書くことは、たまにする。 ソースを見て愕然。。。 う~ん。。。。 ツールだからなのだろうか? もの凄く昔に見たようなコードがいっぱい。。。 気になったこと 変数が大文字始まり メンバ変数が多用されている バッファリングする意味は? 構造体はリストに入れられない?! 末尾に「;」が不要 変数が大文字始まり 自分は、個人で開発していた時は、J
EOFとは、最終レコードよりも後ろに移動しようとするとTRUEになるプロパティです。全レコードを参照するには、Do~LoopでEOFがTRUEになるまで、レコードを前に移動します。 レコードの移動方法は「Recordsetでレコード移動させる 」のページを参照してください。 RecordsetとEOFで全レコードを参照するVBA 下のMyEofプロシージャを作成しました。 実行すると、顧客マスターテーブルをRecordsetで開き、全レコードの会社名とTELをイミディエイトウィンドウに表示します。 ・ Do Until rs.EOF でレコードの最後までループします。 ・ rs.MoveNext で次のレコードに移動します。 Sub MyEof() Dim db As Database Dim rs As Recordset Dim i As Long Set db = CurrentDb
Option Compare ステートメントでは、モジュール内で文字列を比較する方法を決定します。Option Compare には次の 3 種類の設定があります。 Option Compare Binary 文字列比較は大文字と小文字を区別して行われます。Microsoft Access 以外の Microsoft Office アプリケーションにおける既定の設定です。Access における既定の設定は Option Compare Database です。 Option Compare Text 文字列比較に大文字と小文字の区別はありません。この設定をモジュールの既定にするには、このステートメントをモジュールの宣言セクションに追加します。 Option Compare Database 文字列比較は、指定されたロケールの並び順序によって実行されます。既定では大文字と小文字を区別しません
列を挿入する 複数列を挿入する 別シートの列に挿入する 列を挿入する Columns の引数に列番号または列名を指定すると、その列に挿入できます。 列「A」に挿入するには Columns(1).Insert または Columns("A").Insert を入力します。 Columns(1).Insert ' A 列に挿入 Columns("A").Insert ' A 列に挿入 ' Columns(3).Insert ' C 列に挿入 Range の引数にセル名を指定すると、そのセルを取得できます。EntireColumn からその列を取得できます。 セル「B2」の列に挿入するには Range("B2").EntireColumn.Insert を入力します。
VBA でシートをコピーするときは、Copy メソッドを使用します。ここでは、Copy メソッドの使い方について説明します。 Copy メソッドの使い方 Copy メソッドの構文は以下の通りです。 Copy メソッドではコピーしたシートを指定したシートの前、あるいは後ろに挿入するかを引数で指定します。 引数のシートを指定するときは Before や After の後にコロンとイコール := をつけて指定します。この := は、引数の順序に関係なく、特定の引数へ値を設定するときに用います。また、Before と After を同時に使用することはできません。 もし引数に何も指定しなかった場合は、新規のブックにコピーされます。 以下は、Sheet1 を Sheet2 の後の位置にコピーする例です。
「ァィゥェォャュョ」などの拗促音を通常の文字「アイウエオヤユヨ」に変換する例です。 次のサンプルFunctionプロシージャを使うと、引数strKanaの文字列内に含まれる拗促音が変換されて返されます。 ここでは、いったん引数を半角カナに変換して、1文字1バイトの状態にします。そして、それぞれの文字のASCIIコードをAsc関数で順番に調べ、拗促音の範囲の値であれば対応する文字へとChr関数で変換しています。 Function ConvStrTest(strKana As String) As String Dim intAscCode As Integer Dim iintLoop As Integer '全角カナを半角カナに変換 strKana = StrConv(strKana, vbNarrow) '拗促音を変換 For iintLoop = 1 To Len(strKana) i
アメリカ生まれのExcelにはこういったワークシート関数は用意されていないようなので、VBA(Visual Basic for Applications)でユーザー定義関数を作ってみてはいかがでしょう。 ▼拗音・促音を大きなかな文字にするユーザー定義関数 Function UpperSutegana(strOrg As String) As String Const cstLower = "ぁぃぅぇぉっゃゅょゎァィゥェォッャュョヮ" Const cstUpper = "あいうえおつやゆよわアイウエオツヤユヨワ" Dim strRet As String Dim intLoop As Integer Dim strChar As String Dim intChar As Integer strRet = "" For intLoop = 1 To Len(strOrg) strChar =
Excelで漢字のふりがなを別セルに表示しようとした場合、一般的にはPHONETIC(ふりがな)関数を使用します。この関数は特定のセルに含まれる漢字に対して、ふりがな部分を切り出して指定セルに格納するという便利な関数です。 PHONETIC関数で漢字のセルを引数で指定すると 自動的にふりがなだけ抽出することができるという Excelは文字入力された時の情報を裏側で持っているのでこのような芸当ができます。ということは、当然入力時に変な変換をしていると思ったようなふりがなを出してくれません。 鈴木さんの名前が間違って出力されました。正しいふりがなは「スズキ ナウシカ」さん。文字入力の際に「いま」「しか」と入れたので、その文字がそのまま反映されてしまってます。別のキラキラネーム、タナカ ピカチュウくんはGoogle IMEだと変換できました。 対処できない文字 Excel上でIME使って入力すれ
今回は、Accessのフォームからデータを入力し、入力したデータを基にSQLで検索を行い、抽出した結果をExcelのシートに書き出す処理を解説する。 使用するテーブルは、TIPS「AccessからExcelに接続して開く方法&Accessで作成したデータをExcelに出力する方法で学ぶ、連携VBAの基本」で作成しておいた、「商品管理テーブル」だ。「商品管理データベース.accdb」をクリックして、Accessを起動しておいてほしい。 Accessのフォームとコントロールの配置 Accessメニューの「作成」→「フォームデザイン」と選択して、「フォームデザイン」の画面を表示する。 「フォーム1」タブの上でマウスの右クリックをして、表示されるメニューから「上書き保存」を選択し、「フォーム名」を「SQLで抽出したデータをExcelに書き出すフォーム」という名前にしておく。すると、フォームの「デザ
本日は、珍しくAccessの話題です。 私は約10年弱、ソフトウェア開発系の仕事をしています。 最初は携帯電話の組込み、次はWebアプリやフォームアプリの開発等、色々やってきました。 そんな中、最近始めて「MS Access」を使ったシステムに携わる事となりました。 元々は他社が作ったシステムなのですが、その会社がサポートから手を引くそうで、その後継としてウチが選ばれたという感じです。 私は、開発職を始めてから、既存システムの分析みたいな事はしょっちゅうやってきました。 要は、仕様書的な資料が無いプログラムを、ひたすら追跡していくという作業ですね。関数が何やっているのか、どこから呼ばれているのかはひたすらGrepで検索していくという地道な作業です。嫌な作業なんですが、嫌よ嫌よも好きの内ってな具合で、気付けばハマっています。 さて、Accessでも同じように、「この画面はどこから呼び出される
No.011 更新クエリでテーブルのデータを置換する(文字列の一部更新) 2003/2007/2010/2013/2016 テーブルのレコードが更新されるたびに、レコードのデータを置換する必要がある場合、毎回[置換]コマンドでは面倒ですね。 そのような場合には、更新クエリを作成しておくと便利です。 例えば次のようなテーブルがあるとします。 レコードのデータの全体の更新の場合、例えば[F2]フィールドの「A-あ」を「A~あ」に更新するとか(下図左)、[F3]フィールドを100倍に更新するとか(下図右)の場合、次のような更新クエリを作成します。 更新クエリは、クエリをデザイン ビューで作成、データを更新するテーブルを追加します。 [クエリ ツール]-[デザイン]タブ-[クエリの種類]グループ-[更新]をクリックして、更新クエリに切り替えます。 更新するフィールドをデザイン グリッドに配置し、[
システムテストはシステムが全体として要求された機能や性能を満たしているかどうかを検証します。 結合テストが完了したあとに実施します。 テスト計画の作成 まず、テスト全体の方針や概要をまとめた「システムテスト計画書」を作成します。 システムテストの目的、対象範囲、実施方法、テスト体制、テスト環境、スケジュール、合格基準など、テスト全般に関わる方針をまとめ、プロジェクトメンバー全員で方向性を共有します。 システムテスト仕様書の作成 策定されたテスト計画にもとづいて、「システムテスト仕様書」を作成します。 システムテストのシナリオやテスト内容、確認すべき項目などを具体的に定義します。 また、テストする際に必要なテストデータの内容も定義します。 システムテスト環境の構築 テスト計画にもとづいてシステムテスト環境を構築します。 結合テストまでは、開発マシンやテスト用マシンでのテストとなりますが、シス
当ページでは、システムテスト(総合テスト)についてご紹介します。 ■システムテストとは システムテストは総合テストとも呼ばれ、ソフトウェアおよびシステムの検証手法の1つです。 構築したシステムが全体で予定通りの機能を満たしているか、また機能や性能が仕様書通りに構築できているかを検証することです。 単体テスト、結合テストの実行後に、本番とほぼ同じ環境でテストを実施します。(開発環境でのテストでは発見できない不具合を検出するため。) ▼V字モデルにおけるシステムテストの位置づけ ■システムテストの進め方 一般的にシステムテストの流れは下記のとおりです。 1.計画 2.テスト環境構築 3.テスト項目作成 4.テストデータ準備 5.テスト手順準備 6.テスト実行 7.評価 テスト全体の計画がうまくいかなかったり、計画自体が円滑に機能しない、または流れの中で手詰まりが発生すると、当然ながらプロジェク
Linux Daily Topics 2018年9月19日もう特別扱いはいらない ―Linuxコミュニティに新たな"Code of Conduct"確立へ 現在もLinuxコミュニティを騒然とさせているLinus Torvaldsの謝罪&休養宣言だが、今回の事件をきっかけにLinuxコミュニティ内部から"Code of Conduct" ―コミュニティメンバーの行動規範を新たに定義しようという動きが起こっている。中心人物はGreg Kroah-Hartman(GKH)、現在Linusに代わってカーネル開発を統括する最古参のメンテナーだ。 Code of Conduct: Let's revamp it. - Linux kernel source tree Code of Conductはオープンソースコミュニティでよく使われる言葉で、議論やプレゼンなどの公式の場でどのように振る舞うか
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く