【ポケモンGO】ウォーターフェスティバル!(2018年)



水タイプのポケモンが大量に発生するウォーターフェスティバルが下記期間開催します。(公式サイト)

  日時 : 2018年6月8日 ~ 2018年6月21日

去年は3月に開催され、ラプラスが大量に発生しましたが、今年はどうでしょう?

初日出歩いた状況では、レアポケモンがPOPするというより、よく見かける水タイプのポケモンが町中で多く湧いたなぁ・・という印象を持ちました。

尚、今回のイベントの概要は、
 ・水タイプのポケモンをゲットしたら星の砂が3倍
 ・2Kmタマゴから水ポケモンが孵りやすく、アメ・星の砂が2倍
 ・色違いシェルダーが登場
 ・色違いカイオーガがレイドバトルで登場
という感じです。


カテゴリー: ポケモンGO | コメントする

【MySQL(Windows版)】ダウンロード方法


 ダウンロード方法


MySQLダウンロードサイトにアクセスし、

 ① 「DOWNLOADS」
 ② 「Community」
 ③ 「MySQL Community Server」

を選択します。




画面下の方に下記画面が表示されるので、[Select Operating System:]に「Microsoft Windows」と選択されている事を確認し、「Go to Download Page」をクリックします。




下記のように【Download MySQL Installer】画面の下の方にダウンロードするボタンが2つあります。

オンライン中のインストールであれば「mysql-installer-web-community-8.0.11.0.msi」を、
オフライン中のインストールであれば「mysql-installer-community-8.0.11.0.msi」をダウンロードします。




下記【Begin Your Download】画面が表示されます。

Oracle Web account を持っていれば Loginを、
Oracle Web account を持っていなく、アカウントを登録する場合は Sign Upを、
ダウンロードだけしたい場合はNo thanks, just start my download.をクリックします。



「No thanks, just start my download.」をクリックすると下記画面が画面下に表示されるので「実行」をクリックします。



カテゴリー: MySQL, システム開発 | コメントする

【ポケモンGO】アローラナッシー(2018/5/30)



アローラ地方に登場するポケモン第一弾はナッシーです。

お昼休み、ポケモンGOを起動すると、ゲットしているにも関わらずナッシーが影で表示されていました。しかもナッシーOnly!



バグったのかな?!と思い、ポケGOを再起動してみると、アローラ地方のナッシーでした。どうやらバージョンアップをしないと、アローラナッシーは正しく表示されないようです。



ちなみに、アローラナッシーはゲットチャンスの際に顔が見ないのはバグではなく仕様です。



ゲットすると、図鑑のポケモンの種類が増えるわけではなく、既存のポケモン(ナッシー)に「-アローラのすがた-」として掲載されます。




カテゴリー: ポケモンGO | コメントする

【Excelマクロ(VBa)】[変数]構造体について


 構造体とは


人・会社・物 等を表すのに、色々な情報があります。

会社を例に取ってみると、会社コード・会社名・設立年月日・資本金・郵便番号・住所・電話番号・FAX番号・・など様々な情報があります。

これらを単純に変数で定義しようとすると以下のようになります。

Dim strCompanyCode As String '会社コード
Dim strCompanyName As String '会社名
Dim dtEstablishment As Date '設立年月日
Dim curCapital As Currency '資本金
Dim strPostNo As String '郵便番号
Dim strAddress As String '住所
Dim strTEL As String '電話番号
Dim strFAX As String 'FAX番号
     ・
     ・

このように個々に書くと、それぞれの関連性が分かりにくくなり、「変数設定忘れ」「重複変数設定」「データの更新し忘れ」・・などのリスクがあります。

これらの変数の情報を会社で括ると非常に見やすくなります。
具体的には下記のように記述します。

'[構造体]会社
Type typCompany
  strCompanyCode As String '会社コード
  strCompanyName As String '会社名
  dtEstablishment As Date '設立年月日
  curCapital As Currency '資本金
  strPostNo As String '郵便番号
  strAddress As String '住所
  strTEL As String '電話番号
  strFAX As String 'FAX番号
       ・
       ・
End Type

Dim stCompany As typCompany '会社

これだけだとピンとこないかもしれませんが、構造体を設定する事で、全て会社に紐づけられた状態となります。

新たに変数を設定する場合、Type typCompany ~ End Typeまでをチェックすれば、会社として定義すべき変数が網羅されているか、二重登録されていないかチェックしやすくなります。

また、電話番号やFAX番号は会社だけではなく、自社の組織や個人情報としても持っています。今回、電話番号の変数は strTEL と設定しましたが、「会社」で括らなければ何の電話番号か分からなくなります。変数に 会社・組織・人・・・を入れると、変数名だけで非常に長く、管理が大変になり、変数名のネーミングルールや管理が非常に大変となります。



 構造体と配列の組み合わせ


構造体は、配列と組み合わせて使う事で最も効果的な使い方となります。(配列については「[変数]配列について」参照)

システムで処理を行う場合、複数レコードを扱う事が一般的で、取引のある会社は1社だけではありません。

