t-hom’s diary

主にVBAネタを扱っているブログです。

プログラミング

コード共通化のデメリット

プログラミングが上達すると、コードの共通部分をプロシージャに切り出すことを覚える。 コードを共通化すれば、共通部分に変更が発生した場合に、修正は一か所で済むので効率的だとされる。はたして本当にそうだろうか? 私もつい最近まで、コードの共通化…

VBA モジュールのプロシージャは呼び出し順に書く

VBAでは互いに関連するプロシージャをひとつのモジュールに纏めることが多い。 このとき、呼び出す側と呼ばれる側のどちらを先に書けば良いだろうか。以前の私の考えでは、例えばProc1がProc2を呼び出すとき、呼ばれる側を先に定義しておくという意味で先に…

プログラムコード中に値(あたい)は登場しない

VBAに限らず全てのプログラミング言語で言えることだが、コード中に値(あたい)が直接登場することは無い。 最近、「値とは何か」ということを掘り下げて考えることがあり、ようやくこの結論に行きついた。たとえば、数字の「1」。これは一般的に値だと理解さ…

高品質なコードを短時間で編み出すには

プログラムのコーディングで一番時間を消費するのは「思考」と「試行錯誤」である。コーディングスピードが落ちることを嫌って極端に短い変数名をつけたり、一つのプロシージャで一気に書ききったりするとコードが把握しにくくなり、「思考」に時間をとられ…

プログラミング言語はコンピューター語ではなく人間のための言語

プログラミング言語とは何か。 初心者に向けて、よく次のような説明がなされる。 コンピューターは日本語や英語で指示しても理解できない。だからコンピューターが理解できる言葉、つまりプログラミング言語でコードを書く必要がある。 プログラミングを学び…

プログラミング用語はなぜ小難しいのか

プログラミングでは識別子・キーワード・文字列・演算子・リテラルといった小難しい言葉が登場する。 意味は調べれば分かるが、なんでわざわざそんな小難しい言葉を使うんだろうか。演算子は、計算記号って呼んじゃだめ? 文字列は、単語って呼んじゃだめ? …

ひと足先にPythonでCOMを利用したExcel操作をやってみる

MicrosoftがExcelにPythonを搭載することを真剣に検討しているらしい。 www.itmedia.co.jpまだ検討の段階なので、どんな実装になるかは明らかにされていないが、基本的にはVBAと同じくCOMの操作になるんじゃないかと思う。今回はひと足先に、PythonでCOMを利…

VBAで関数型プログラマーの思考法を学ぶ

これは私に関数型言語の素晴らしさを教えてくれた本である。プログラミングGauche作者: Kahuaプロジェクト,川合史朗出版社/メーカー: オライリージャパン発売日: 2008/03/14メディア: 大型本購入: 22人 クリック: 713回この商品を含むブログ (244件) を見る…

Prism.jsの紹介と日本語文字列が認識されない件の対応方法

目次 Prism.js(プリズム)とは Prismの入手 Prismの使い方 日本語文字列の問題 Prism.jsを日本語文字列に対応させる方法 7/30 追記:コード中のコメントもおかしいのでPrism.jsを再修正 Prism.js(プリズム)とは Prism.jsとはWebサイトやブログにプログラムの…

Javaでテキストファイルから特定文字列を含む行を除いてファイル出力

今回はJavaでテキストファイルから特定文字列を含む行を除外してファイル出力するコードを作ったので紹介。 コマンドライン引数で複数のキーワードを指定して除外できるようにした。 作成の経緯 このブログのアクセスログを分析する際、いつもダウンロードし…

そんなに沢山のソートアルゴリズム、意味あるの?って方へ

みなさん本日は情報処理試験お疲れ様でした。 (私は今回申し込みすらしてないけど)本当は試験前にこの記事を書きたかったんだけど文章悩んでるうちに試験が終わってしまった。まぁ今回ダメだった方、決意を新たにした方もいると思うので一応公開するか。さ…

オブジェクト指向における「メッセージ」とは何か

現在主に認知されているオブジェクト指向 私がオブジェクト指向というとき、それは基本的にC++から始まりJavaに受け継がれた、あのオブジェクト指向を指す。つまり、カプセル化、継承、多態性で説明されるアレだ。VBAは継承、多態性のサポートがほとんど無い…

オブジェクト指向の本質はカプセル化 ~継承も多態性も脇役にすぎない

ずいぶんと挑発的なタイトルをつけてしまったが、継承や多態性が重要でないなどというつもりはない。 ただオブジェクト指向の本質はどれかと言われると、やっぱりカプセル化だろうなと。 オブジェクト指向とは オブジェクト指向とは、データや機能をまとめて…

変数・関数・オブジェクトが「いまひとつ分からない」という感覚の正体を考察

プログラミングでは日常生活であまり耳にしない言葉がたくさん出てくる。たとえば、変数・関数・オブジェクトなど。説明を聞いてスッと理解できる方もいれば、なかなか意味が分からずに苦労したという方もいるだろう。さっぱり分からないということはない。…

Pythonスタートブックのレビュー ~徹底して比喩表現にこだわった良書

先日から気になっていた書籍 Pythonスタートブックを買ってきたのでレビューしようと思う。Pythonスタートブック作者: 辻真吾出版社/メーカー: 技術評論社発売日: 2010/04/24メディア: 大型本購入: 19人 クリック: 199回この商品を含むブログ (59件) を見る…

