Excel VBAで迷路を作成する

Excel VBAで迷路を作成するマクロを組みました。

作ったもの

サンプル動画

「迷路作成」ボタンをクリックすると迷路が作成され、遊ぶことができるマクロを組みました。動作については、動画を下記に載せておきます。

実際のファイル

ファイルは下記のリンクにアップロードしました。実際に動かして遊んでいただく事ができます。

迷路.xlsm

コード

コード概要

最初は罫線で格子を作っておきます。

次に、適当なセルを選び、既知の場所とします。既知のセルには色をつけます。セルのInterior.ColorIndex = 20 が既知です。

その後、ランダムに上下左右のセルを選び、もしもそのセルが未知のセルならば、罫線を取り除いて移動します。移動後も同じ事を繰り返します。

暫く待てば、未知のセルが無くなります。どのセルもなんらかの経路で繋がっていますので、スタートとゴールはどこにおいても良いですが、左上と右下にプリセットしています。

コード本体

参考

迷路作成において、壁を壊して作成するという考え方は下記のリンクの記事を参考にしました。

[VB6]迷路作成のアルゴリズム

Google AdSenseと忍者AdMaxの併用で分かった事

当ブログでは、ブログの収益化を目的として、広告を設置しています。広告の内、Google AdSense忍者AdMaxは、広告のコードを設置したwebコンテンツに、広告が自動的に配信されるサービスです。そして広告が読者のブラウザに表示されたり、読者が広告をクリックしたりすれば、広告のコードをブログに設置したブログ主(このサイトであれば私)に報酬が発生します。

この2つの広告システムを併用してみて、報酬や運用面について分かった事、考えた事をまとめます。

報酬の比較

報酬額は、Google Adsenseが圧倒的です。忍者AdMaxの10倍〜20倍程度です。

Google Adsenseの方がクリック率もクリック単価も良いです。Google AdSenseは、多くの広告主を持ち、有利な広告を選択できるようになっています。また、高度なデータ分析を行っています。これにより、忍者AdMaxよりも適切な広告(ユーザーが注目しやすく、単価が高い)の配信が可能になっていると考えられます。

報酬額が圧倒的なGoogle AdSenseを、注目されやすい場所に優先的に掲載するのが良いと分かります。逆に報酬額が低い忍者AdMaxは、フッターなど隅の方へ追いやって良いでしょう。その他、クリック率が高い場所を探すための実験的掲載に活用できます。

表示の比較

忍者AdMaxは、Google AdSenseよりも広告ブロックツールに強そうです。

広告ブロックツールをアクティブにしたブラウザで閲覧すれば、Google AdSenseがブロックされていて、忍者AdMaxは正しく表示される事が多いです。Google AdSenseは有名であるため、広告ブロックツールの非表示対象になりやすいようです。

ブロックされにくいという点で、忍者AdMaxを補助的に掲載する価値はあります。

併用ではGoogle AdSenseへの悪影響あり

忍者AdMaxの併用により、Google AdSenseの報酬額は下がります。

理由の1つ目として、忍者AdMaxの広告をクリックしてしまったために、Google AdSenseの広告をクリックしなかったパターンが考えられます。Google AdSenseの報酬は忍者AdMaxと比べて圧倒的に大きいため、このパターンはブログ収益の総額を引き下げてしまいます。

理由の2つ目は、配信された忍者AdMaxの広告の内容が、Google AdSenseの配信する広告に悪影響します。忍者AdMaxは高い単価の広告を配信しようとする過程で、記事と全く関係のない広告を配信してきます。例えば資産運用の記事にオンラインゲームの広告を配信してしまう事があります。

このとき、Google AdSenseは、記事の内容にゲームが含まれると判断します。そしてゲームの広告を配信を始めます。このようにして、記事と関係のないGoogle AdSense広告の配信が始まり、Google AdSenseのクリック率、そして報酬額が低下します。

