2023年11月18日土曜日

[雑記]ドローン(DJI Mini 3)

(1)雑記
もともと多趣味の友人masakazu Drone氏が、
最近、ドローンにハマり始めて、
更に、新たな趣味が増えたとのこと。

ドローンを始めてから、
まだ1年も経っていないとのことですが、
旅行先で山や川の景色を空撮して、
Youtubeに公開できるほどの腕前です。
あまりに素晴らしい出来栄えなので、当ブログで紹介します。
masakazu Drone氏には許可済
Youtubeにはmasakazu Drone 氏の名前で公開。

ちなみに、空撮に使用しているドローンは、以下の通り。
初心者にもオススメ
機種名:DJI Mini 3 (2022年12月発売)
 趣味・プライベート用で最高のドローン
 ①携帯性が良い。重量249g未満
 ②スタミナ性が良い。
  通常バッテリーで38分、
  インテリジェントフライトバッテリーで51分
  の飛行可能
 ③4K画像が撮れる。解像度4K/30fps
 ④縦型動画で撮影可能。


ドローンで空撮したらこんな感じ bymasakazu Drone
荘川の桜
 https://www.youtube.com/watch?v=RSk4vhhttMg&t=65s
浜松市遠州海岸
 https://www.youtube.com/watch?v=We8sXDrs2GI&t=21s
2024 開田高原
 https://www.youtube.com/watch?v=5-6nW4GtwFg
2024 奥飛騨栃尾温泉 蒲田川
 https://www.youtube.com/watch?v=Vzi8UEucNBE
ドローンと猫と吾輩
 https://www.youtube.com/watch?v=6tGYjTVzvr0
岐阜県恵那市(保古の湖)
 https://www.youtube.com/watch?v=wj1MBC4QSmA
岐阜県中津川市(愛林公園)
 https://www.youtube.com/watch?v=2iZ6d8llgBQ&t=10s
岐阜県中津川市(根の上高原)
 https://www.youtube.com/watch?v=s8k30qu_qDs
せせらぎ街道 大倉滝
 https://www.youtube.com/watch?v=UYzhKzPjBTc&t=4s
せせせらぎ街道 平滝
 https://www.youtube.com/watch?v=KVrUSdfl9Lk&t=22s


(2)空撮に使ったドローンについて
上記のドローンのリンクです。
これから始めてみたい方など、ご参考にでもなればと思います。






2023年11月3日金曜日

[JavaSctipt]オブジェクト指向の実装(クラスの継承)

[はじめに]
JavaScriptの規格は、
ECMAScript(エクマスクリプト)で定められています。

JavaScriptは時代と共に進化しており、
最近のブラウザの大半は、
ECMAScriptのバージョンとして、ES6(ES2015)以降を取り入れています。

ES6(ES2015)は、
クラスなど、オブジェクト指向の概念を取り込んでおり、
最近のソースでもクラスの記載が散見されます。
もちろん、クラスの継承も可能です。

備忘録として、
クラスの継承についてのサンプルソースを掲載します。
以下は、
親クラス「Mammalクラス(哺乳類)」
子クラス「Dogクラス(犬)」「Catクラス(猫)」とした実装例です。
実行結果_オブジェクト指向の継承_クラス図.png
//【クラス定義(Mammal.js)】
class Mammal{

   //変数宣言(Private)
   //※変数名の先頭に「_」を付加することでPrivate指定になります。
   //名前
   #_name = "";

   //コンストラクタ
   constructor(name){
      this.#_name = name;
   }

   //名前
   get name(){
      return this.#_name;
   }

}
[JavaScript]親クラス(Mammal.js)



//【クラス定義(Dog.js)】
//  Mammalクラスを継承
class Dog extends Mammal{

   //コンストラクタ
   constructor(name){
      //注意:
      //親クラスを継承する際、コンストラクタを定義する場合は、
      //必ずsuper(親クラスのコンストラクタ)を呼び出してください。
      //但し、superを呼び出す前に'this' にアクセスすると、
      //エラーになりますのでご注意ください。
      super(name);
   }

   //挨拶をする。
   sayHello(name){
      window.alert(
         "こんにちは。私の名前は" + this.name + "です。");
   }

   //鳴く
   cry(){
      window.alert("ワンワン");
   }

}
[JavaScript]子クラス(Dog.js)



