オーロラさんの勉強帳

SESの客先常駐勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。

【Excel VBA】再帰呼出しをVBAで試してみる ~再帰呼出しの動きをわかりやすく解説~

プログラムが自分自身を呼び出す処理のことを「再帰呼出し」といいます。
実際にVBAのコードで「再帰呼出し」の動きをわかりやすく解説します。

階乗を求める再帰呼出しのVBAコード

4の階乗を求めるVBAのコードです。
FunctionプロシージャのsampleRecursiveで「再帰呼出し」にて、4の階乗を求めています。

Sub sampleCall()
  MsgBox sampleRecursive(4)
End Sub

Function sampleRecursive(ByVal n As Long) As Long
    If n <= 1 Then
        sampleRecursive = 1
    Else
        sampleRecursive = n * sampleRecursive(n - 1)
    End If
End Function

※Sub sampleCallのMsgBox sampleRecursive(4)の()内の数字「4」を任意の数字に変えると、その数字の階乗を求めることができます。


上記コードを動かしてみると、4の階乗(4×3×2×1)の24がメッセージボックスで表示されます。
f:id:auroralights:20220315220640p:plain


再帰呼出しの動作を画像で分かりやすく解説

以下の画像は再帰呼出しの前半部分の解説画像です。
Subプロシージャ「sampleCall」からFunctionプロシージャ「sampleRecursive」を呼び出します。その際に引数として「4」を渡します。
Functionプロシージャ「sampleRecursive」で自分自身を呼出す際は、3、2、1と引数を渡していきます。

f:id:auroralights:20220315224434p:plain
再帰呼出し

以下の画像は、再帰呼出しの後半部分の解説画像です。
『sampleRecursive = n * sampleRecursive(n - 1)』『sampleRecursive(n - 1)』に返り値(1、2、6)を返して、階乗を計算していきます。
※2*1⇒3*2⇒4×6で24求めています。
そして、再帰呼出しで求めた24をSubプロシージャ「sampleCall」に返して、メッセージボックスに表示しています。

f:id:auroralights:20220315224520p:plain
再帰呼出し


4の階乗を再帰呼出しで求める動作の流れは以下の通りです。

f:id:auroralights:20220316232232p:plain
再帰呼出し 4の階乗

再帰呼出しの動作を考える(文字ベース)

大きな動きは以下の図の通りです。上記では画像ベースで説明したので、テキストベースで1つずつの処理を解説します。

f:id:auroralights:20220315221246p:plain
再帰呼出し

<Subプロシージャ:sampleCall>
1~2:Subプロシージャ「sampleCall」からFunctionプロシージャ「sampleRecursive」を呼び出します。その際に引数として4を渡します。

<FunctionプロシージャsampleRecursive>
4:Functionプロシージャ「sampleRecursive」でnには4が渡されています。
5:IF文でnが1以下かどうかで処理を分岐しています。(n=4なので8行目に移動)
8:sampleRecursive = n * sampleRecursive(n - 1)では、sampleRecursive =4*sampleRecursive(3)となります。sampleRecursive(3)で自分自身のFunctionプロシージャ「sampleRecursive」を呼び出します。
その際、引数に3を渡します。

引数に3を渡したFunctionプロシージャ「sampleRecursive」でも、8行目でさらに自分自身のFunctionプロシージャ「sampleRecursive」を呼び出します。
その際、引数に2を渡します。
引数に2を渡したFunctionプロシージャ「sampleRecursive」でも、8行目でさらに自分自身のFunctionプロシージャ「sampleRecursive」を呼び出します。
その際、引数に1を渡します。

引数に1を渡したFunctionプロシージャ「sampleRecursive」では、6行目でsampleRecursive=1で返し値として1を格納。
9~10行目のEnd If、End Functionで呼出し元に返り値1を返します。

呼出し元は「sampleRecursive = 2 * sampleRecursive(2 -1)」の『sampleRecursive(2 -1)』です。sampleRecursive(2 -1)に返り値1が入るので、「sampleRecursive = 2 * 1」(返り値が2)となります。
9~10行目のEnd If、End Functionで呼出し元に返り値に2を返します。

呼出し元は「sampleRecursive = 3 * sampleRecursive(3 -1)」の『sampleRecursive(3 -1)』です。
sampleRecursive(3 -1)に返り値2が入るので、「sampleRecursive = 3 * 2」(返り値が6)となります。
9~10行目のEnd If、End Functionで呼出し元に返り値に6を返します。

