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

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

【VS Code】Java Mavenを試す

JJUGナイトセミナー「開発環境の最前線」を視聴させていただき、何か前進しないといけない気持ちになり、ようやく VS CodeJavaを試してみることにしました。

下記は、今回私が試した手順になります。

  • 動作環境
    • Window10 Pro 21H1 64bit
    • MS Open JDK11
    • Maven 3.8.4

(1) MS Open JDK11 のダウンロード/配備

docs.microsoft.com

環境変数設定

JAVA_HOME: C:\apps\java\jdk-11.0.14+9
Path: %JAVA_HOME%\bin

Version確認

>java -version
openjdk version "11.0.14" 2022-01-18 LTS
OpenJDK Runtime Environment Microsoft-30257 (build 11.0.14+9-LTS)
OpenJDK 64-Bit Server VM Microsoft-30257 (build 11.0.14+9-LTS, mixed mode)

(2) Maven のダウンロード/配備

maven.apache.org

環境変数設定

M2_HOME: C:\apache-maven-3.8.4
Path: %M2_HOME%\bin

Version確認

>mvn -v
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: C:\apache-maven-3.8.4
Java version: 11.0.14, vendor: Microsoft, runtime: C:\apps\java\jdk-11.0.14+9
Default locale: ja_JP, platform encoding: MS932
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

(3) Java in VS Codeを取得

code.visualstudio.com

  • 取得したファイル
    • JavaCodingPack-0.4.1.exe

f:id:no14141:20220326125454j:plain

f:id:no14141:20220326125519j:plain

f:id:no14141:20220326130303j:plain

インストールが完了し、下記のディレクトリを確認すると、java関連の拡張機能が多数追加されていることがわかります。

> dir C:\Users\userName\.vscode\extensions

 C:\Users\userName\.vscode\extensions のディレクトリ

<DIR>          .
<DIR>          ..
<DIR>          redhat.java-1.4.0
<DIR>          visualstudioexptteam.vscodeintellicode-1.2.17
<DIR>          vscjava.vscode-java-debug-0.38.0
<DIR>          vscjava.vscode-java-dependency-0.19.0
<DIR>          vscjava.vscode-java-pack-0.22.0
<DIR>          vscjava.vscode-java-test-0.34.2
<DIR>          vscjava.vscode-maven-0.35.1

(4) Java Mavenプロジェクトの作成

Ctrl + Shift + Pキーで、コマンドパレットを開きます。

Javaと入力し「Create Java Project」を選択し、「Maven」を選択します。

f:id:no14141:20220326130419j:plain

f:id:no14141:20220326130436j:plain

f:id:no14141:20220326130448j:plain

(5) コード例

メインのJavaコードと、プロジェクト設定ファイルだけ掲載しておきます。

ビルド処理により、依存ライブラリも全て含めて、実行可能なjarファイルとしています。

demo\src\main\java\com\tigertaizo\App.java

package com.tigertaizo;

import com.google.common.base.Strings;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        String word = "Hello World!";
        if (!Strings.isNullOrEmpty(word)) {
            System.out.println(word);
        }
    }
}

demo\pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.tigertaizo</groupId>
  <artifactId>demo</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>demo</name>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>31.1-jre</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
  <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>
                                com.tigertaizo.App
                            </mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <appendAssemblyId>false</appendAssemblyId>
                </configuration>
            </execution>
        </executions>
    </plugin>
  </plugins>
  </build>
</project>

(6) ビルド

VS Codeの左下に、MavenのツールBoxが配備されていますので、こちらで、clean → package を実行して、アプリを構築することができました。

f:id:no14141:20220326130843j:plain

f:id:no14141:20220326130937j:plain

(7) 実行

VS Codeのターミナルで、jarを実行してみます。

f:id:no14141:20220326130858j:plain

無事に、jarを実行できました!

VS Codeでも、簡単にJavaプロジェクトを作成することがわかりました。 コード補完もやってくれますし、何より動作が軽いのがいいです!!!

今回、速さは正義であることをあらためて痛感させられることになりました。

また時間を見つけて、Gradleプロジェクトも試してみたいと思います。

LINEモバイル から LINEMO へ移行しました

f:id:no14141:20220318223316j:plain

4~5年?お世話になったLINEモバイルをついに止めることになりました。

何の不満もありませんでしたが、下記のキャンペーンに乗っかることにしたのです。

www.linemo.jp

私も妻も、外ではそこまでパケットを使用しないものですから、3GBプランでも充分。

ということで、1年間無料になります!(さらに5分間かけ放題付き)

このキャリア変更(といっても同じソフトバンク系です・・・)が、吉と出るか、凶と出るかは、しばらく使ってみないとわかりませんね。

今日で3日使いましたが、今のところ、以前と何も変わりません。

ギガ残量が繰越しなどで10GB近くあったので、気がかりは3GBで1カ月間に合うか?といったところ。

f:id:no14141:20220318224004j:plain

まあ、その場合は 1.0GBを550円でチャージすれば良さそうです。

いずれにしても、5Gが主流になったとき、LINEMOのプランを変更するか、また別のキャリアへ移動するか、あらためて選択する機会が訪れるでしょう。

