t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

プログラミング

waves 0.96インチ IPS 液晶ディスプレイのカラー指定で青・赤が逆になるBGR565形式だったため対処のメモ

前回こちらの記事で紹介したディスプレイについて、カラー指定の青と赤が逆になっていて困ったのでその修正方法についてメモしておく。 thom.hateblo.jpライブラリ「Adafruit_ST7735_and_ST7789_Library」に入っているサンプルコード「graphictest.ino」内に…

Raspberry Pi Picoでマイクラ作業用にマウス・キーボードマクロ作成

久々にMinecraftで遊んでいるんだけど、土台敷き作業が結構面倒くさい。 操作としてはShift+S+D+マウス右を押しっぱなしにするだけなんだけど、気を抜くとシフトが外れて落下するため自動化することにした。ソフトウェアマクロという手もあるけど途中で手動…

Python・数学・Bing AIでそれぞれSatisfactoryの代替レシピガチャの確率を求めてみた。

今回は私が遊んでいるゲーム Satisfactoryのなかのガチャ要素で狙ったものを引きあてる確率を求めてみた。Satisfactoryは異星に工場を発展させていく生産シミュレーション系のゲームである。 詳しくは以下の記事で紹介しているので気になる方はチェックして…

GUI開発が面倒ならCUIで作れば良いという気付き~Pythonリマインダー管理用コマンドツールを作成

今回は、以前作成したリマインダーシステムの管理ツールを作成した話。 thom.hateblo.jpあれからリマインダーシステムはますます重要度を増し、周期的な作業も含めると既に40近くのTo Doが登録されている。 最初のうちは手修正で良かったが、これだけ数が増…

Arduinoでステッピングモーターを使った自動コイル巻き機の試作

今回はArduinoで自動コイル巻き機を試作したのでご紹介。巻きあがりのクオリティはこんな感じ。 折り返しのタイミング設定をミスって左端がちょっとダブついてしまったが全体的にかなり密に巻けているのでいい感じ。動作の様子を動画に収めてみた。(音無し動…

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

今回は、ネット検索で見つけたソースコードのコピペがアリかナシか、私なりの見解を書いてみようと思う。シチュエーションによって判断が変わってくると思うのでチャートにしてみた。 ライセンスによる判断 まずライセンスがコピーを許さない場合は絶対に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プロジェクトオライリージャパンAmazonプログラミングGauche(ゴーシュ)。一度売ってしまったのだけど、どうしてもその本のコラム「Lisp脳」の謎に迫る-Schemeプロ…

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

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

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

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

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

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

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