処理する会社を都度データベースから読み込んで処理を行う方法も考えられますが、I/Oは処理レスポンスが悪いため、都度I/Oが発生する処理は極力控えた方が良いです。

上記を例に構造体を配列(10万件)で定義すると、下記のようになります。

'[構造体]会社
Type typCompany
  strCompanyCode As String '会社コード
  strCompanyName As String '会社名
  dtEstablishment As Date '設立年月日
  curCapital As Currency '資本金
  strPostNo As String '郵便番号
  strAddress As String '住所
  strTEL As String '電話番号
  strFAX As String 'FAX番号
       ・
       ・
End Type

Dim stCompany(100000) As typCompany '会社

このように設定し、配列の数値を変える事で、その会社の情報が管理出来るようになります。



 構造体の使い方


構造体の変数を使う場合は、構造体.変数 とします。
配列を使っている場合は、構造体(カウント数).変数 とします。

電話番号を例にすると下記の様に記述します。

stCompany.strTEL = "03-1234-5678" '配列ではない場合
stCompany(0).strTEL = "03-1234-5678" '配列の場合



 構造体の初期化


変数が多くなる程1つ1つ初期化するのは大変です。例えば「実行」ボタンを押した後、再度「実行」ボタンを押して再処理を行う場合、1回目のデータが残ったままになり障害に繋がるケースがあります。

構造体の場合、項目数が多いので一括でクリア(初期化)したいのですが、そういう関数は用意されていなさそうなので、下記のように実際に使う構造体と初期化用の構造体を作成し、初期化する時は初期化用の構造体で上書きします。

Dim stCompany As typCompany '実際に使う構造体
Dim del_stCompany As typCompany '初期用の構造体

stCompany.strTEL = "03-1234-5678" '値をセット
MsgBox stCompany.strTEL 'セットした値を表示

stCompany = del_stCompany '初期化
MsgBox stCompany.strTEL '初期化された事を確認

一方、構造体に配列を使っている場合、配列の初期化 Erase を使う事ができます。

Dim stCompany(10) As typCompany '配列化した構造体

stCompany(0).strTEL = "03-1234-5678" '値をセット
MsgBox stCompany(0).strTEL 'セットした値を表示

Erase stCompany '初期化
MsgBox stCompany(0).strTEL '初期化された事を確認



カテゴリー: VBa(Excelマクロ), システム開発 | コメントする

【Excelマクロ(VBa)】[変数]配列について


 配列とは


変数は「定義した文字(変数)に可変する色々な値を一時的に保管する入れ物」であり「型が重要」と説明しました。(「定数と変数について」参照)

例えば3人[定数]のテストの点数を変数に入れて平均(整数)を出す場合、変数をどのように定義したら良いでしょうか?

何も考えずに機械的に変数を定義するならば、下記の様に記載するかもしれません。

Const cnstNumber As Integer = 3 '[定数]人数
Dim int1, int2, int3 As Integer '[変数]3人のテストの点
Dim intAverage As Integer '[変数]平均

人数が増えるだけ変数が増えるとすると、処理が非常に大変でミスが発生しやすくなります。

上記の例で10人分の処理をしようと変数の定義をすると以下のようになります。100人だと書ききれません。

Const cnstNumber As Integer = 10 '[定数]人数
Dim int1, int2, int3, int4, int5, int6, int7, int8, int9, int10 As Integer '[変数]10人のテストの点(増加分)
Dim intAverage As Integer '[変数]平均

このような場合に配列を使い「テストの点」という10個の入れ物(変数)を用意します。記述の仕方は下記の通りで括弧()の中に10と書きます。

Dim intTestPoint(10) As Integer '[変数]10人のテストの点


しかし、使い方は下記のように0から開始するので9で終わります。

intTestPoint(0) = 10 '1人目のテストの点
intTestPoint(1) = 20 '2人目のテストの点
intTestPoint(2) = 30 '3人目のテストの点
  ・
  ・
intTestPoint(9) = 100 '10人目のテストの点


 配列によるメリット


変数を配列にする事で、変数定義が楽になるだけではなく、実際の処理も非常に効率が良くなります。

平均を求める処理だったので10人の場合の処理を書くと下記のようになります。

▽ 配列を使わない場合
'10人のテストの平均点(整数)
intAverage = (int1 + int2 + int3 + int4 + int5 + int6 + int7 + int8 + int9 + int10) / cnstNumber

▽ 配列を使った場合(ループ処理に使っている intLoopCNT は別途変数定義が必要)
'10人のテストの合計点
for intLoopCNT = 0 to cnstNumber - 1
  intAverage = intAverage + intTestPoint(intLoopCNT)
next intLoopCNT

'10人のテストの平均点(整数)
intAverage = intAverage / cnstNumber

初心者には「配列を使わない場合」の方が単純に見えるかもしれませんが、人数が増えれば変数が増えてプログラムの修正が多く発生しますので、プログラムの拡張性も損なわれます。

是非配列の使い方を覚えて活用しましょう。



カテゴリー: VBa(Excelマクロ), システム開発 | コメントする