プログラミング言語「TypeScript」

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。
今回はAI、ビッグデータをテーマにしている第1ユニットです。

今回はプログラミング言語の紹介です。2023年の人気のある Web プログラミング言語のTOP3は下記となっています。
 ・JavaScript
 ・Python
 ・C#
あれ、今回紹介するTypeScriptはランクインされていないし、AIで活用されることが多いPythonじゃないの?と思われると思います。確かにそうなのですが、業務Webアプリ開発では注目されている言語、それがTypeScriptなのです。

https://www.typescriptlang.org/

「TypeScript」は、JavaScriptを拡張した新しいプログラミング言語であり、2012年10月にMicrosoftが公開しました。その後、2017年にGoogleの標準言語にも認定されています。TypeScriptで書いたコードをコンパイルするとJavaScriptのコードへと変換されるため、JavaScriptの開発環境や実行環境があればすぐに使えます。

紹介するに至った経緯としまして、顧客向けの業務で活用しているからです。このプロジェクトでは、20年ほど前に開発され、老朽化したシステムの更新業務を行います。このシステムは開発当時に主流であったクライアントで動作するJavaAppletが使われており、InternetExplorerで動作するものでした。時代は変化し、InternetExplorerはEdge上で互換モードで動作させ、JavaAppletもサポート余命が残り少なくなっていました。そんな状況でもシステムは使い続けたい、最小限のコストで新しいシステムへ更新したいということで登場するのが今回紹介する「Typescript」なのです。

Typescriptの最大の特徴は、コンパイルすることでJavascriptのソースコードに変換される点にあります。それなら普通にJavaScriptで良いのではと思われるかもしれません。TypeScript は型の宣言ができたり、コンパイル時にエラーが出ます。入力される型が不明であったり、実行するまでエラーを検知することができなかったJavaScriptと比較すると、大幅に制作効率の向上となっています。また、開発環境構築の容易さも魅力の一つです。Microsoft社が無料の開発ツール「Visual Studio Code」を提供しているため、これを導入するだけです。追加で様々なプラグイン用意され、用途に応じて使い分けることが可能となっています。

その他、以下のようなメリットが挙げられます。
 ・大規模開発に耐え、メンテナンス性が高い
 ・インターフェイス、クラスが利用できる
 ・記述量が少なく、可読性が高い
 ・JavaScriptへの変換により、動作速度が変わらない
 ・JavaScriptの上位互換により、他の言語より学習コストが低い

Typescriptは、まだ歴史が浅い言語です。しかし、Javascriptの後継としての立場はもちろんのこと、React Nativeの開発言語としても利用できるため、活躍の場がどんどん広がっていくことが期待できます。社内のアプリ開発でも利用しており、これからも利用を推進していきたいと思います。

今回は業務で使っているプログラミング言語「TypeScript 」の紹介でした。

SpringBoot3 組み込みJettyで動かしてみた

こんにちは第0ユニットのチキンキウイです。
SpringBoot3がリリースされていたので、今回は組み込みサーバーを変更して
動かしてみようと思います。

環境

  • SpringBoot3.0.6
  • Java17
  • Gradle 7.6.1

設定内容

SpringBoot3を組み込みJettyで動作させるには「build.gradle」に以下に設定を追加すことで実現できます。

ext['jakarta-servlet.version'] = '5.0.0'

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    modules {
        module("org.springframework.boot:spring-boot-starter-tomcat") {
            replacedBy("org.springframework.boot:spring-boot-starter-jetty", "Use jetty instead of tomcat")
        }
    }
    implementation 'org.springframework.boot:spring-boot-starter-jetty'
    providedRuntime 'org.springframework.boot:spring-boot-starter-jetty'
}

動かしてみた

ここからは実際にプロジェクトを作成し実際に動かしていきます。

SpringBootプロジェクトの作成

[ファイル>新規作成>その他]からウィザードを開き
新規のspringスタータープロジェクトを作成します。

build.gradleの変更

プロジェクトを作成したら「build.gradle」を開きJettyの変更を追加します。