それまでは、LINEMOでやっていこうと思います。

以上、報告でした!!

11年前のブログを公開します(東日本大震災)

f:id:no14141:20220310215932j:plain

明日は 3月11日。

東日本大震災があった日。あれから 11年も経つのですね。

福島県で暮らす者として、あの日の記憶は、これからの人達にも伝えていく必要があると思っています。

先日、たまたま過去の別ブログを読む機会がありました。

せっかくなので、こちらにも掲載しようと思います。

ブログは、2011/03/22に書いたものです。

それではどうぞ!


【大地震

忘れもしない。2011/03/11 14:46。 東日本大地震。。。

ようやく生活にゆとりが出てきたので、日記に記しておきたい。

まずは、私、そして私の家族は、全員無事であります。
ご心配くださった方々に、この場をお借りして感謝いたします!!
ありがとうございます!

あの日は、いつも通り、自分のデスクで何かの資料作成をしていた。
すると、周囲の地震予告のメールが一斉に成りだした。

数日前から、大きな地震があったので(今思えば前触れだった)、また震度3~4程度の地震がくるのか!などと高を括っていたら、一気に「ドスーン!」という地雷のような音がして、揺れは徐々に激しくなり、最初はPCのデスクトップを支えていたが、一気に倒れ、気が付けば、周囲の棚が次々に倒れていった。

さらに恐ろしいことに、背後の書庫ロッカーが壁に打ち付けられているものにもかかわらず、倒れてきたのだった。
社長が、「後ろ! 後ろ!」と叫んでくれたことで、俺は九死に一生を得た。

その声を聞くやいなや、机の下にもぐったのだった。(後輩の机ではあったが)
後から見ると、俺のイスや机の引き出しが破壊されていた。1トン以上の衝撃だっただろう。机の下にもぐらなければ、きっと自分がこうなっていたはず。。。まさに間一髪であった。

自分はServer管理者でもあり、地震発生2時間後にはServer室に戻り、主要なserverをシャットダウンした。

Server室も、めちゃめちゃ。
棚が倒れ、Serverもドミノのように倒れているのも多数。

幸いにして、AS400は、ちょっと横滑りしていた程度で、無事にPWRDWNSYSができた。

すかさず、翌日にはフルバックアップを行った。(念のため2回。テープが読めなかったことを想定して)

さらにその日は、家族が心配で、全員連絡をしたが、子どもたちを預けている保育園にだけ連絡がまったく取れず。
こうなれば、会社での作業が一段落した後、夕方17時頃に直接保育園に行くことにした! 

すると、子ども達も無事。先に妻が迎えに来てくれていた!!

「何かあったの?」と何食わぬ顔で、チャイルドシートにちょこんと座っていた。俺の顔を見ると、2人とも満面の笑顔。

一気に力が抜けた。

本当に無事で良かった!!

あれから、10日が過ぎた。

原発の問題など、まだまだ予断は許さないし、これからどうなる!という不安はあるけれど、
今回の災害を通じて一番よくわかったこと。

それは、家族こそ、かけがえのない宝であるということ。

1週間近く自宅待機になり、ずっと子ども達とベッタリしていたが、本当に心の底からこの子ども達を守ってやりたい! と今まで以上に思うようになった。

「被災者の方々に対して何かできることはないか」と世間は動いているが、俺が今できることは、まずは自分の家族、特に子ども達に安心感を与えることではないだろうか。

その為に泣けばハグするし、ダブル抱っこで筋肉痛になろうが、なんちゃあ~ない。

この程度の痛みは、3日もすれば治る!

今のこの気持ちを忘れずにいよう。

平和が戻り、子ども達が大きくなったら、この地震の話をきちんと伝えよう。
こうして日本は危機を乗り越えたってことをね・・・。

共に悩む

f:id:no14141:20220304214910j:plain

先日、メンバーの1人が興奮していました。

「どうしたの?」と聞いてみたところ、サポートセンターに問い合わせした際に、オペレータの方が我々の課題を一緒に考えてくれて、その課題を解決できる方向に導いてくれたとのことでした。

マニュアルには載っていない課題だったと思います。

そこを、持っている知識、情報、経験などを総動員してアイディアを出してくれたことは、私も猛烈に感動せずにはいられません。

コーチングの場合、答えは相手が持っているから、一緒に答えを探し求めてはいけないと言われますが、上司と部下、親と子、パートナー間、友人同士など、「共に悩む」ことで物事が前進するケースも多くあると思っています。

それが共通の課題であれば尚更ですが、共通の課題でなくても、一緒に考えることでその両者の距離が縮まることもあるでしょう。

とはいえ、簡単に解決できる問題が少ない時代だからこそ、課題との向き合い方は柔軟に対応していきたいものです。

そんな素敵なオペレーターさんのような対応ができる自分でありたいものです。

【情シス心得】仕事とは「手順」である

f:id:no14141:20220225202556j:plain

もちろん、すべてがそうではありません。

イノベーションの起こし方や新しいビジネスモデルを考えることの手順なんて、あるはずがありませんから・・・。

しかし、我々の仕事のほとんどが「手順」だと思っています。