//【クラス定義(Cat.js)】
//  Mammalクラスを継承
class Cat extends Mammal{

   //コンストラクタ
   constructor(name){
      //注意:
      //親クラスを継承する際、コンストラクタを定義する場合は、
      //必ずsuper(親クラスのコンストラクタ)を呼び出してください。
      //但し、superを呼び出す前に'this' にアクセスすると、
      //エラーになりますのでご注意ください。
      super(name);
   }

   //挨拶をする。
   sayHello(name){
      window.alert(
         "こんにちは。私の名前は" + this.name + "です。");
   }

   //鳴く
   cry(){
      window.alert("にゃーにゃー");
   }

}
[JavaScript]子クラス(Cat.js)



<html>
<head>

<script language="javascript" src="./Mammal.js"></script>
<script language="javascript" src="./Dog.js"></script>
<script language="javascript" src="./Cat.js"></script>
<script language="javascript" >

   function dog_access()
   {
      const mammal = new Dog("ポチ");
      mammal.cry();
      mammal.sayHello();
   }

   function cat_access()
   {
      const mammal = new Cat("タマ");
      mammal.cry();
      mammal.sayHello();
   }


</script>
</head>
<body bgcolor="azure">

<input type="button" value="Dogクラスにアクセス" onclick="dog_access();"><br/>
<input type="button" value="Catクラスにアクセス" onclick="cat_access();"><br/>

</body>
</html>
[JavaScript]利用例

[実行結果]
実行結果_オブジェクト指向の継承.png

2023年10月29日日曜日

[JavaSctipt]オブジェクト指向の実装

[はじめに]
JavaScriptの規格は、
ECMAScript(エクマスクリプト)で定められています。

JavaScriptは時代と共に進化しており、
最近のブラウザの大半は、
ECMAScriptのバージョンとして、ES6(ES2015)以降を取り入れています。

ES6(ES2015)は、
クラスなど、オブジェクト指向の概念を取り込んでおり、
最近のソースでもクラスの記載が散見されます。

たまに使うこともあるので、備忘録として、
クラスを用いたサンプルソースを掲載します。
//【クラス定義(Person.js)】
class Person{

   //【プロパティの初期化】 ※Start
   // ※ES6(ES2015)までは、
   //   プロパティを設定する場合は、
   //   必ずコンストラクタ内で実施する必要がありました。
   //   ES2022から、
   //   クラスのトップレベルで
   //   プロパティを宣言できるようになりました。
   //   また、プロパティ名の先頭に「#」を付加することで、
   //   Private指定となります。(ES2022から)
   //   [注意]
   //     但し、ES2022以降のバージョンは、
   //     古いブラウザでは
   //     機能が実装されていない可能性がある為、注意が必要です。

   //名前
   #_name = {first:"権兵衛", last:"名無し"};
   //生年月日
   #_birthday = this.#getSystemDate();

   //【プロパティの初期化】 ※End

   //【コンストラクタ定義】 ※Start
   // ※インスタンス化の際に実行されるメソッド。

   constructor(name, birthday){
      this.#_name = name;
      this.#_birthday = birthday;
   }

   //【コンストラクタ定義】 ※End

   //【ゲッター/セッター定義】 ※Start
   // ※ES6(ES2015)までは、
   //   ゲッター/セッターを実装するには、
   //   Javaのようにメソッド(getXXX() / setXXX())で
   //   定義する必要がありましたが、
   //   ES2022から、
   //   ゲッター/セッター向けの構文を利用できるようになりました。
   //   [注意]
   //     但し、ES2022以降のバージョンは、
   //     古いブラウザでは
   //     機能が実装されていない可能性がある為、注意が必要です。

   //名前
   get fullName(){
      return this.#_name.first + " " + this.#_name.last;
   }

   //生年月日
   get birthday(){
      return this.#_birthday;
   }

   //生年月日
   set birthday(value){
      this.#_birthday = value;
   }

   //【ゲッター/セッター定義】 ※End


   //【メソッド定義(Public)】 ※Start
   // ※他の関数と同様に定義することで、
   //   Publicなメソッドを定義できます。