「build.gradle」変更後は「Gradleプロジェクトのリフレッシュ」を実行してください。

動かしてみた

プロジェクトのリフレッシュが完了したらプロジェクトを実行してみます。
実行してログに「Jetty started」が表示されていればJettyで起動しています。

画像に alt 属性が指定されていません。ファイル名: image-3-1024x401.png

まとめ

今回はSprinngBoot3でJettyサーバーを動かしてみました。
SpringBoot3の情報はまだまだ少ないので、参考の一つにでもなれば幸いです。

参考

GitHub Document how to downgrade dependencies to use embedded Jetty 11
https://github.com/spring-projects/spring-boot/issues/33044#issuecomment-1326332014

技術者ブログ:Oracle Databaseのアップグレード

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。

インフラをテーマにしている第3ユニットです。

今回は、Oracle Databaseのアップグレードについて

あるシステムの全面的な更新の一環として、Oracle Databaseのアップグレードを担当しました。具体的には、古くなった12cのデータベースからメタデータ(表を始めとした、DB上のオブジェクトの定義)と行データ(各表で登録されている項目)をエクスポートして、同じ状態の19cのデータベースを作成することになりました。

開発環境が用意されていたため、新しいDBの構築は複数回リハーサルできましたが、12cのDBからのエクスポートは、DBに余計な影響を与えないために、回数を抑えることにしました。

そのため、一回エクスポートしたら、何回も使えるDMPファイルを出力するOracle Data Pump(データポンプ)というツールを使いました。

作業の流れ

各ステップを個別の監視できるために、アップグレードを以下のような流れで行いました。

  • データポンプで12cのDBからメタデータと行データをエクスポート
  • 12cの設定を確認しながら、同じ設定の19cの空っぽのDBを作成
  • 19cのDBにエクスポートしたメタデータと行データをインポート
  • 19cのDBの全体的な確認

上記の流れで、アップグレードできましたが、リハーサルの中で幾つかの問題に遭遇して、解決・回避の方法を調査することになりました。その問題を一つ、以下に紹介したいと思います。

シークエンス問題とその回避

データベースに登録される行の自動採番を使う表がある場合、そのシークエンス(順序)の状態(次に割り振られる番号)をそのまま継続する必要があります。そうしないと、データベースが同じ番号を再び割り振ろうとして、エラーが生じる恐れがあります。

自動採番を使う表の存在を、SQL Developerなどで確認できます。表作成のSQLを参照すると、「GENERATED ALWAYS/ BY DEFAULT AS IDENTITY」という定義が見られます。

自動採番が設定されているテーブル 
引用:https://stackoverflow.com/questions/49239177/sequences-vs-identity-columns-in-oracle

新しいDBへインポートする際に、メタデータと行データを同時にインポートすると、シークエンスが自動的に継続されますが、メタデータと行データを別々にインポートすれば、シークエンスが「1」からリスタートされて、手動で調整しなければならなくなります。

そのために、メタデータと行データの同時インポートをお勧めします。

次回の技術者ブログもお楽しみに。

技術者ブログ:(OutSystems)BootStrapによるデータ移行の紹介

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。
今回は、ローコード開発をテーマにしている第2ユニットです。

今回のテーマ:『BootStrapによるデータ移行の紹介』

BootStrapとは?

BootStrapとはOutSystemsのExcelファイルからOutSystemのEntityへ取り込みを行うことができる標準機能です。
本機能は難しい手順を踏むことなく実行できるため、お勧めできる機能になっています。
本記事では、ExcelファイルからOutSystemのEntityへデータ取り込みを行う手順をご紹介します。

データ移行準備①:移行先のEntity作成

移行先のEntityを移行したいデータ構成で作成します。
データ構成で気を付けるべき点としては下記となります。
・OutSystem上のIdentiferはサロゲートIDとして必ず作成しておくこと。
・取り込みたいデータタイプをAttributeに設定しておくこと。
※定数などの項目も併せてStaticEntityで作成

データ移行準備②:移行元データ(Excelファイル)の用意