呼出し元は「sampleRecursive = 4 * sampleRecursive(4 -1)」の『sampleRecursive(4 -1)』です。
sampleRecursive(4 -1)に返り値6が入るので、「sampleRecursive = 4 * 6」(返り値が24)となります。
9~10行目のEnd If、End Functionで呼出し元に返り値に24を返します。

呼出し元Subプロシージャ「sampleCall」のMsgBox sampleRecursive(4)の『sampleRecursive(4)』です。
メッセージボックスに24を表示して、処理を終わります。


以上、再帰呼出しの解説です。
お読みいただきありがとうございました。

【Excel】便利な『オートカルク機能』 ~データの個数、合計値、平均、最小値、最大値を一瞬で確認できる~

『通勤のすきま時間で学ぶ仕事術』を紹介するシリーズです。
今回はExcelで、データの個数や合計値などを今すぐに確認したいときに使える『オートカルク機能』を紹介します。

オートカルク機能とは

オートカルク機能選択したセル範囲のデータの個数、数値の個数、合計値、平均、最小値、最大値をステータスバーに表示してくれる便利な機能です。
データの集計時の確認やデータの整合性の確認などで使います。
使い方はセル範囲を選択するだけなのでとても簡単です。


以下の画像ではセル「B3:D10」を選択し、ステータスバーに選択したセル範囲「B3:D10」の平均・データの個数・最小値・最大値・合計が表示されています。

オートカルク機能のサンプル画像
オートカルク機能

オートカルク機能でステータスバーに表示する項目を設定する

オートカルク機能でステータスバーに表示する項目は、ステータスバー上で右クリックして表示されるメニューの「平均」「データの個数」「数値の個数」、「最小値」、「最大値」、「合計」から設定できます。

オートカルク機能の設定
オートカルク機能の設定

オートカルク機能の使用例

選択した範囲の平均、データの個数、数値の個数、最小値、最大値、合計を簡単に確認できるので、報告書の作成などでデータを集計しているときに、データが正しいかどうかの確認などで使うことができます。

以下の画像ではセルE11の値が正しいことを確認しています。

資料を作成する際に、数式のセル範囲がずれていたり、数値が間違っていたりすることがあるので、オートカルク機能を使って素早くチェックをします。


以下の画像のように単純にデータの個数を確認することも多いです。

データベースやシステムから大量のデータをExcelにおとしたときに、データが全件Excelにあるか(データベースやシステムの件数とExcelのデータ件数が同じかどうか)を確認するためにオートカルク機能を使うことも多いです。
※データが大量にある場合、途中までしかダウンロードできていないことがあるため、件数の確認をすることがあります。


以上、オートカルク機能の紹介でした。
簡単で便利な機能ですので、ぜひ活用してみてください。

【資格】LPIC Level1 102 (LPI認定試験 102-500) に合格。受験の感想や勉強方法などについて

先日、LPIC Level1 102試験(Ver5.0)に合格しましたので、受験の感想や勉強方法などについて記事にします。
少しでも今後受験される方の参考になれば幸いです。

LPIC101は4年前に合格していたのですが、LPIC102は受験するタイミングを逃し続け、今回の受験となりました。
LPIC101を取得してから4年の間にLinucという別のLinuxの資格ができたり試験のバージョンが4.0から5.0に上がっていたり
変化に戸惑うこともありましたが、LPIC101、102の両方に合格したので、晴れてLPIC Level1(LPI認定試験レベル1)の取得となりました。

LPICの概要

LPIC、Linux Professional Institute Certification(LPI認定)は、Linuxシステム管理者の知識とスキルを評価するための試験です。
Linuxの認定試験としてはRed Hat社のRHCE(Red Hat Certified Engineer)などの試験がありますが、LPICはベンダー、ディストリビューションに依存しない中立的なLinux技術者の認定試験です。
LPICにはレベル1からレベル3までの3段階のレベルがあり、レベル1から順番に取得している必要があります。
レベル1の取得には101、102試験の合格が必要です。

LPICの有効期間およびLevel1のバージョンについて

認定資格の有効期間は5年となっており、資格を維持するためには再認定または上位レベルの認定を受ける必要があります。

技術進化に対応するために、試験目標は平均3年ごとに更新されるようです。
2022年1月時点でLPIC レベル1の最新バージョンはバージョン5.0です。
バージョン5.0は2018年10月1日にリリースされているので、そろそろ新しいバージョンがリリースされるかもしれません。

LPICの詳細については、公式サイトも参照ください。
LPIの認定資格 | Linux Professional Institute


LPIC Level1 102(102-500)の試験概要