新しいプログラム言語をおぼえることや、サーバのセットアップなど、すべてすでにある手順を覚えるだけ。

ただただ、それだけ。

もしヒューマン・エラーが発生したのなら、まずはその人のことを攻めるのではなく、まずは手順を疑ってみよう。

コロナ禍が始まった頃、サンクチュアリ出版さんから『要領がよくないと思い込んでいる人のための仕事術図鑑』という1冊の本が届きました。

その本の中でも、いきなり次のように書かれていました。

どんな仕事でも、手順書をつくる。これが基本です。(P15)

そうなんですね、基本はやはり手順なんです。

もちろん、挑戦していく中で、手順をどうするか悩んでしまうこともあるでしょう。

とはいえ、今の組織では、そのやることが「0」なだけ。

世界を見れば、すでに「0」を「1」にしている人はたくさんいるはず。

それができるようになるためにも、一次情報に触れることが大事だと思っています。

世の中にない「0」を「1」にすることなど、我々の仕事では皆無です。

自信を持って、今の手順をブラッシュアップしつつ、並行して自分世界を広げる挑戦をしていきたいと思っています。

【情シス心得】できるだけ処理を速く終わらせる

f:id:no14141:20220217224238j:plain

久しぶりの「情シス心得」になりますね。

最近、感じたことを言語化しておきます!

テーマは「できるだけ処理を速く終わらせる」というザックリしたものになります。

だいぶ抽象的ですが、更新処理などのバッチ・プログラムやWebアプリケーションでの動作などをイメージしていただければいいでしょう。

速く終わるということが、今の時代の「価値」基準になっています。

速く終わらせることは、もうメリットしか無いので、ここにこだわることが価値向上につながります。

当たり前の話ばかりですが、以下では、できるだけ処理を速く終わらせるメリットについてまとめていきます。

スリー・チョイスです。

1. 障害に巻き込まれる確率が減る

まず、処理の時間を短くさせることで、障害に遭遇する確率を減らすことができます。

「この処理は夜間に実行するものだから、時間がかかってもいいや!」と言ってしまう場面もあるのかもしれませんが、技術的に時間短縮を実現できるのであれば、1分でも2分でも処理を速く終わらせるべきです。

障害は、いつ何時、やってくるかわかりません。

大事な処理ほど、さっさと終わらせてしまいましょう!!

物理的な処理量の問題でそういうわけにはいかないケースもあると思いますが・・・。

2. リソースを無駄遣いせずに済む

次にリソースを節約できるという効果があります(またも当たり前の話)。

リソースの性能を上げれば処理が速く終わり、下げれば処理に時間がかかるという、まさにトレードオフの関係が成立しているわけですが、処理を速く終わらせることで、リソースを他の処理に使うことができます。

Webサービスであれば、1トランザクションの処理時間を1ミリ秒でも速くさばかせることが、全体のスループット向上につながるのは、間違いありません!

3. 技術力が上がる

最後に、1ミリ秒でも速く処理を完遂させることに挑戦すると、結果的に技術力が必要になります。

その処理でかかわる全要素の原理・原則を知っておく必要があるし、それぞれの機能の代替案も持っていることが必要。

さらに、気軽にB処理をB1からB2へ変更することで、前後のA処理やC処理へ影響を与えてしまうかもしれません(それを「密結合」と言いますね)。

たった1つの処理であっても、全体を捉えていなければ、致命的なバグを引き起こす可能性もあります。

速度を改善するためには、やはり「技術力」が必要になってきます。

つまり、速度にこだわることとは、自分のレベルアップにつながるわけですね。

まとめ

今回は、「速度」にこだわることをテーマに書いてみました。

コンピュータ上の処理にフォーカスしたわけですが、実生活においても、スピードを上げて効率的に行動することは、とても大切ですよね。

人間の場合、マシンと違う点は、しっかり休ませないと稼働時に本領を発揮できないことです。

毎日の睡眠をしっかり取り、動いているときは「速度」を意識して小さな改善を繰り返していく。

自分というゴムを張りっぱなしでは、いつか切れてしまうので、適度にゴムを緩めながら、人生の質を高めていきたいものですね!

電卓を購入しました

実は今週、amazonで電卓を購入したのです。

目的は、統計検定試験で使用するため。

そうなんです、今年は、統計検定にチャレンジしようと思っているんです。

www.toukei-kentei.jp

簡単な練習問題を問いていたところ、平方根を求める問題がありました。

ルート2なら、1.41421356(一夜一夜に人見頃)と覚えていましたが、

大きい数値の平方根を計算する場面があり、あれ?どうやるんだっけ?となってしまいました。

試験要項を確認したところ、電卓の持ち込みは可能とのこと。

手持ちの電卓には、ルートボタンが無かったので、この度、購入する運びとなりました。

統計検定、いつ受けようかな?

まずはコロナの状況を見てになりますが、まずは春には「4級」を受験しようと思います。

「3級」まではすんなりクリアしたいですね。

「3級」は、ど真剣にやらないと難しいレベルです。

さあ、どうなりますか?

これも今年掲げた小さな挑戦の1つになります。

やったるで!!