移行したいデータが入力されたExcelファイルを用意します。
その際、以下の注意点に留意してください。
・ファイル名は、全角文字を入力すると取り込み時アンダーバー「_」に置換されるため、半角英数字を入力してください。
・シート名は、移行先のEntity名と一致させてください。
・入力データは、次の画像のように見出し+データの形式で設定し、見出しはデータ準備①で作成したEntityのNameと一致させてください。
・移行先Entityのデータタイプが数値やIdentiferの場合に取込を行う情報にブランクが含まれる場合、強制的にデータタイプが文字列型に変換されてしまう。
※数値型で取込みたい場合はブランクを0に置換してすべて数値に変換してください。

以上で準備は完了となります。

データ取込処理①:移行ロジックの生成

移行先Entity・データ移行元ファイルの準備が完了したら移行ロジックの生成を行います。
移行先Entityを右クリック→Advanced→Create Action to BootStrap Data form Excelの順に選択します。

そしてデータ移行準備②のExcelファイルを選択すると、下記の画面が表示されるので移行元の項目名と移行先のAttributesが一致していることを確認してProceedを選択します。

以上の手順によって移行に必要なオブジェクトが作成されます。

作成されるオブジェクト

〇Timer
・処理の実行タイミングの設定が行われます。
・初期設定ではPublish時に実行されるよう指定されており、月毎・週毎・日毎等選択できます。

〇Logic
・ExcelからEntityへ取り込むLogicが作成されます。
内容については以下の記述がされています。
①移行先のEntityが空かを判断する。
②Entityが空ならExcelの情報を読み込み全件登録を行う。

〇Structure
・Excelファイルの情報を格納するデータ型の入れ物です。

データ取込処理②:Publishを実行

最後にServiceStudioにてPublishを実行します。
Publish完了後データ取り込みが実行され今回準備したEntityへデータが登録されます。

余談・取り込み処理のアレンジ

以下に筆者が本機能を利用するにあたって手を加えた内容を簡単に記載します。

  • Timerでの決まったタイミングでの実行ではなく画面に用意したボタンにLogicを設定して実行する。
    →実装経緯:Publishを実行時以外に動作確認をするために画面上のボタンに割り振れば任意のタイミングで実行できるため実装した。
  • LogicのEntityが空なら実行する判断を全件削除してから実行する処理に変更する。
    →実装経緯:重複登録を避けるための判断だが移行結果を確認したかったため変更を加えた。

まとめ

BootStrapを利用してExcelファイルからOutSystemのEntityへデータの移行を行う手順を紹介いたしました。
データ移行だけでなくExcel出力を行っておけばバックアップとして取り込む場合やテスト時にデータを取り込む場合にも活用できるため有用な機能かと思います。
準備・実行ともに簡易ですので実際に作成してみてはいかがでしょうか?

ChatGPT触ってみた

こんにちは第一ユニットベーです。

最近はChatGPTが登場し、MicrosoftやGoogleが世間を騒がせていますね!

昨年はStable Diffusionの登場で画像生成AIも活気立ちましたし、これからどんどんAIが私たちの生活に入り込んで盛り上がってきそうでとてもワクワクしています。

AI関連を勉強している身としては、話題になっているものを触らない選択肢はありません。

今日はChatGPTを触ってみようと思います。

アカウント登録

ChatGPTを使うためにはOpenAIのアカウント登録が必要です。

私はすでにアカウントを登録しているのでアカウントを持っている状態から進めていきます。

登録はメールアドレスと2段階認証用の電話番号の登録程度で、他のサイトと変わらず数分で終わる内容でした。

これだけで最新の対話式AIが使えるなんてびっくり…

使ってみ

では、Chat GPTの画面を開いたので早速使ってみようと思います。

まずは弊社について質問してみます。

うーん、残念ながら弊社の情報はまだChatGPTは学習していないようです。

違う質問もしてみます。

技術的なこともしっかり答えてくれますね。

もうちょっと細かいことを聞いてみましょう。

プログラムの内容まで教えてくれました。しかも日本語コメントと内容の説明付き!