   //あいさつをする。
   sayHello(){
      window.alert(
         "こんにちは。" + 
         this.#_name.first + " " + 
         this.#_name.last + "です。");
   }

   //生年月日を出力する。
   sayBirthDay(){
      window.alert(this.#_birthday);
   }

   //年齢を出力する。
   sayAge(){
      let age = this.#calculateAge();
      window.alert("私は" + age + "歳です。");
   }

   //【メソッド定義(Public)】 ※End

   //【メソッド定義(Private)】 ※Start
   //※メソッド名の先頭に「#」を付加することで、
   //  アクセス元を自クラス内に限定(Private)することができます。
   //   [注意]
   //     但し、ES2022以降のバージョンは、
   //     古いブラウザでは
   //     機能が実装されていない可能性がある為、注意が必要です。

   //システム日付を取得する。
   #getSystemDate(){
      const rtn = new Date();
      return rtn;
   }

   //年齢を算出する。
   #calculateAge(){
      let sysDate = this.#getSystemDate();
      let age = sysDate.getFullYear() - this.#_birthday.getFullYear();

      if(sysDate.getMonth() * 100 + sysDate.getDate() < 
         this.#_birthday.getMonth() * 100 + this.#_birthday.getDate())
      {
         //システム日付が誕生日前の場合は、
         //年齢を [システム日付の年] - [生年月日の年] - 1 とする。
         return age - 1;
      }

      //システム日付が誕生日以降の場合は、
      //年齢を [システム日付の年] - [生年月日の年] とする。
      return age;
   }

   //【メソッド定義(Private)】 ※End
}
[JavaScript]オブジェクト指向を意識したコード


<html>
<head>

<script language="javascript" src="./Person.js"></script>
<script language="javascript" >
   //クラスへのアクセス
   function sayHello()
   {
      const person = new Person(
         {first:"太郎", last:"山田"},
         new Date(1953,8-1,15));
      person.sayHello();
   }

   function sayBirthDay()
   {
      const person = new Person(
         {first:"太郎", last:"山田"},
         new Date(1953,8-1,15));
      person.sayBirthDay();
   }