プログラミングの入門に必要なのは「おお、すげー!動いた!」という体験。小難しいことは後回し。

こちら、最近たまたま昼休みに書店に立ち寄る機会があり、ふと手に取った書籍。アイディアを実現させる最高のツール プログラミングをはじめよう作者: 池澤あやか出版社/メーカー: 大和書房発売日: 2015/03/22メディア: 単行本(ソフトカバー)この商品を含…

九九、FizzBuzz、じゃんけんの3つをプログラミングの「永字八法」に認定する

漢字の「永」の字には、書に必要な以下の技法8種が全て含まれている。 点 横画 縦画 はね 右上がりの横画 左はらい 短い左はらい 右はらい このことを永字八法(えいじはっぽう)というらしい。カッコイイ!つまり書の練習に「永」という漢字をチョイスすれ…

プログラミングの初期学習に写経が効く理由

新しいプログラミング言語を学習するにあたり、私がいつもはじめにするのはサンプルコードを見ながらそっくりそのままコーディングする、いわゆる写経である。書籍でコードをみていくら考えてもわからなかったことが、実際に自分でタイプしてみると「ああな…

VBA エラーは忌むべきものではなく、非常に重要な機能である

プログラマーなら誰でもエラーで悩んだ経験があるだろう。特に初心者の頃はなかなか思ったように動かずにイライラしたことがあるハズだ。しかしエラーは本来、忌むべきものではない。 プログラムエラーは現実世界で問題が起きる前に、「それは間違っている」…

VBAで「プログラマ脳を鍛える数学パズル」にチャレンジ

以前から気になっていた書籍「プログラマ脳を鍛える数学パズル」を買ってきた。プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問作者: 増井敏克出版社/メーカー: 翔泳社発売日: 2015/10/14メディア: 単行本(ソフトカバー)こ…

VBA 基本情報技術者試験に出てくる半加算器と全加算器をVBAコードで作って学習する

コンピューターは「電子計算機」と訳されるように、計算する機械である。 Youtubeを見ているときも音楽を聴いているときも、ゲームで遊んでいるときも、メールを読んでいるときも、CPUでは絶えず「計算」が行われている。さて、今回はそのコンピューターがど…

VBA オブジェクトとメモリの関係 ~ オブジェクトが参照型と呼ばれる理由

前回、VBAを擬人化して、変数が記号表によって管理されているというところまで書いた。※読んでない方はこちら thom.hateblo.jpさて、今回はオブジェクトがメモリ上でどう扱われるのかという話。次のコードで説明しようと思う。 Dim c As Collection Set c = …

VBAの特徴について ~歴史、利用者層、サポートするパラダイムと型付けの作法など

これまでVBAについて色々記事を書いてきたけれど、VBAってそもそもどんな言語なのか、自分が学んできたことを整理する意味でひととおり書いておこうと思う。 VBAの歴史をざっくりと説明 VBAの祖先はアメリカのダートマス大学で作られたBASICという教育用言語…

VBA クラスという用語は「類(るい・たぐい)」を指す言葉である。

これまでクラスモジュールについて扱ってきたけど、言葉の意味を知らないままクラスクラス言っててもなかなかその本質的なイメージをつかむことは難しいと思う。やはり人間、なじみのない言葉で何かを覚えようというのは無理がある。そこで今回はVBAは一旦脇…

amazonアソシエイトのウィジェットがChromeで自動再生されなくなったのでランダムに商品を並べる機能をJavaScriptで自作する。

このブログはamazonアソシエイトに参加しており、その広告収益を運営費に充てている。 先日までこのブログのサイドバーにはA8.netの固定バナーを表示していたが、まったく収益になってなかったので、そちらを削除して空いたスペースにおススメの小説を掲載す…

プログラミングだって立派な趣味だ

家でプログラムを書いているという話をすると、仕事中毒だと言われることがある。わざわざ休日に家で仕事をしているつまらない奴だと思われているようで癪である。でもプログラミングだって立派な趣味だ。絵を描いたり、作曲したりするのと同じ、創作活動だ…

VBA 式と式の評価 ~数式だけが式じゃない~

プログラミングの世界では式の評価という言い回しが登場する。 VBAの書籍では見かけない言い回しであるが、関数やオブジェクトの動作について説明・理解するのに便利な概念なので覚えておくと良い。式といえばまず数式をイメージする方が多いだろう。あの忌…

トランプを使ってマージソートを理解する。

これまでアルゴリズムに強くなりたいと思いながら、有名どころは二分探索、バブルソートくらいしか書けなかった。 そこで、マージソートにチャレンジしようと思ったのだがなかなかうまくいかず、今日ようやく動くものができた。まぁネットで探せばマージソー…

JScriptでfor eachの代わりになるEnumeratorオブジェクト

【注意】JScript限定です。JavaScriptでは使えません。先日、JScriptで起動中のIEからURLを取得するコードを書いた。 thom.hateblo.jp本当はVBSのFor Eachみたいなもので数を意識せずにループしたかったが、色々調べながらやってみたものの同じような処理は…

WSH/JScriptで起動中のIEからURLを取得する。

先日買ったJavaScript本のコードを何度か写経して、そろそろ自分でもコードを書いてみたくなった。 thom.hateblo.jpそこで、普段仕事でもよく使うIE操作のテクニックの準備段階である、開いているIEのURLを取得するコードを書いてみることにした。普段はExce…

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。