そしてChatGPTのよりすごいところは一問一答ではなく、前の質問を考慮して回答をしてくれるところです。
思いつきで先程のスクリプトの変数名を変えるようにお願いしてみました。

雑な日本語での指定でしたが難なくやってくれました。

今は簡単なプログラムを聞いただけですが、技術的な相談はAIにしたほうが早い未来がもう来ているのかもしれませんね。

しりとり

最後にChatGPTとしりとりできるか挑戦してみました。

・・・ChatGPTさんはまだしりとりのルールを知らないようです。
私の負けであることを伝えてみました。

ChatGPTさんのしりとりに勝ち負けはないようです。
まだ遊び相手になってもらうためには学習を続けて貰う必要がありそうですね。

まとめ

今回はChatGPTで遊んでみました。

手軽に使えて、使い方によってはすでにかなり実用性のあるレベルまで到達していましたね!

今後のAI技術の発展に期待しつつ、私達もAIに負けないように頑張らないといけません。

今回の記事はここまでです。それでは!

【WordPress】「Astra」のスターターテンプレート利用によるウェブサイト作成

WEBデザインをテーマにしている第0ユニットです。

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。

今回はWordPressの人気テーマ「Astra」のスターターテンプレートをご紹介します。

「Astra」のスターターテンプレートの利用により、手早く綺麗なデザインのウェブサイトを簡単に作成することができます。

Astraのインストール

①Astraのインストールと有効化

②スターターテンプレートのインストール

③ページビルダーの選択

※今回は「Elementor」を選択しています。「Elementor」はWordPressのプラグインの一つで、直感的な操作でウェブページの作成が可能となるエディターです。「Elementor」についても今後ブログの中でご紹介しようと思っています。

以上の①~③で準備は完了です。

ウェブサイトの作成

試しにウェブサイトを一つ作成してみます。

「Business」、「E-Commerce」、「Blog」等、カテゴリごとにテンプレートの一覧が表示されており、その中から選択します。

テンプレート右上に黄色く「PREMIUM」となっているものは有料のテンプレートです。

今回は「E-Commerce」にカテゴリーされているテンプレートを使ってウェブサイトを作成します。

①ロゴの設定

②色、フォントの設定

上記2つの設定後、以下画面が表示されるので、「Submit & Build My Website」で完了です。

作成されたECサイト

テーマのインストールからサイトの作成まで所要時間10分ほどで作成できました。

もちろんここからカスタマイズも可能です。

前回ご紹介した「LOCAL」の環境で簡単に試作できるので是非試してください。

次回の技術者ブログもお楽しみに。

技術者ブログ – ハードディスク完全消去方法

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。
今回はインフラをテーマにしている第3ユニットです。

使用しているパソコンを捨てる時や、 仕事で使用しているパソコンを別のプロジェクトに移動させる時に ハードディスクのデータをすべて完全に消去する必要があります。

無料で使用できるソフトとして、今までは「DESTROY」というソフトがあったのですが、 最近のパソコンでは使用できなくなっていたので、 代替案を調べてみました。

※以下の作業を行うと、大事なデータも削除してしまうので、十分に注意して作業を行ってください。

結論

USBからUbuntuを起動してshredコマンドを使用すればよいとわかりました

手順

1.UbuntuインストールUSBを作ります

・UbuntuのISOイメージをダウンロードします。
・「Rufus」にて、ダウンロードしたISOイメージから、UbuntuインストールUSBを作成します

Rufus
Rufus

参考)Ubuntu:https://ubuntu.com/download/desktop Rufus:https://rufus.ie/ja/

2.パソコンの起動時、BIOSにてUSB優先にして起動します

Ubuntu起動中に、「Try Ubuntu without installing」を選択してそのまま起動してください

Ubuntu起動画面

Ubuntuデスクトップが起動されます

3.「Terminal」を開きます

Terminal画面

4.「fdisk」コマンドを使用して、ディスク一覧を確認します

sudo fdisk -l

5.「shred」コマンドを使用して、データを消去します

