タイガー!タイガー!じれったいぞー!(SE編)

AS400, Java, JavaEE, JSF等の開発、習慣など。日々の気づきをまとめたブログ(備忘録)

習慣ドラフト会議

f:id:no14141:20210305224556j:plain

ついに「花粉症」の季節到来です。
今年は、3/1から症状が出てきました(目がかゆいこと、かゆいこと)。

私の体調記録ノートによると、ここ3年間、2/28~3/2 の間で花粉症の症状が出ていることが判明しました!
さらに突き詰めると、3月上旬から3月中旬に苦しみ、そこから2週間程度落ち着いた後、また2~3週間症状に苦しんでいることもわかりました。

合計4~5週間のパフォーマンスの出ない日々を過ごさないといけませんが、6割の状態でも自分の人生を少しでも前に進めていきたいですね。

そんな中、3月の初めに「習慣ドラフト」会議を開催しました。

習慣ドラフト会議とは?

習慣ドラフト会議とは、自分の抱えている数ある習慣の中から、本当に必要な「習慣さん」を厳選していくひとり会議のこと。

実際のプロ野球のドラフト会議では、新人さんを対象に行うものですが、習慣ドラフト会議では既存の選手を対象に順位付けする形になっています。この際、細かいことは気にしない。それが大事(大事マンブラザーズバンド)。

つまりは、プライオリティ付けして、今の自分にとって必要なものだけを実践していこう!という試みです。

今回は、朝の習慣にフォーカスして、一部、習慣の入れ替えを行いました。

朝の習慣ベスト5発表

まずは、自分にとっての朝の習慣のドラフト1位から5位の発表です(パチ・パチ・パチ)!

正直言いまして、朝の習慣だけで10個以上。

その中から、朝のうちに絶対にやりたい習慣を厳選してみました。

