t-hom’s diary

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

プログラミング

ネット検索で見つけたソースコードのコピペはアリかナシか

今回は、ネット検索で見つけたソースコードのコピペがアリかナシか、私なりの見解を書いてみようと思う。シチュエーションによって判断が変わってくると思うのでチャートにしてみた。 ライセンスによる判断 まずライセンスがコピーを許さない場合は絶対にNG…

バージョン管理の進化と一般人にとってのGitHubの難しさ

最近GitHubについて説明してほしいと言われることが増えた。対象者は職業プログラマーではないためバージョン管理システムなどを触ったことが無いのだが、諸事情で概要を把握する必要に迫られているといったところ。以降、一般人と呼ぶ。私自信も別に職業プ…

なぜプログラムコードのコメントにはWhyを書くべきなのか。他の4W1Hはどうした?

プログラミングコードのコメントにはWhyを書く。 これは結構いろんなところで言われている気がする。ビジネスフレームワークでは、5W1Hが大事と言われている。そのうちのひとつである。 なぜコードのコメントには、「Why」を書くべきなんだろうか。他の4W1H…

プログラミング学習で、自分の実力以上の書籍に挑戦する価値

今日は書店に行って以下の書籍を買ってきた。実践 Python 3作者:Mark SummerfieldオライリージャパンAmazon実践Python 3と書いてあるが、いわゆるPythonでこんなことができます!系の本ではなく、内容はデザインパターンをPythonに落とし込んだ設計論の書籍…

久々にLinuxからGitHubアクセスしたらパスワード認証できなくなっていたので対処した件のメモ

私は普段Windows 10からコマンドラインのGitでGitHubにアクセスしているが、たまにラズパイまわりの開発をする際にOracle VirtualBox上に作成したラズパイOSの仮想環境からGitHubにアクセスしたい場合がある。久々にこれをやってみたらパスワード認証は去年8…

趣味の開発で使えるGitHubのブランチ運用

今回はGitHubの話。 基本的な使い方は入門書がいくらでも出ているので今更私が解説するまでもないけど、ブランチ運用については腑に落ちるまで少し苦労したので今回は自分流のブランチ運用をメモとして残しておこうと思う。ガチの開発勢から色々と文句を言わ…

DualShock2KeyCommandのGitリポジトリPublic化と最近のリファクタリング

今日はPS4コントローラーをマクロキーボードとして使うプロジェクト「DualShock2KeyCommand」のリポジトリをPrivateからPublicに変更した。github.comこれまでPrivateにしていたのはゴリゴリに私用に特殊な設定をハードコードしてるのでPublicにしても別に誰…

Arduinoのスイッチ割り込みでチャルメラ(ラーメンのあれ)のON/OFF ~トランジスタによるスイッチング~

前回は絶対に起きられるアラームの構想について書いたが、今回はその実装に向けた要素技術の実験。 thom.hateblo.jp要素技術ってなんか大層な響きだけど、そんなに大げさなものではなく、スイッチの割り込み処理である。 特に他に呼びようがないのでそう呼ん…

VBA 線が絡まないPERT図(グラフ)の自動レイアウトアルゴリズム

今回は、グラフのレイアウトを自動化するためのアルゴリズムを紹介する。 ここでいうグラフはExcelのグラフ機能のことではなく、数学のグラフ理論の方のグラフ。知らない方は、以下のような作業工程図をイメージしてもらえば良いかと思う。 マインドマップ等…

プログラミングで過去に行き詰った問題に再トライすることの勧め

昨年10月頃に、とあるPythonプログラムで2つの問題に行き詰っていた。 折角の連休なので再トライしてみたところ2つともあっさり解決してしまった。プログラミングに限らずこういうことはよくある。一度行き詰ってしまった問題でも、ある程度の期間を置くこと…

プログラミング言語はひとつマスターすれば他もできる?

プログラミングでは、ひとつの言語をマスターすれば、どんな言語でも使えると言われている。 この言説には賛否あるけど、ある意味正しくて、ある意味間違いだと思う。より正確に言えば、新しく学ぶ言語と既にマスターしている言語に共通する概念についてはス…

オブジェクト指向でつまづく7つのポイントと処方箋

こちらの記事で伊藤先生も書かれているように、この数年でVBAのクラスモジュールに関する情報が充実してきている。これからクラスモジュールについて学習しようと考えている方も沢山(期待を込めて)いらっしゃることと思う。そこで今回は、オブジェクト指向を…

基本情報技術者の受験に役立つ、過去に書いたVBA記事の一覧をまとめてみた。

新年の初投稿で書き忘れてたので。さて、新年と言えば去年はこのような記事を書いた。 thom.hateblo.jp節目のブースト効果で、今年こそは何か資格を取ろうとか、色々考えている方もいると思う。 私が購読しているブログでも新年の意気込みが。 今さらながら…

VBA 循環的複雑度という指標でプロシージャの複雑度を測ってみる

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メディア: 単行本(ソフトカバー)この商品を含…

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