Google AdSenseへの悪影響が気になる場合、忍者AdMaxを使わないのも良いでしょう。

広告掲載の開始は忍者AdMaxは楽

忍者AdMaxは、登録すればすぐに広告が配信されます。特に承認は不要です。アダルトサイトでの利用も可能になっています。

一方で、Google AdSenseではブログが承認されるまでに時間がかかります。不適切なブログだと判断され、否認される事もあるようです。

このように、広告掲載を始めるのは忍者AdMaxの敷居の方が低くなっています。

Ubuntuで日本語入力ができなくなった時の対応

Ubuntuにログインしたら、日本語入力ができなくなっていました。いろいろ調べて、Fcitxの設定ファイルを削除したところ、日本語入力ができるように復旧しました。症状と、そこに到るまでの過程を書き留めておきます。

症状

再起動してログインしたら発症しました。アルファベットは打てますが、ひらがなが入力できなくなっていました。そして、本来はデスクトップの右上にいるはずの、オレンジ色の「あ」やキーボードのマーク(下図)が見当たらなくなっていました。

 

そしてこれは、ログインしているユーザー特有の問題のようでした。他のアカウントやゲストセッションでは日本語入力が普通にできました。

対応

「あ」やキーボードのマークは、Fcitxと呼ばれるインプットメソッド(入力メソッド)⁠のアイコンでした。当初ユーザー固有の問題だと気付かず、apt-getコマンドでFcitx関連、mozc等を入れ直したりしましたが、上手く行きませんでした。アイコンは依然として復活しませんし、Fcitxは起動しないように見えました。

その後、設定ファイルがホームの隠しフォルダに格納されている事を知りました。該当フォルダへは、端末に下記のコマンドを打てばたどり着けます。

どうやら、このフォルダにある設定が壊れたようです。試しにfcitxフォルダをまるごと削除しました。そして、ログアウト・ログインをしたところ、日本語入力ができるように復活していました。ちなみに、削除したfcitxフォルダは、ログインのタイミングで再び自動的に生成されました。

Excel VBAで区分毎に小計値を算出する

Excel VBAを使い、区分毎に小計値を算出するマクロを作りました。

要件定義

スタート(元データ)

元データは下図のような形式です。マクロには区分が入った列を変数名chcolとして、合計する列を変数名sumcolとして教えてあげます。

ゴール

ゴールは下図です。元データを加工し、区分ごとに小計が入った形をゴールとします。

コード

コードは下記のようになりました。

複数のブログを運営してみて分かった事 テーマ別特性とメリット・デメリット

複数のブログを運営してみて、いくつか分かった事があります。

テーマ別の特性

ブログのテーマによって、「閲覧数」「アフィリエイト収入」「紹介のしやすさ」といった特性が異なります。

資産運用ブログの特性

経済&マネーは資産運用ブログです。

資産運用ブログは、投資の判断材料を求める検索流入があり、そこそこの閲覧数があります。ブログ閲覧者は更なる情報を求めて広告をクリックしてくれる事があり、アフィリエイト収入は多いです。私が運営するブログの中では、資産運用ブログが最も「収益に貢献」しています。

ただしテーマがややマニアックですので、現実世界で人に紹介するのには不向きです。

技術ブログの特性

Kapokの技術ブログは技術ブログです。

技術ブログは、技術的問題の解決を求める検索流入があり閲覧数は多いです。私が運営するブログの中では、技術ブログが最も「1記事の閲覧数」が多くなっています。

ただし閲覧数の割にアフィリエイト収入は多くはありません。技術的問題を解決した読者は広告をクリックする前にページを離脱し、自身の作業に戻るためだと考えられます。資産運用ブログと同様に、テーマがややマニアックですので、現実世界で人に紹介するのには不向きです。

芸術ブログの特性

Kapokのアートハウスは芸術系ブログです。