   function sayAge()
   {
      const person = new Person(
         {first:"太郎", last:"山田"},
         new Date(1953,8-1,15));
      person.sayAge();
   }
</script>
</head>
<body bgcolor="azure">

<input type="button" value="あいさつをする。" onclick="sayHello();"><br/>
<input type="button" value="生年月日を言う。" onclick="sayBirthDay();"><br/>
<input type="button" value="年齢を言う。" onclick="sayAge();"><br/>

</body>
</html>
[JavaScript]使用例

[実行結果]
JavaScript実行結果.PNG

2023年10月14日土曜日

[Book's Review (Develop)]Java言語で学ぶデザインパターン入門第3版

(1)レビュー
 10年以上前からある書籍ですが、昨今のJavaのバージョンに合わせて、
 リニューアルされましたので、改めて紹介いたします。

 GOFが提唱したデザインパターンについて、とてもわかりやすくまとめた1冊です。
 各パターンを章毎にまとめてあり、クラス図・サンプルコードと合わせて解説しています。
 コードはJavaで記述されていますが、
 オブジェクト指向言語での開発経験がある方ならば、楽に読みこなせる内容だと思います。
 .NET系の言語で開発される方も、ぜひ1度は目を通すことをお勧めします!!

(2)リンク
Java言語で学ぶデザインパターン入門第3版

Java言語で学ぶデザインパターン入門第3版

  • 作者: 結城 浩
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2021/11/13
  • メディア: Kindle版


Java言語で学ぶデザインパターン入門 マルチスレッド編

Java言語で学ぶデザインパターン入門 マルチスレッド編

  • 作者: 結城 浩
  • 出版社/メーカー: ソフトバンククリエイティブ
  • 発売日: 2023/10/14
  • メディア: 単行本

2023年7月8日土曜日

リンク_メモ(セールスフォース学習サイト、Salesforce勉強ヒロバ)

【Salesforce勉強ヒロバ】
【オブジェクト・レコード・項目・レポート】
 Salesforce基本用語徹底解説【初心者向け】
 https://www.youtube.com/watch?v=OuyAEmlehtU&t=162s

【標準項目、ページレイアウト、Lightnigアプリケーションビルダー】
 Salesforce基本用語徹底解説【初心者向け】
 https://www.youtube.com/watch?v=cPjP4i1iVIE&t=257s

【標準オブジェクト、カスタムオブジェクト、リレーション】
 Salesforce基本用語徹底解説【初心者向け】
 https://www.youtube.com/watch?v=uNY3KWWVaxY&t=490s

 Salesforce主従関係参照関係違い徹底解説
 https://www.youtube.com/watch?v=cvMkX-L01b0

【レコードタイプ、ページレイアウト、ビジネスプロセス】
 Salesforce基本用語徹底解説【初心者向け】
 https://www.youtube.com/watch?v=wxHHk0-xw2g

【プロファイル・権限セット】
 Salesforce基本用語徹底解説【初心者向け】
https://www.youtube.com/watch?v=5orZte7tJzM

【共有設定・ロール階層・共有ルール】
 Salesforce基本用語徹底解説【初心者向け】
 https://www.youtube.com/watch?v=yL6OWYYbY6w&t=2151s

【セキュリティコントロール】
 Salesforce基本用語徹底解説【初心者向け・練習問題】
 https://www.youtube.com/watch?v=6XFkEzuGARE

 Salesforceリード徹底解説【公式練習問題あり】
 https://www.youtube.com/watch?v=viOnflTa3FQ

 Salesforceキャンペーン徹底解
 https://www.youtube.com/watch?v=RMe4LCyY7GQ&t=27s

【入力規則】Salesforce基本用語徹底解説【初心者向け】
 https://www.youtube.com/watch?v=0Va7o9UUoE4

 Salesforceデータローダとインポートウィザード解説
 https://www.youtube.com/watch?v=ckdIF6usirA

 【フロー、プロセスビルダー、ワークフロールール】Salesforce基本用語徹底解説【初心者向け】
 https://www.youtube.com/watch?v=Nj9PVv_m_8o

 Salesforce認定アドミニストレーター試験合格勉強方法解説
 https://www.youtube.com/watch?v=14m8fLHLTw8&list=PLz8HSF-SrLeEl7BSmyLcT0nWUuQ695d9z&index=15

 Salesforceレコードページに文字や画像表示【初心者向け】
 https://www.youtube.com/watch?v=N-LL1kW767w

【初心者向け】Salesforce一括メール送信方法
 https://www.youtube.com/watch?v=L-KiIFts-nY

【標準項目、ページレイアウト、Lightnigアプリケーションビルダー】Salesforce基本用語徹底解説【初心者向け】
 https://www.youtube.com/watch?v=cPjP4i1iVIE&t=257s


標準項目、ページレイアウト、Lightnigアプリケーションビルダー】Salesforce基本用語徹底解説【初心者向け】

■Salesforce認定アドミニストレーター試験公式練習問題解説【合格】
 01Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=1z_jjNf6JCE&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=1

 02Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=eE5esrjoadU&list=PLz8HSF-  SrLeH8jCOj9cfAljXfVNQkQlkS&index=2

 03Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=F35kX_hjcM8&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=3

 04Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=4OzzVqmGeqo&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=4

 05Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=LrkGLvQeqRE&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=5

 06Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=DUgB5GVp4Wk&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=6

 07Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=jfjLizp8dEE&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=7

 08Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=YEPyrTs1alg&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=8

 09Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=rHBHjpEjIH8&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=9

 10Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=M8eB4IXUxi0&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=10

 11Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=hWPNzGyv4RI&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=11

 12Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=ospmi4mC8v8&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=12

 13Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=MqwqReYCCv0&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=13

 14Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=cSeUI8TGciM&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=14

 15Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=g1Fw9F0t3CA&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=15

 16Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=6lWDVr-D9EY&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=16

 17Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=plzqeWameqw&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=17

 18Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=p9upfJBmssI&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=18

 19Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=gMBC6yCVX_8&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=19

 20Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=i7YY4VeA0g8&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=20

 21Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=fkwGltvBHV0&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=21

 22Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=If9JP5yEM3E&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=22

 23Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=6JOWYdv6ElA&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=23

 24Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=oqO7ft6Oh5E&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=24

 25Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=afdeRD125KU&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=25

 26Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=gq6XKyCMIhY&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=26

 27Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=PsK8pHVCQkE&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=27

 28Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=CiyH4Ojg0Mc&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=28

 29Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=zHKiZIe3ZIA&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=29

 30Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=LrQIJovTp6o&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=30

 31Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=rHy4GYEQy6k&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=31

 32Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=6FxVu5zzvfY&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=32

 33Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=79KxSeRgaWQ&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=33

 34Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=PzGXHe7Bf58&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=34

 35Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=aaHHBl3sQwQ&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=35

 36Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=zWjzA0Pq0PM&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=36

 37Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=P1MhwvJDHUs&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=37

 38Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=coyBk_nc1_E&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=38

 39Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=PPBaxsnHxGo&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=39

 40Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=mjC-U_gdu18&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=40

 41Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=XjLLUZJpz3Y&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=41

 42Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=vyypCeCrX-M&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=42

 43Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=bsXKhgHTDZs&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=43

 44Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=nbiFH9EuYno&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=44

 45Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=ZGoE4nPAC8I&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=45

 46Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=9XwZZHHnVDc&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=46

 47Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=PdBVJHU0Kak&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=47

 48Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=BfpJsEAaFCM&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=48

 49Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=qL3YlETH74Q&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=49

 50Salesforce認定アドミニストレーター試験問題解説
 https://www.youtube.com/watch?v=07rnYr-xbuw&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=50

2023年4月30日日曜日

[VBA]Excelのシートを並べ替え

[はじめに]
Excelでシートを昇順に並べ替える機会があったので、
備忘録としてサンプルソースを掲載します。
サンプルは昇順ソートですが、引数を変更すると降順にも対応できるようにしています。

[ソース]
Option Explicit

'''<summary>
'''ソートの向き
'''</summary>
'''<remarks></remarks>
Public Enum SortType
    '昇順
    Asc = 1
    '降順
    Desc = -1
End Enum

'''<summary>
'''シートをソートする。
'''</summary>
'''<remarks></remarks>
Public Sub SortSheet()

    Dim sht As Worksheet
    Dim i As Integer
    Dim shtName As Variant
    Dim shtNameList() As String
    
    'シート名を配列で取得する。
    For Each sht In ThisWorkbook.Worksheets
        ReDim Preserve shtNameList(i)
        shtNameList(i) = sht.Name
        i = i + 1
    Next

    '配列でソートする。
    SortByQuick shtNameList, SortType.Asc, 0, UBound(shtNameList)

    '配列の順番でシートをソートする。
    Dim strWork As String
    strWork = shtNameList(UBound(shtNameList))
    
    For i = 0 To UBound(shtNameList)
        ThisWorkbook.Sheets(shtNameList(i)).Move after:=ThisWorkbook.Sheets(strWork)
        strWork = shtNameList(i)
    Next

End Sub

'''<summary>
'''Stringの配列を名称の昇順にソートする。
'''</summary>
'''<param name="argAry">ソート対象の配列</param>
'''<param name="sort">ソートの向き ※省略時:Asc(昇順)</param>
'''<param name="lngMin">対象範囲の最小インデックス ※省略時:argAryの最小インデックス</param>
'''<param name="lngMax">対象範囲の最大インデックス ※省略時:argAryの最大インデックス</param>
'''<remarks></remarks>
Private Sub SortByQuick( _
        ByRef argAry() As String, _
        Optional ByVal sort As SortType = SortType.Asc, _
        Optional ByVal lngMin As Long = -1, _
        Optional ByVal lngMax As Long = -1)
    
    Dim i As Long
    Dim j As Long
    Dim vBase As String
    Dim vSwap As String
    
    If lngMin < 0 Then
        lngMin = LBound(argAry)
    End If
    
    If lngMax < 0 Then
        lngMax = UBound(argAry)
    End If
    
    vBase = argAry((lngMin + lngMax) \ 2)
    
    i = lngMin
    j = lngMax
    
    Do
        Do While StrComp(argAry(i), vBase) * sort < 0
            i = i + 1
        Loop
        
        Do While StrComp(argAry(j), vBase) * sort > 0
            j = j - 1
        Loop
        
        If i >= j Then
            Exit Do
        End If
        
        vSwap = argAry(i)
        argAry(i) = argAry(j)
        argAry(j) = vSwap
        
        i = i + 1
        j = j - 1
    Loop
    
    If lngMin < i - 1 Then
        SortByQuick argAry, sort, lngMin, i - 1
    End If
    
    If lngMax > j + 1 Then
        SortByQuick argAry, sort, j + 1, lngMax
    End If

End Sub

[VBA]シートの並べ替え

[雑記]ドローン(DJI Mini 3)

(1)雑記 もともと多趣味の友人 masakazu Drone 氏が、 最近、 ドローン にハマり始めて、 更に、新たな趣味が増えたとのこと。 ドローン を始めてから、 まだ1年も経っていないとのことですが、 旅行先で山や川の景色を 空撮 して、 Youtube ...