出題数 60問
試験時間 90分
合格ライン 約65%前後
試験料 15,000円(税抜き)
※受験料は変更になる可能性がございます。以下URLなどからご確認をお願いいたします。
Exam Pricing | Linux Professional Institute



102試験の試験範囲

  • シェルとシェルスクリプト
  • ユーザーインターフェースとデスクトップ
  • 管理タスク
  • 必須システムサービス
  • ネットワークの基礎
  • セキュリティ

※出題範囲は変更となる可能性もあるので、公式サイトなどで事前確認をお願いいたします。


LPIC102の試験結果、難易度

結果は620点で合格しました。
(試験の得点範囲は200-800点。正答率65%以上が合格の基準です)
最初に全然わからない問題が数問続いてかなり焦りました。
問題の1周目はざっと目を通してとりあえず回答し、2周目で落ち着いてゆっくり全問見直し、回答を修正しました。
残り時間47分残して試験を終了。
時間はかなり余裕があるので、納得できるまで何度も見直しができます。


難易度は『易しい』と思います。
ただし、最近受けたOracle Database Bronzeと比べると難しかったです。
『易しい』試験と思って、油断すると不合格になる危険性があると思いました。


LPIC102の学習期間

学習期間約2カ月
前半1カ月はダラダラしてしまい、進捗は悪く、後半1カ月で集中して勉強した感じです。
後半1カ月は平日1時間、休日2~3時間ほど学習しました。

前提知識によって学習期間は変わってくると思いますが、約2カ月くらいを目途に受験されるのがいいかと思いました。
短期間に丸暗記で資格取得することもできると思いますが、余裕をもって学習することを考えて2カ月くらいが妥当かと思いました。


LPIC102の学習方法

学習した内容

私が行った学習方法は以下の通りです。
1.翔泳社 Linux教科書 LPICレベル1 (通称:あずき本) 3周
2.翔泳社 Linux教科書 LPICレベル1 スピードマスター問題集(通称:スピマス) 1.5周ほど
3.Ping-t 問題集 0.25周ほど、コマ問 0.8周ほど

学習方法の詳細を、私の反省も踏まえて以下に記載します。


1.翔泳社 Linux教科書 LPICレベル1 (通称:あずき本)
基本は読んで理解するようにしましたが、一部、ノートに書いて整理しながら覚えました。
模擬試験も含めて3周やりましたが、あずき本だけの学習だと不合格になる可能性があると思いました。
私がは4年前に購入したバージョン4.0のあずき本を使って学習していたのもあるかもしれませんが、
初学者の場合はあずき本だけの学習だと余裕をもっての合格は難しいかもと思いました。
スピードマスター問題集もしくはPing-tでたくさんの問題をこなして、試験に臨むべきです。

本書は試験が終わった後もLinux教科書として、見返したり学習に活用できる内容になっています。
試験は終わりましたが、今後、教科書の内容(コマンドや設定ファイルの編集など)を実機で試して、理解を深めたいと思っています。

もし、購入される場合は、受験する現在の最新バージョンを購入してください。(2022/2/6時点でVer5.0が最新)

2.翔泳社 Linux教科書 LPICレベル1 スピードマスター問題集(通称:スピマス)
試験に合格できたのは、この参考書のおかげといっても過言ではないと思います。
解説が非常に充実していて分かりやすく、本の構成も問題と解説がセットで記載されており、学習しやすかったです。
あずき本には記載されていない内容を補うこともできたので、『翔泳社 Linux教科書 LPICレベル1 スピードマスター問題集』はかなりおすすめです。

あずき本で概要を理解して、スピードマスターでたくさんの問題にをこなして、問題に慣れる、理解を深めました。
私は時間の都合上、1.5周しかできませんでしたが、2周~3周やっておいた方が安心です。


翔泳社 Linux教科書 LPICレベル1 スピードマスター問題集(通称:スピマス)。こちらも最新バージョンのものを購入ください。(2022/2/6時点でVer5.0が最新)

3.Ping-t 問題集・コマ問
Ping-tでLPIC102の問題集・コマ問は有料になります。(LPIC101は無料です)
AWS/CCNA/CCNP/LinuC/LPIC/Linux Essentials/HTML5/OSS-DB/オラクルマスター/ITパスポート/ITILファンデーション総合学習サイト

私は有料期間が1カ月だけ残っていたので、その期間だけPing-tでも学習しました。
問題集を0.25周、コマ問を0.8周ほど。

コマ問という、実際にコマンドや設定ファイルなどを入力する問題はかなり役立ちました。
実際の試験でも、コマンドの入力や設定ファイルをフルパスで入力する問題は出題されるので、コマ問で学習できていたのはよかったです。