芸術ブログの閲覧数は少ないです。写真ブログは世の中に多く存在し、私の芸術ブログのコンテンツは競争力を持てません。また、情報も付加しにくく、検索流入も見込まれません。閲覧数が少ないため、当然アフィリエイト収入も微々たるものになります。結果、自己満足のためのブログになります。

ただし、コンテンツは分かりやすいために「現実世界」で人に紹介する際は最も評判が良いです。

テーマ別特性のまとめ

上記の各ブログの特徴をまとめておきます。

ブログ 閲覧数 収益性 紹介のしやすさ
資産運用ブログ ×
技術ブログ ×
芸術ブログ × ×

複数ブログ運営のメリット

複数のブログ運営には、メリットが多くあります。

専門性と検索エンジンの評価

ブログを複数に分けると、ブログのテーマが明確化され、専門的になります。これにより、雑記ブログと比べて検索エンジンの評価が高くなる事を期待できます。

古い記事が埋もれにくい

1日に複数回ブログを更新する場合、雑記ブログですと古い記事がすぐに目につきにくい場所へ追いやられてしまいます。一方でブログを複数に分け、各ブログを1記事ずつ更新する場合、新しい記事は各ページのトップページに掲載されますので、古い記事が埋もれにくくなります。

フォーム選択の柔軟性

ブログテーマによって適切なブログフォームは異なります。例えば写真系の記事ではアイキャッチ画像の写真を是非表示させたい一方で、技術系記事は文字とソースコードが中心なのでアイキャッチ画像の設定は無意味で避けたいところです。

複数ブログを運用していれば、各ブログでテーマに沿ったフォームを柔軟に選択できます。写真ブログでアイキャッチ画像を表示させるブログフォームを選び、技術ブログではアイキャッチ画像を設定する必要もないフォームを選べば良いだけです。一方で雑記ブログでは、どこかでブログフォームに無理がかかり、妥協する必要が出てきます。

各ブログの比較とブログ運営ノウハウの蓄積

ブログを複数に分けると、各ブログを比べる事ができます。これにより、どのテーマにどのような特徴があるのかを知る事ができるようになります。1つの雑記ブログ運営と比べて、問題点を明確化しやすく、ブログ運営ノウハウの蓄積が容易になります。

被リンクを増やしやすい

ブログを複数に分けると、被リンクの総数を増やしやすくなります。

例えばブログ村(ブログランキングサイト)のサービスはブログ毎に登録できるため、複数ブログ運営では各ブログ登録により、1つの雑記ブログを1回登録する場合と比べて、被リンクを多くできます。

複数ブログ運営のデメリット

複数のブログの運営には、デメリットもあります。

管理コスト増

ブログを複数に分けると、各ブログを管理する必要が出てきて、管理コストが増えます。

各ブログへのログインだけでもひと手間かかります。各ブログでブログシステムのアップデートを行うのは退屈な作業です。レンタルサーバーで運用していれば、1つの雑記ブログと比べて料金が割高になる事もあります。

更新頻度の低下

複数ブログでは、1つの雑記ブログへ投稿する場合と比べて、1つ1つのブログの記事の更新頻度が低くなります。

検索流入を中心として閲覧数を増やすタイプのブログでは、更新頻度の低下は大した問題ではありませんが、ブログのファンを集めて交流するタイプのブログでは更新頻度の低下はファンの失望を誘ってしまい、大きな問題になってしまいます。

相乗効果が薄まる

ブログを複数に分けると、各記事間の相乗効果は少な目になります。

例えば資産運用のためのプログラミング技術についての記事は、1つの雑記ブログであれば投稿しやすいですが、資産運用ブログと技術ブログを分けていた場合はどっちつかずの状態になります。(もし資産運用ブログに投稿すれば技術力の信用がありませんし、逆に技術ブログに投稿すれば資産運用の信用が疑われます。)

まとめ

当記事では、複数のブログを運営してみて分かった事をまとめました。