sudo shred -v -z -n 1 /dev/sdb

[ /dev/sdb ] の部分に、fdiskで調べた消去したいディスクを指定します。

●オプションの説明
・-v: 途中の進捗状況をターミナルに表示する
・-z: 最後に、オール0で上書きする
・-n 1: ランダム上書き1回する

以上で完了です。

次回の技術者ブログをお楽しみに。

技術者ブログ:(Outsystems)Forge開発方式の紹介

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。
今回は、ローコード開発をテーマにしている第2ユニットです。

今回のテーマ:『Forge開発方式の紹介』

Forgeとは?

OutSystemsのForgeは、コミュニティメンバーが開発した、OutSystems用のソフトウェアを他のコミュニティメンバーに簡単に共有できるオンラインリポジトリです。
「OutSystemsに追加できる便利なプログラム」のことです。

・OutSystemsを使っている人たちが作成したソフトウェア

・OutSystemsの標準機能ではできないことを実現するためのソフトウェア

・オープンソースなので無料

という利用者にとってはありがたい存在、それが「Forge」です。

Forgeの信頼性

Forgeには信頼性を示すためのアイコンが表示されています。信頼性にはレベルが3つあります。まず1つ目は、下図のように赤い印がついたものです。これはOutSystems社がサポートしているForgeです。
OutSystems社がサポートしているので、Service Stduioのバージョンが上がっても継続して使用できるようアップデートされることが予想されます。

次に、2つ目が以下の画像のように右下に緑の印がついたもの。
これはOutSystems社が「信頼しています」と保証したものにつけられます。

3つ目は、印がまったくついていないものです。
OutSystems社からサポートも保証もされていないものであるため、利用する際には注意が必要です。

Forgeをインストールする方法


「Webページから検索し、Service Studioにインストールする」方法と
「Service Studioから検索してインストールする」方法とがあります。
ここでは両方の検索方法と違いについて説明します。

Webページから検索してインストール

WebページからForgeを探すには以下のリンク先から検索することができます。
「Search in Forge…」の検索用テキストエリアから使用したいワードを入力して探すことができます。

https://www.outsystems.com/forge/

Service StudioからForgeを検索してインストールする方法

次Service Studioを開き、画面左上のタブ「Forge」をクリックします。
すると先ほどのWeb版と同様の画面が現れます。
あとは、Webページの場合と同様に、キーワードを入力することでForgeを探すことが出来ます。

それでは、実際にやってみましょう。
今回はData Grid 用のForgeを探してみます。
検索ワードは「Data Grid 」と入力し、「SEARCH」ボタンをクリックします。検索結果の中から、今回は「Data GridSample」というForgeをインストールすることにします。
対象のForgeのページに移り、右上の「DOWNLOAD」ボタンをクリックすると確認メッセージが表示されます。問題なければ一番下の「INSTALL IN DEVELOPENT ENVIRONMENT」ボタンをクリックします。
Service Studioが起動し、対象のForgeをインストールするための画面が開きます。
画面右上の「INSTALL」ボタンをクリックすることでこのForgeをインストールすると自身のService Studio上に対象のForgeが追加されます。
これでForgeのインストールは完了です。

まとめ

以上、簡単ではありますが、Forgeとインストールして使えるまでの流れを紹介しました。
また、開発時間の短縮により、ユーザーにとっても使い勝手が向上していることがわかると思います。
今後、アプリを作る上でForgeが重要になる可能性もあるので要注目です。

データベースの紹介(IBM DB2)

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。
今回はAI、ビッグデータをテーマにしている第1ユニットです。

今日は業務で扱っているデータベースを紹介したいと思います。
データベースとは、収集した膨大なデータが格納されているデータの集まりです。
システムの情報保持だけでなく、ビッグデータの解析など、さまざまなデータの処理に役立てられています。

データベースランキング 引用:https://db-engines.com/en/ranking

上記はデータベースランキングとなっており、1位がOracle、2位がMySQLとなっています。
OracleやMySQLは社内でも利用され、診療予約システムファムルケアや勤怠管理システム、社内研修にも活用しています。