LPIC Level1のおすすめの学習方法

あくまで私個人の感覚になりますが、おすすめの学習方法を以下に記載いたします。

IT業界未経験者やIT業界の経験が少ない方向けの学習方法

以下の3冊で学習することをおすすめいたします。

  • やさしく教えるLPICレベル1 基礎講座
  • 翔泳社 Linux教科書 LPICレベル1 (通称:あずき本)
  • 翔泳社 Linux教科書 LPICレベル1 スピードマスター問題集(通称:スピマス)


まずは『やさしく教えるLPICレベル1 基礎講座』で、VM WareやVirtual BoxにLinuxの環境を準備した上で
Linuxがどういうものか、基本的なコマンドなどを覚えるのがいいかと思います。
私はLPIC101の受験時(4年前)に本書を購入して学習しました。

『やさしく教えるLPICレベル1 基礎講座』をおすすめする理由は、あずき本はLinuxを業務で触れていない初学者にとっては内容が難しいと思ったからです。
『やさしく教えるLPICレベル1 基礎講座』は初学者でもわかりやすく説明があるので、まずはこの本でLinuxの基礎を学習することをおすすめします。

『やさしく教えるLPICレベル1 基礎講座』こちらも最新のものをご購入ください

業務でLinuxに扱っている経験者

すでに業務でLinux扱っている経験者には、
あずき本+スピマスでの学習もしくはスピマス+Ping-tでの学習をおすすめします。

  • 翔泳社 Linux教科書 LPICレベル1 (通称:あずき本)
  • 翔泳社 Linux教科書 LPICレベル1 スピードマスター問題集(通称:スピマス)

もしくは

  • 翔泳社 Linux教科書 LPICレベル1 スピードマスター問題集(通称:スピマス)
  • PIng-t
YoutubeでのLPIC102の学習

公式のYoutubeの動画も無料で視聴できるので、活用するといいと思います。
LPIC-1 102 Ver 5.0 学習ポイント part1 - YouTube
LPIC-1 102 Ver 5.0 学習ポイント part2 - YouTube


LPIC102の学習での反省点

以下2点が全体的な反省です。

  • 試験日に対してもっと詳細な学習スケジュールをたてて、計画的に学習した方が良かった
  • 実機での学習に時間を取りたかった(各種コマンドや設定ファイルの編集など)

LPIC102の試験、テストセンターでの注意点

試験の際に感じた注意点は以下の通りです。

1.テストセンターのPCのキーボードのCapsLockがオンになっていた
コマンドの入力やファイルのフルパスを記述する問題があるのですが、CapsLockがオンになっていることに気が付かず、入力時に全部大文字で入力されました。
LPICは全部大文字で入力させる試験だったっけ?と疑問を抱きましたが、事前に問題集で記述問題は大文字・小文字も正確に使い分けるよう記載があったことを思い出し
CapsLockを解除して大文字、小文字を使い分けて回答しました。

2.問題文の日本語がおかしい
CCNAなどベンダー資格のあるあるだと思うのですが、LPICも日本語がおかしな問題があります。
『てにをは』がおかしい問題がありました。消去法などを使って、焦らずに回答しましょう。

3.あずき本にもスピマスにも載ってないような問題
私が受けたときは全くわからない問題が最初から数問続き、かなり焦りました。
2周目の見直しでやっと正常心を取り戻して回答できました。
時間はかなり余裕があるので、焦らずに何度も見直しして合格を目指すといいと思います。


最後に

LPIC Level1 102はLinuxの認定試験の初級の資格になりますが、簡単に合格できるような資格ではないと思います。
IT資格には難易度の高い資格がたくさんあり、初級資格のため難易度は易しいと書きましたが、十分な試験対策をしなければ合格できません。
例えば、IPアドレス、サブネットマスク、CIDRの概念はあずき本などでざっくり記載されているだけですが、有効なホストアドレスの数を計算するには
2進数での計算、ホスト部で使えるアドレスはネットワークアドレス、ブロードキャストアドレスを除く必要があるなどの知識も必要になります。
IT業界未経験や他のIT資格を持っていない方、業界経験の浅い方は苦労するかなと思います。

65%以上正解できれば、合格ですので、たくさん問題を解いてしっかりとその問題を理解して、試験に備えるのが良いと思います。

また、実際にVirtual BoxやVM WareにUbuntuやCentOSなどをインストールして、理解を深めることを強くおすすめします。

以上、お読みいただきありがとうございました。