ブログのテーマによって、「閲覧数」「アフィリエイト収入」「紹介のしやすさ」といった特性が異なります。また、複数ブログ運営には、専門性を高め検索エンジンの評価を上げられたり、ノウハウの蓄積に有利であったり、被リンクの総数を増やしやすかったり、といったメリットがあります。

一方で複数ブログ運営には、管理コスト増や相乗効果が薄まるデメリットもあります。

複数ブログの運営と、1つの雑記ブログの運営の特徴を下記のテーブルにまとめます。

項目 複数ブログ 雑記ブログ
専門性
記事の埋もれにくさ
適切なフォームの選択
検索エンジンの評価
ノウハウ蓄積
被リンクの増やしやすさ
管理コストの低さ
更新頻度の維持
相乗効果

Excel VBAで各ファイル各シートを1シートにまとめる

各ファイル、各シートにばらばらに存在するデータをコピーし、1シートにまとめデータベースを持ってしまえば、処理が楽になる事がありそうです。そんな時に使おうと、1シートにまとめるExcel VBAのマクロを作ってみました。

シート最終行の取得は、No.8 ワークシートの最終行、最終列を取得する(なにぬねのーつ)を参考にしました。

MySQLコマンド覚書

MySQLで何かする際に、どのようなコマンドを打てばよいかを覚書として書き留めました。

ログインとログアウト

MySQLで何か行うために、まずはMySQLにログインします。

端末からログインするには、

と打ち、パスワードを入力すればログインできます。

ログアウトは

詳細:MySQLに端末からログインするには?

データベース

MySQLでは、

  1. MySLQの中にデータベースがあり
  2. データベースの中にテーブルがあり
  3. テーブルの中に各データが格納されている

という階層構造が取られています。

先ほどMySQLにログインしたので、次はデータベースを見てみます。

データベースの一覧を見る

show databases;でデータベースの一覧を確認できます。

新しくデータベースを作る