今回、私たちが開発しているシステムには8位にランクインしているIBM DB2が採用されています。開発しているシステムは既存システムを新しく作り直す案件であり、膨大なシステムのため、一括での作り直しは難しく、既存部分を利用しつつ、順次新しいシステムに乗り換えていきます。この切替では既存システムと新システムとの同期が必要であることがポイントです。

本題であるデータベースの紹介としてIBM DB2の説明となります。IBM DB2はIBM社が1983年に開発した古くからあるデータベースです。今では一般化したSQLを初めて採用したデータベースと言われています。分類はリレーショナル型データベース管理システム(RDBMS)であり、最大の特徴としては大型コンピューターからUNIX、Windowsと様々な環境で実行可能であることです。残念ながらランキングでは8位となっておりますが、堅牢な作りであり、大規模システムでの採用されています。

IBM DB2データベース 引用:https://www.ibm.com/jp-ja/products/db2

また、データベースの活用にはデータを管理する必要があり、便利なツールが様々用意されています。IBM社も「IBM Data Studio」を用意しています。ただ、今回プロジェクトでは「Microsoft Access」を利用しています。本来のAccessもデータベースなのですが、DB2やOracle、MySQLのデータを扱うことができます。各データベース毎に少しだけ違う部分もあるためちょっと苦労をするところもあります。
IBM DB2をそのまま利用することにより、既存システムをそのままに、新しいシステムへ省コストでの移行を考えるとデータベースを変更しなかったのに納得な採用だと思いました。

ITバブル、PCの普及に伴い、様々なものがシステム化され、運用されています。それらの耐用年数として当初では10年くらいを見込まれていましたが、延命処置が施され、15年、20年と使い続けられることが多くあります。その延命措置も限界を迎え、システムの再構築をせざる得ない状況となった案件が多くあり、見た目はそのままで中身を刷新する。そしてコストは最小限に。そんな案件が多く、長く運用するのは大変な努力があるのだと改めて痛感しました。

以上、今回は業務で扱っているデータベース(IBM DB2)の紹介でした。

【WordPress】ローカル環境構築ツール「LOCAL」 のインストール方法と使い方

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。
今回はWEBデザインをテーマにしている第0ユニットです。

当社ブログは、WordPressにて構築されていますが、WordPressサイトをローカル環境で構築可能な便利ツール「LOCAL」をご紹介します。

以下のようなお悩みを持つ方は一度利用してみてはいかがでしょうか?

・WordPressでのサイト構築に興味があるが、レンタルサーバ等の費用が掛かるため、まずは無料で体験してみたい。

・既にWordPressで構築されたサイトを運営中だが、テーマやプラグイン等の変更をローカル環境でテストしてみたい。

今回は、LOCALのインストールからテストサイトの構築までご紹介します。

LOCALのダウンロード

LOCALのダウンロードサイトはこちらから。

DOWNLOADをクリックします。

プラットフォームをWindows、Mac、Linuxから選択します。他の情報はe-mailの部分のみでダウンロード可能です。

ダウンロードされたファイルを実行し、インストールします。

LOCALによるサイト構築手順

試しにサイトを一つ作成してみます。

Create a new site をクリックします。

サイト名称を入力します。

※「ADVANCED OPTION」を選択すると、ドメイン名等の指定が可能となります。

環境設定です。今回はPreferred(オススメ)を選択していますが、Customを選択することで、PHP、Webサーバ(nginx、Apache)、MySQLについて、指定のバージョンを選択することができます。

WordPress管理画面へのログインユーザおよびパスワードを設定します。
※e-mailはデフォルトで問題ありません。

「Add Site」をクリックして、あっという間にサイトの構築完了です。

管理画面へログイン

「WP Admin」をクリックします。

先ほど設定したユーザ/パスワードでログイン可能です。

無事、ダッシュボードが表示されました!

驚くほど簡単にローカル環境にてWordPressの環境を構築することが出来ました。

興味のある方は是非試してみてください。

次回の技術者ブログもお楽しみに。