1位 瞑想5~15分(Relook or 中村天風式座禅)
2位 宝地図とメンター100人の画像を眺める(lino
3位 ミッション・ステートメント音声を聴く(約5分)
4位 スキルアップの勉強(IT、英語)
5位 ビジネス系Youtube動画を観る

なるほど。

こうして抜粋してみると、朝は2つの目的がありそうです。

「1日の活力を得るための習慣(1~3位)」と勉強習慣(4、5位)。

まずこれからはじまる1日を気持ち良くスタートさせるための儀式。
瞑想して、アファメーションして、自分のあるべき姿を再認識する。これは、3年以上続けている自分にとってかけがえのない習慣なんです。ある意味、この儀式のおかげで、人生が好転してきていると勝手に思っています。

勉強習慣は、朝に行った方が、夜やるよりも倍近い効果があるように思えます。
朝の30分は、夜の60分以上と同等の価値があると思っています。

入れ替えになった習慣

「ドラフト」と言うよりも、こちらは「トレード」ですね。

トレード対象になった習慣が2つありました。

まず1つ目。

「ロングブレス2分」→「キススキ体操で表情筋を鍛える」

2020年1月からロングブレスを毎朝続けてきたのですが、個人的には思ったほど効果はありませんでした。

実行時間が短いことが原因かもしれませんが、その代わりに、先々週の「スペシャリスト女子会」で教えてもらった「表情筋トレーニング」を毎朝、毎夜10回ずつやることにしました。

「土井英司びびび・ビジネスチャンネルを1話観る」→「習慣塾オンラインサロンの限定動画を1話観る」

土井英司さんのYoutubeチャンネルを1年間、毎朝見続けてきたのですが、先々週に毎日更新終了のお知らせがありました(残念!)。

その代わりに別の動画を観ることにしました。

それは、今年からお世話になっている三浦将先生の「習慣塾オンラインサロン」の特典にある限定動画です。

www.reservestock.jp

何年も前から発足しているだけに、数多くの動画を観ることができるようです。

まだ加入して2ヵ月なのに、過去分を楽しめるなんて、かなりの幸せ者ですね!

1本、7~10分なので、倍速再生しているので5分以内ではありますが、貴重な学びとなりそうです(今日で第4話)。

まとめ

習慣塾オンラインサロンでは、1月から「朝活部」が発足しました。

明日の日曜日に、メンバーの方のドラフト会議の結果を聞けるとのことで、今から楽しみで仕方ありません。

俺も許す限り、自分の会議結果を発表したいと思っています。

さあ、明日からもこれら習慣を淡々とやってまいりましょうかぁ!!!

【SpringBoot】CentOS7でjar(Gradle)を自動起動させるまで

今、SpingBootの勉強を行っています。

ようやくです。腰が重すぎました。。。

まだまだ前段階ですが、非常に軽くて使っていて気持ちがイイですね。

今回のテーマは、Gradleで生成したアプリ(jar)をCentOS7で自動起動化するところまでを行いましたので、その記録を掲載いたします。

今回の環境

  • IDE: Spring Tool Suite4 Version: 4.9.0.RELEASE
  • SpringBoot: 2.4.3
  • Gradle Version: 6.8.2
  • JDK8

build.gradle

まずは、Gradleの定義から。bootJarタスクが重要でした。これが無いと実行可能なjarファイルにはなりませんでした。「java -jar demo-0.0.1-SNAPSHOT.jar」では起動できたけど・・・。

plugins {
    id 'org.springframework.boot' version '2.4.3'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    compile 'org.springframework.boot:spring-boot-starter-web'
    compile 'org.springframework.boot:spring-boot-starter-thymeleaf' 
    compile 'org.springframework.boot:spring-boot-devtools'
}

test {
    useJUnitPlatform()
}

//実行可能jarのmodule
bootJar {
    launchScript()
}

Build→Jarファイルの作成

STS上で、GradleのBuildを実行すると、下記のパスにjarファイルが作成されました。

プロジェクトDir/build/libs

今回は「demo-0.0.1-SNAPSHOT.jar」というjarが作られました。

CentOS7での操作

CentOSには、JDKがインストールされている前提です。

まずは、jarファイルをCentOS7に格納します。

アプリ起動ユーザーの作成

# useradd demo_user

jarファイルの権限設定

# chown demo_user:demo_user /opt/demo-0.0.1-SNAPSHOT.jar
# chmod ug+x /opt/demo-0.0.1-SNAPSHOT.jar

demoアプリのサービス化

demo.serviceファイルを作成します。
先に作成したdemo_userで起動させる設定にしています。

# vim /etc/systemd/system/demo.service
[Unit]
Description=demo
After=network.target

[Service]
User=demo_user
ExecStart=/opt/demo-0.0.1-SNAPSHOT.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

リロード実行

# systemctl daemon-reload

自動起動の設定

# systemctl enable demo

# systemctl is-enabled demo
enabled

demoアプリの起動 / 確認

いざ、demo開始です!

# systemctl start demo

# systemctl status demo
● demo.service - demo
   Loaded: loaded (/etc/systemd/system/demo.service; enabled; vendor preset: disabled)
   Active: active (running) since ...
 Main PID: 2140 (demo-0.0.1-SNAP)
    Tasks: 29
   Memory: 228.6M
   CGroup: /system.slice/demo.service
           tq2140 /bin/bash /opt/demo-0.0.1-SNAPSHOT.jar
           mq2156 /usr/bin/java -Dsun.misc.URLClassPath.disableJarChecking=true -jar /opt/demo-0.0.1-SNAPSHOT.jar

http://ServerIPアドレス:8080/demo」にアクセスしますと・・・

f:id:no14141:20210225191546j:plain

無事、お約束の「Hello World」が出力されました。

Server再起動後も、きちんと表示できたので、オッケーでしょう。

エラー等で起動できない場合には、「/var/log/messages」を見てみれば、何かわかるかもしれません。

自分は、恥ずかしながら、jarの権限ではまってしまいました。

まずは、オッケーでございまーす!!!

「松竹梅」で考える

f:id:no14141:20210218221818j:plain

「松竹梅」で考えよう! というのが今回のオチなのですが、そもそも「松竹梅」とは何でしょうか?

Wikipediaによると、次のように書かれておりました。

松・竹・梅を3種類の等級名として使うことがある。   
松を最上級とし、次いで竹、梅とする場合が多いが、  
梅を最上級とする場合もある。  
もともと瑞祥としての松竹梅には明確な優劣があるわけではない。

そうですね、等級として認識しています。
飲食店に行くと、メニューに「松竹梅」とあるので、馴染みがありますよね。

さらにこちらのサイトでは、より詳しく教えてくださいます。

jpnculture.net

大変勉強になりました。

今回の話は、大きな意思決定、小さな意思決定に関わらず、いつも選択肢を複数持って、さらにその選択肢は「松竹梅」のコースであるといいよね!というものです。

最低3つの選択肢を持っている

時間に追われていると、最初に思いついた「手段」をそのまま推し進めてしまいがちです。

そもそも複数の手段がなければ「メリデメ」で比較もできないし、たった1つの方法だけで強引に突っ走ることの危険度は計り知れません。

まずは、黄金の数字「3つ」を考えてみましょう。

2個までは思いついた。そこでもう一踏ん張りして、何とか3つ目を絞り出しましょう。

考えまくることになるので、きっと脳もヘトヘトになるかもしれません。

その努力が、我々の「考える力」をアップさせてくれるはずです。

状況に応じて、現時点での最適解を選択する

さあ!「松竹梅」の手段(案)が出揃いました。

よし「松」で進めよう! と行きたいところですが、ここでも一度落ち着きましょう。

もちろん原理原則に従って「松」で進めたい。きっと「松」はベストの策になるのでしょう。

しかしながら、現時点での最適解を選択することが良い場合もあります。

理想論だけで突っ走らずに、全体思考でいきたいものです。

しかるべきタイミングで「松」の手段を採用しよう!

最後に、もし今回「松」や「竹」を選択したなら、しかるべきタイミングで「松」の手段を採用しましょう。

先ほど書いたものと逆行しますが、それでも理想を追いかけていきたい!

極上の選択を積み重ねることで、究極が出来上がります。

バベルの塔」にならないように、それこそ「竹」のように伸びて、天に近づきたいものですね。

「習慣家」を目指す

f:id:no14141:20210211100002j:plain

当ブログで「習慣」タグを初めて使ったのが、2020年5月15日のこと。

tigertaizo.hatenablog.com

その辺りから、習慣力の力を意識していたんだと思います。

それから2020年の終わり。親友と2人で4年ぶりに飲みに行き、そこで彼から「たいぞーは、コツコツ継続する力が半端ない!」という褒め言葉をもらいました。

親友からの言葉を受けて「そうか、俺には習慣力がある!」という確信を持ったところで2020年が終了。

そして、今年2021年。

今年のテーマは「技術力」と決めたところではありますが、「習慣力」も引き続き磨きをかけていきたいと思っています。

tigertaizo.hatenablog.com

そして習慣家へ

今週の日曜日のことです。

突然、「習慣家」という言葉が脳裏をよぎりました。

「習慣化」ではなく、「習慣家」です。

「家」が付く言葉は、たくさんあります。
書道家」「芸術家」「武道家」「格闘家」「政治家」「起業家」などなど。

「習慣家」という言葉は無いのかなと調べたところ、少しの調査時間ではありましたが、見つけることはできませんでした。

良い「習慣」を生活に取り入れ、成果を上げている方々は、世界中にたくさんおられます。
まさに「習慣」のエキスパートの方々。そんな方々のことを勝手に「習慣家」と呼ぶことにしました。

そこで俺も決めました。「習慣家」を目指そうと!!

「習慣家」の道を極めていきます!

習慣家の段位なんかがあるとわかりやすいのですが、まずは「習慣家2級」が目標です。

今のレベルはおそらく「習慣家3級」くらいでしょう(どんな基準やねん?)

2級、1級、初段・・・徐々に上げていき、

最終的には「柱」になります!!(え? 鬼滅?)

【AS400】スキーマ変更した後、Viewはどうなるか?

概要

前回の続きです。

tigertaizo.hatenablog.com

テーマは「スキーマ変更した後、Viewはどうなるか?」です。

DB2 for iでの動作確認

前回同様、実際に「手を動かして試す」ことにしました。

検証用テーブルの準備

今回は「果物テーブル」を作ってみました。

CREATE TABLE TIGERDB.TFRUITS (                                     
ID INT NOT NULL GENERATED ALWAYS AS IDENTITY                       
       (START WITH 1 INCREMENT BY 1 NO CACHE),                     
NAME CHAR(32),                                                     
PRICE INT,                                                         
MEMO CHAR(40),                                                     
MEMO2 CHAR(40),                                                    
CRT_TS TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,               
UPD_TS TIMESTAMP NOT NULL,                                         
PRIMARY KEY(ID) )                                                  
RCDFMT RECFRU                                                      
--TIGERDB にテーブル TFRUITS が作成されましたが,ジャーナル処理されていません。


INSERT INTO TIGERDB.TFRUITS (NAME, PRICE, MEMO, MEMO2, UPD_TS)  
  VALUES (' バナナ ',298, '', '', '0001-01-01-00.00.00')        
--TIGERDB の TFRUITS に 1 行が挿入された。                        

INSERT INTO TIGERDB.TFRUITS (NAME, PRICE, MEMO, MEMO2, UPD_TS)
  VALUES (' いちご ',545, '', '', '0001-01-01-00.00.00')      
--TIGERDB の TFRUITS に 1 行が挿入された。                      

INSERT INTO TIGERDB.TFRUITS (NAME, PRICE, MEMO, MEMO2, UPD_TS)   
  VALUES (' みかん ',380, '', '', '0001-01-01-00.00.00')         
--TIGERDB の TFRUITS に 1 行が挿入された。

ビューの作成

今回準備したのはテーブル1つだけですので、WHERE文を使ったシンプルなビューにしました。

CREATE VIEW TIGERDB.VFRUITS AS              
 SELECT ID, NAME, PRICE, MEMO, MEMO2        
   FROM TIGERDB.TFRUITS                     
  WHERE PRICE > 300                         
-- ビュー VFRUITS が TIGERDB に作成された。   

問題なく、ビューを利用できましたね。

SELECT * FROM TIGERDB.VFRUITS

--ID  NAME     PRICE    MEMO         MEMO2
-- 2  いちご     545
-- 3  みかん     380

検証作業

さあ、ここからが本題です。

(1) フィールド削除

ビューが参照しているテーブルの1つのフィールドを削除してみました。

ALTER TABLE TIGERDB.TFRUITS                               
DROP COLUMN MEMO2             
           
--TIGERDB のテーブル TFRUITS に対する ALTER が完了しました。
【JOBLOG Message】

フィールド MEMO2 を変更するとデータが失われます。 
  (C I) ファイル TFRUITS の変更はデータが失われる原因となることがある。
  ? I                          
ライブラリー TIGERDB の従属ファイル VFRUITS が削除された。
ファイル TFRUITS について 1 個の制約が変更された。

すでにJOBLOGの表示でわかるように、削除したフィールドが含むビューも、連動して削除されてしまいましたね。

当然の動きかもしれませんね。挙動がわかればOKです。

(2) フィールド属性変更

今度は属性変更です。

再度ビューを作成してから、1つのフィールドの長さを変更してみました。

-- Viewを再作成
CREATE VIEW TIGERDB.VFRUITS AS                
 SELECT ID, NAME, PRICE, MEMO                 
   FROM TIGERDB.TFRUITS                       
  WHERE PRICE > 300                           
-- ビュー VFRUITS が TIGERDB に作成された。     


ALTER TABLE TIGERDB.TFRUITS                                  
ALTER COLUMN MEMO SET DATA TYPE CHAR(50)                     
--TIGERDB のテーブル TFRUITS に対する ALTER が完了しました。

今度は、ビューが削除されることは無かったです。

スキーマ変更でViewに影響が無ければ、毎回削除されるわけでは無いようです。


まとめ

テーブルに手を加えた場合のビューへの影響を調査してみました。

当たり前のこと過ぎて、大変恐縮なのですが、スキーマ変更後には、DSPDBRコマンドやWRKOBJコマンドなどでビューの存在を確認した方がいいということでしょう。

RPG言語に慣れすぎてしまって、「SQLファースト」へシフトチェンジするのに四苦八苦しているところですが、今回のように検証を積み重ねながら、幅広くテクノロジーを利用し、本来やるべきタスクに集中していこうと思っています。

【AS400】ビューの検証

概要

今回、RDBのビューを検証することにしました。今まで利用する機会が無かったもので。

ビューとは?

ズバリ、下記の説明でバッチリ理解できるでしょう。

ビューの実態は単なる「名前を付けたSELECT文」
(引用元:『スッキリわかるSQL入門』)

つまり、実態も持たない、仮想テーブルという認識で間違いないでしょう。

メリットとしましては、「機密フィールド」を隠蔽してセキュアにしたり、複雑なSQLをまとめてシンプル化を図ったりといったところ。

デメリットは、乱発してしまった場合、ロジックが分離することでカオスが生じてしまいがち・・・合っているのかなぁ~。

DB2 for iでの動作確認

まあ、わからないことは実際に「手を動かして試す」に限ります!

事前準備

適当に、野菜テーブルと肉テーブルを作りました(かなり適当です)。

SQLを実行できるツール、もしくは5250エミュレータで「STRSQL」コマンドでSQL文を打てるようにします。

CREATE TABLE TIGERDB.TVEGETABLE (                                 
ID INT NOT NULL GENERATED ALWAYS AS IDENTITY                      
       (START WITH 1 INCREMENT BY 1 NO CACHE),                    
NAME CHAR(32),                                                    
PRICE INT,                                                        
MEMO CHAR(40),                                                    
CRT_TS TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,              
UPD_TS TIMESTAMP NOT NULL,                                        
PRIMARY KEY(ID) )                                                 
RCDFMT RECVEG                                                     

-- TIGERDB にテーブル TVEGETABLE が作成されましたが,ジャーナル処理されていません。

INSERT INTO TIGERDB.TVEGETABLE (NAME, PRICE, MEMO,UPD_TS)  
  VALUES (' トマト ',198, '', '0001-01-01-00.00.00')       
-- TIGERDB の TVEGETABLE に 1 行が挿入された。                

INSERT INTO TIGERDB.TVEGETABLE (NAME, PRICE, MEMO,UPD_TS) 
  VALUES (' ごぼう ',240, '', '0001-01-01-00.00.00')      
-- TIGERDB の TVEGETABLE に 1 行が挿入された。    

CREATE TABLE TIGERDB.TMEAT (                                       
ID INT NOT NULL GENERATED ALWAYS AS IDENTITY                       
       (START WITH 1 INCREMENT BY 1 NO CACHE),                     
NAME CHAR(32),                                                     
PRICE INT,                                                         
MEMO CHAR(40),                                                     
CRT_TS TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,               
UPD_TS TIMESTAMP NOT NULL,                                         
PRIMARY KEY(ID) )                                                  
RCDFMT RECMEAT                                                     
-- TIGERDB にテーブル TMEAT が作成されましたが,ジャーナル処理されていません。

INSERT INTO TIGERDB.TMEAT (NAME, PRICE, MEMO,UPD_TS)   
  VALUES (' 豚肉 ',500, '', '0001-01-01-00.00.00')     
-- TIGERDB の TMEAT に 1 行が挿入された。                 

INSERT INTO TIGERDB.TMEAT (NAME, PRICE, MEMO,UPD_TS)   
  VALUES (' 牛肉 ',800, '', '0001-01-01-00.00.00')     
-- TIGERDB の TMEAT に 1 行が挿入された。                 

INSERT INTO TIGERDB.TMEAT (NAME, PRICE, MEMO,UPD_TS)   
  VALUES (' 鶏肉 ',350, '', '0001-01-01-00.00.00')     
-- TIGERDB の TMEAT に 1 行が挿入された。 

ビューの作成

2つのテーブルを準備し、データが格納されたところで、ビューを作りました。

野菜と肉を結合したビューです。

CREATE VIEW TIGERDB.VITEM AS                                        
(SELECT 'VEGETABLE' AS CATEGORY, NAME, PRICE FROM TIGERDB.TVEGETABLE
    UNION                                                           
 SELECT 'MEAT'      AS CATEGORY, NAME, PRICE FROM TIGERDB.TMEAT     
)
-- ビュー VITEM が TIGERDB に作成された。 

ビューの調査

ビューを使用する

さっそく、作成したビューを使ってみましょう!

SELECT *       
  FROM TIGERDB.VITEM   
  ORDER BY PRICE

-- CATEGORY   NAME                                      PRICE
-- VEGETABLE   トマト                                     198
-- VEGETABLE   ごぼう                                     240
-- MEAT        鶏肉                                       350
-- MEAT        豚肉                                       500
-- MEAT        牛肉                                       800

オッケー!! 想定通りの参照ができました。

ビューSQLの確認

ここで気になるのは、仕様書等がなくて、どうやってビューの中身(SQL)を確認したらいいのか? ということです。

ACSの「SQLスクリプトの実行」を選択し、下記のSQL文を打つことで、中身を参照できました。これができれば、まずは安心です。

select * from sysibm.views
 where TABLE_NAME = 'VITEM'

f:id:no14141:20210129195635j:plain

ビューの書き込みテスト

ビューはあくまで読み取り専用で使いたいのですが、更新操作はできるのでしょうか?

上のSQLの検索結果内に、「IS_UPDATABLE = NO」とありますので、初期状態ではできなさそうですが、

UPDATE VITEM                                                  
   SET PRICE = 352                                            
 WHERE NAME = ' 鶏肉 '                                        

-- TIGERDB のビュー,索引,テーブル VITEM は読み取り専用です。 

案の定、更新不可でした。この方が助かります。

DSPDBRコマンドで確認

さて、気になるところは、AS400からはビューがどう映っているのでしょうか?

まずは、DSPDBRコマンドで、参照元テーブル(野菜)で調べてみました。

DSPDBR FILE(TIGERDB/TVEGETABLE)

                           データベース関係表示                                                                                    
   DSPDBR コマンド入力                                                                                                              
      ファイル . . . . . . . . . . . . . . . . . : FILE       TVEGETABLE                                                            
        ライブラリー . . . . . . . . . . . . . . :            TIGERDB                                                               
      メンバー . . . . . . . . . . . . . . . . . : MBR        *NONE                                                                 
      レコード様式 . . . . . . . . . . . . . . . : RCDFMT     *NONE                                                                 
      出力 . . . . . . . . . . . . . . . . . . . : OUTPUT     *                                                                     
    仕様                                                                                                                            
      ファイルのタイプ . . . . . . . . . . . . . :             物理                                                                 
      ファイル . . . . . . . . . . . . . . . . . :            TVEGETABLE                                                            
        ライブラリー . . . . . . . . . . . . . . :            TIGERDB                                                               
        メンバー . . . . . . . . . . . . . . . . :            *NONE                                                                 
        レコード様式 . . . . . . . . . . . . . . :            *NONE                                                                 
        従属ファイルの数 . . . . . . . . . . . . :                1                                                                 
    指定されたファイルに従属するファイル                                                                                            
         従属ファイル       ライブラリー       依存関係     JREF     制約                                                                
         VITEM              TIGERDB        データ                       

従属ファイルとして、ビューが出力されました。なるほど。

WRKOBJコマンドで確認

次にビューの属性を見てみます。今回は、WRKOBJコマンドを使いました。

WRKOBJ OBJ(TIGERDB/VITEM)

                              オブジェクトの処理                                

 オプションを入力して,実行キーを押してください。                               
   2= 権限の編集   3= コピー   4= 削除   5= 権限の表示   7= 名前の変更          
   8= 記述の表示   13= 記述の変更                                               

 OPT  オブジェクト     タイプ   ライブラリー      属性        テキスト                   
      VITEM       *FILE     TIGERDB     LF                       

ビューは、論理ファイル扱いでありました。

言われてみると、納得してしまいます。論理ファイルでは、フィールドを抜き出せたり、抽出条件を指定できたり、複数のテーブルを結合できたりしますからね。まさに、ビューとほぼ同じ役割です。

マテリアライズドビュー

少しビューを学習してみると、マテリアライズドビューという存在に気づきます。

仮想テーブルのビューに対して、こちらは実態ありのビューテーブル。

レスポンスを良くするために登場! しかし、リフレッシュするタイミングを決めたり、リソースをたくさん消費しまうなど、すぐに取り扱うには敷居が高そうです(そうでも無いのかな!?)。


まとめ

ビューについて実際に手を動かしながら、試してみました。

マテビューは試していませんが、通常のビューならば、これから出番がありそうです。

しかし、前段でも書きましたが、頻発すると苦労するシーンが容易に想像できるので、しっかり判断のうえ、利用していこうと思っております。

次回は「スキーマ変更した後、Viewがどうなるか?」について掲載する予定です。

2020年のマイ・ベスト

今更ですが、2020年の総括です。

2020年は世界的に「コロナ禍」の影響で、だいぶ行動が制限された年でした。

まあ個人的には、「コロナ前」と「コロナ中」でも、あまり変わりは無いのですが、強いて言えば「リアルLive観戦 0」、「リアルマラソン大会参加 0」という結果が残念でなりません。

早速ですが、2020年の My Best の発表です。

2020年マイ・ベスト

書籍

2020年に読んだ書籍は、151冊でした。2019年が300冊だったので、半減しましたが、その分、じっくりと本に向き合うことができたかなと思っています。

その中で一番感銘を受けたのが、『人生最後の日に ガッツポーズして死ねる たったひとつの生き方』。

作家のひすいこたろうさんが、5年近くあたためてリリースした作品。

「野村望東尼」をはじめて知る機会を得て、2021年もますます幕末にハマっていきそうです。

映画

2020年に観た映画は8作。ほとんど、映画は観ないんです。

そんな中、印象に残っているのが『アバウト・タイム』

「時間は有限。悔いのない決断をしていくしかない!」と思わされた名作でした。

ちなみに今年は、20作を観ることが目標です。

こちらは迷いなく、X.Y.Z→Aの「Wonderful Life」に決まりです!

疾走感あふれる曲で、そこにファンキーさんらしいメロディが炸裂!!

コロナ禍だからこそ、胸に響く歌詞も最高でした。今でもヘビロテの名曲中の名曲。

アルバム

Lisaの新譜、Aldiousの最初のベスト、BON JOVIの2020も候補に上がりましたが、2020年の前半最もお世話になったアルバムは、「HAREM SCAREM」の「Change th World」でした。捨て曲なしの名作です。

HAREM SCAREMのLive、また行きたいなぁ~。

Live

HR/HMのLiveは、前述の通り参戦ゼロでしたが、オンラインで何回かは体験しました。

中でも、音楽Liveではありませんでしたが、むしろ音楽よりエキサイトだった(しかもジャンルは「Blues」)古舘さんの「トーキングブルース2020」が一番でした。

spice.eplus.jp

ラソン大会

こちらは、オンライン。

サブ4を達成できた記念すべきレース「オンラインLiveマラソン2020」に決まりです! 

今年以降で、リアルイベントで必ず「サブ4」は達成してみせます。

olmj.net

note.com

まとめ

個人的記録も兼ねて、2020年のお気に入りを載せてみました。

2021年も、もう少しで12分の1が終わってしまうほど、猛スピードで消化してしまっていますが、1日1日の中にある素敵な「出会い」から1つでも多くの学びを得て、良い「行動」につなげていければと考えております。