create database `データベース名`;で新しくデータベースを作れます。今回試しにstlibというデータベースを作ってみます。`(backtick)は小文字です。’(シングルクオーテーションマーク)だと上手くいかないようです。

データベースを使う

use データベース名;でデータベースを利用できるようになります。

データベースを削除する

drop database データベース名; でデータベースを削除します。

テーブルを使う

データベースの中にテーブルがあります。

データベースの中身であるテーブルの一覧を確認

show tables;で、データベースの中にどのようなテーブルがあるのかを確認できます。

先ほど作ったばかりのstlibには、まだテーブルが存在しない事が確認できます。

テーブルを作成

create table テーブル名 (仕様); でテーブルを作れます。

テーブルの中身の表示

テーブルの中身を確認

select * from テーブル名でテーブルの中身を確認できます。

先ほど作ったwlistの中身を見てみると、まだ何も中身が入っていない事が分かります。

テーブルの中身の内、条件を満たすデータを抽出

select * from テーブル名 where 条件;で、条件を満たすデータを抽出出来ます。いくつかデータを登録した後に、試しにcurがKRWであるデータを抽出してみます。

テーブルの中身を並べ替えて表示

select * from テーブル名 order by ソートするカラム名;で、並べ替えて表示できます。試しにcodeで並べ替えて表示します。

テーブル内容の操作

テーブルにデータを追加

insert into文でデータを追加できます。

入力方法は複数の種類があります。

参考:データの追加(DBOnline)

テーブルのデータを削除

delete from テーブル名 where 条件;で、条件を満たすデータを削除出来ます。間違えて必要なデータを消さないように、事前にselect文で抽出の条件に問題無い事を確認してからdelete文を使うのが良いとされています。例えばwlistのcurがusdであるデータを削除する場合は下記のコマンドです。

テーブルのデータの編集

update文でテーブルのデータを編集します。試しにwlistのcodeを7475:jpから7475.jpへと変更します。

テーブルそのものの操作

テーブルのカラムの追加と削除

alter table テーブル名 add カラム名 データ型;でカラムを追加できます。試しにテーブルwlistにカラムperを追加してみます。

alter table テーブル名 drop カラム名;でカラムの削除ができます。先ほどのカラムperを削除してみます。

カラムの情報を取得

show columns from テーブル名;でカラムの情報(各カラムの型情報や、主キー情報等)を取得できます。試しにexというテーブルの情報を表示してみます。

テーブルの削除

drom table テーブル名;でテーブルを削除できます。試しにstdbというテーブルを削除してみます。

その他

データベースのユーザー追加

データベースのユーザー追加は、

GRANT ALL PRIVILEGES ON データベース名.* TO ユーザー名@localhost IDENTIFIED BY “パスワード”; です。データベース名とユーザー名は同じで構わないようです。パスワードは設定します。

このコマンドは、データベース「データベース名」のすべての操作を許可するという意味です。データベースを操作されないためにも、パスワードは破られにくいものが良いです。

ユーザーを追加しておけば、他のソフトウェア(例えばpythonやphp)を設定すれば、MySQLのデータベースにアクセスが可能になります。

設定を反映

flush privileges; で設定が反映されるようです。

体重計を買いました→ダイエットを始めます

体重計を買いました。

初めて体重計を購入しました。今までは体重計が無くても平気だったのですが、最近出たお腹が引っ込まなくなり、健康管理のために必要だと考え、購入しました。

買ったもの

買ったのは、ドリテック 体重体組成計 BS-910-WTKD 【ビックカメラグループオリジナル】です。体重だけではなく、体脂肪率や体水分率、筋肉量や骨量を測定できる機械です。

このような機械は、実は体重計ではなく、体組成計と名前がついているようです。

使い勝手

体重計としてはコンパクトで、幅218mm、奥行188mm程度です。このように小さいので置き場所に困りません。その上おしゃれですので、十分満足のいく商品です。

ただ体重以外の測定をする場合、最初直感で使いこなせない難しさがあると思いました。例えば設定ボタンを3秒以上長押しして情報を登録する等、説明書無しでは気付かない機能が付いています。(勿論説明書を読めば問題なく使えます。)

この他、体水分率のように、あまり意味のない(知って何が分かり、どう変化させるのが望ましいか不明)指標も邪魔な気がします。

そうは言えど、機能に上記以外の不満は無く、値段の割に高機能で十分満足な機械だと考えました。これを買ったビックカメラのお店でも、人気商品である旨が掲示されていました。

ダイエットを始めます

体重計を買った事を機に、BMI指数等の健康指標をいろいろ調べてみた結果、私は適正な状態と比べて少し太っている状態である事を知りました。

これを受け、ダイエットを始めます。現在体重は61.5kgでしたが、55kgを目標にします。

ホームページをリニュアールしてみた感想

ホームページをリニューアルしました。まずは今回のリニューアルによる変化を紹介します。そしてリニューアルの過程で私が何に気付き、どう思ったかについてまとめ、投稿します。

ホームページのリニューアル

旧ホームページ

旧ホームページは下図のレイアウトでした。プロが作ったサンプル素材をベースに編集しており、デザインそのものは気に入っていました。ただしスマホには対応しておらず、レスポンシブデザインに変更したいと考えていました。

新ホームページ

新ホームページは下図のレイアウトです。こちらもプロが作ったサンプル素材をベースに編集しました。無料で使わせて頂いています。画像はテンプレートのままですが、変更する必要も少ないと考え、一旦そのまま運用しようと考えています。

その他のページの更新有無

ホームページ以外にも、ホーム直下のいくつかのページを更新しました。プロフィール初音ミクオリジナル曲のページは更新し、レスポンシブデザインになりました。

一方でKapokの掲示板は、レスポンシブデザインにするとダサくなる様子でしたので、移行を諦めました。WordPressブログは既にレスポンシブでしたので、特に変更ありません。

所感

時間がかかった

ホームページリニューアルには、考えていたよりも多くの時間がかかりました。

当初コンテンツそのものには手をつけず、デザインのみを変更するつもりでいました。ところが、デザインの変更によりコンテンツの編集やテーブルへの移行が必要となった事で、予想よりも多くの編集作業がありました。

それに加えてゴールが近付いたタイミングで、追加で行ないたい変更(ソーシャルボタン設置や新着記事の表示)が出てきました。ゴール直前にもっと良いものを作ろうとした結果、時間を取られました。

このように、デザインの変更によるコンテンツ編集が必要となった事、および新しく設置したいものが見つかった事、の2点により、予想より多くの時間が取られました。

面白かった

ホームページリニューアルは面白いものでした。ご飯を食べる時間や眠る時間が惜しく感じる程でした。

何が面白いのかはうまくは説明できません。自分のホームページのソースコードの理解が深まる事が嬉しいのか、仕事と違いとりあえず着実に前進している作業そのものが好きなのか、素人なりに考えてプロっぽいホームページを構築しつつある事に対する誇りか、htmlやphp、MySQLが以前よりも手早く編集できるようになっていた事で賢くなったと実感できて嬉しいのか、いくつかの理由はありそうです。

いずれにしてもこの年になって熱中できるものがあるとは、幸せなものです。

エンジニアの気持ちが少し分かった

上記の通り、私のホームページは私が楽しんで更新しました。ただ、これを仕事にしているエンジニアの方は大変だと思いました。

最初の方は工程も不明確で時間が読めないですし、思ったよりも時間が取られる箇所が出てきたり、ゴール直前の仕様変更があったりしました。私はゴールデンウィークで遅れても余裕でしたので良かったのですが、もしもこれが仕事で納期ギリギリであったとしたら泣きたくなりそうです。

コピペは偉大

今回、コピペの力を実感しました。

プロがデザインしたテンプレートをコピーして利用したので、私のような素人がプロっぽいデザインのホームページを作成できました。半ばCMS(コンテンツマネジメントシステム)化していた旧ホームページのphpコードも、かなりの部分をコピペで使い回す事ができました。新着記事を表示するためにMySQLでデータベースを拾う部分もほとんどコピペです。

コンピューターの強力な武器の1つはコピペでしょう。どう既存のものをコピーするかのスキル、既存のものを探すスキル、は日曜エンジニアには大切だと良く分かりました。

2台のPCを1組のマウス・キーボードで操作するためのスイッチを購入

2台のPCを1組のマウス・キーボードで操作するには、エレコム KVMスイッチ キーボード・マウス用 手元スイッチ付 ブラック KM-A22BBKが便利です。

何故この製品を買ったか?

私は自宅で、普通のWindowsのPCと、サーバーとしてUbuntuのPCの2台のPCを利用しています。スペースの関係で、2台のPCのマウスとキーボードは共通です。今まではマウス・キーボードをUSBハブに挿し、USBハブごと使うPCに差し替える事で切り替えていましたが、少し面倒でした。

そんなときにビックカメラでこの製品を見つけ、思わず購入してしまいました。ただの切り替えスイッチにもかかわらず数千円ですので割高感はありましたが、一般的なPC周辺機器と比べれば需要が極めて少ないのでしょうから、商品化されている事そのものに感謝しつつ高値掴みしました。

製品について

製品は1台目PCに挿すUSB端子、2台目PCに挿すUSB端子、PC切り替えスイッチ、入力用USBポート(2つ)から構成されます。2つのUSBポートにはマウス・キーボードを挿す事を想定しているようですが、USBハブを挿してポートを増やしても機能するようです。

スイッチとUSBポートはマグネットのシールを付けて、金属につけておけるようになっています。また、2台のPCの内の片方をシャットダウンすると、自動的に電源がついている方のPCへの入力にスイッチが切り替わるようです。このように、なかなか気が利いた機能があり便利です。