技術者ブログ – TensorFlowで画像を分類しよう

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。今回はAI、ビッグデータをテーマにしている第1ユニットです。 今回のテーマはTensorFlowで画像を分類のための簡単なモデルの学習です。

TensorFlowは、機械学習やディープラーニングに広く使用されているオープンソースの機械学習ライブラリです。画像分類などのさまざまなタスクに使用できます。

Python言語を利用したTensorFlowで画像を分類するには、以下の手順を実行します。

  1. TensorFlowをインストールする
pip install tensorflow
  1. データセットを読み込む

この例では、MNISTデータセットを使用します。MNISTデータセットには、手書き数字の60,000枚のトレーニング画像と10,000枚のテスト画像が含まれています。

MNISTデータセットを読み込むには、次のコードを使用します。

import tensorflow as tf

(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()

このコードは、MNISTデータセットを読み込み、トレーニング画像とテスト画像に分割します。

  1. データを前処理する

MNIST画像はグレースケールで、すべて28×28ピクセルのサイズです。モデルをトレーニングする前に、画像を正規化する必要があります。

画像を正規化するには、次のコードを使用します。

train_images = train_images / 255.0
test_images = test_images / 255.0

このコードは、画像の各ピクセルの値を0から1の範囲に正規化します。

  1. モデルを定義する

この例では、シンプルなモデルを使用します。モデルには、畳み込み層と全結合層の2つの層があります。

畳み込み層は、画像から特徴を抽出します。全結合層は、畳み込み層で抽出された特徴に基づいて画像を分類します。

モデルを定義するには、次のコードを使用します。

model = tf.keras.models.Sequential([
  tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
  tf.keras.layers.MaxPooling2D((2, 2)),
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(10, activation='softmax')
])

このコードは、4層からなるモデルを定義します。

  • 最初の層は畳み込み層です。この層は、画像から28x28x32の特徴マップを抽出します。
  • 2番目の層は最大プーリング層です。この層は、特徴マップのサイズを半分に縮小します。
  • 3番目の層は平坦化層です。この層は、特徴マップを1次元のベクトルに変換します。
  • 4番目の層は全結合層です。この層は、特徴ベクトルに基づいて画像を分類します。
  1. モデルをコンパイルする

モデルをコンパイルするには、損失関数、オプティマイザー、指標を指定する必要があります。

損失関数は、モデルがトレーニングデータに対してどれくらいうまく機能しているかを測定するために使用されます。オプティマイザーは、損失関数を最小化するためにモデルの重みを更新するために使用されます。指標は、トレーニングデータとテストデータに対するモデルのパフォーマンスを評価するために使用されます。

モデルをコンパイルするには、次のコードを使用します。

model.compile(loss='sparse_categorical_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])

このコードは、損失関数に「sparse_categorical_crossentropy」を、オプティマイザーに「adam」を、指標に「accuracy」を使用します。

  1. モデルをトレーニングする

モデルをトレーニングするには、以下のコードを実行します。

model.fit(train_images, train_labels, epochs=10)

このコードは、モデルを10エポック(繰り返し)トレーニングします。

  1. モデルを評価する

モデルを評価するには、以下のコードを実行します。

test_loss, test_accuracy = model.evaluate(test_images, test_labels)

print('Test loss:', test_loss)
print('Test accuracy:', test_accuracy)

このコードは、モデルのテストデータに対する精度を計算します。

  1. 予測を行う

新しい画像に対して予測を行うには、以下のコードを実行します。

predictions = model.predict(test_images)

# Print the predictions
print(predictions)

このコードは、モデルがテスト画像に対して行った予測を出力します。

以上、画像認識への第一歩でした。このブログ記事では、TensorFlowを使用した画像分類のモデル学習の基本的な手順をご紹介しました。

技術者ブログ:(OutSystems)Advanced Excelを使ったExcel出力

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

今回のテーマ:『Advanced Excelを使ったExcel出力』

前回はBootStrapを使用してExcelファイルからOutSystemのEntityへデータ取り込みを行う手順をご紹介しましたが、
今回はOutSystems内にある画面データをExcelに出力する方法をご紹介します。

Advanced Excelとは?

OutSystemsに搭載されているForgeコンポーネントのひとつで、
Excelファイルの読み込み・出力、書式設定、グラフ作成等もできるツールです。

Advanced Excel のインストール

Service Studioを起動しBrowse Forgeより”Advanced Excel”で検索してインストールを行います。

モジュールへの参照追加

利用したいモジュールを開き、Manage Dependencies(CTRL+Q)よりAdvanced Excelの要素を必要な分選択しApplyボタンをクリックします。
(今回はWorkbook_Open_BinaryData、WorkSheet_Select、Cell_Write、Workbook_Get_BinaryData、Workbook_Closeを選択しました)

各要素の説明は以下の通りです。

・Workbook_Open_BinaryData …BinaryData型でResource内に配置したExcelを指定しワークブックを開きます

・WorkSheet_Select …ワークブック内のシートを指定します

・Cell_Write…セルを指定し値を書き込みます

・Workbook_Get_BinaryData…ダウンロード用にBinaryData型でExcelファイルデータを取得します

・Workbook_Close…作成したExcelファイルをメモリから解放します

出力用のExcelテンプレートを配置

今回は以下のようなテスト用メンバー表のExcelテンプレートにデータを出力していきます。

モジュールのDataタブ内にあるResourceに用意したテンプレートをインポートします。

Excel出力用のSever Actionの作成

今回はメンバー表とExcel出力用に出力ボタンが表示されている画面を作成しました。

以下のようなExcel出力用のSever Actionを作成します。

各アクションのプロパティは以下の通りです。

・Workbook_Open_BinaryData…Action>BinaryDataにResourceで配置したExcelテンプレートファイルを選択します。

・WorkSheet_Select…Action内でWorkbookを指定、Workbook内のシートの指定をindexかシート名で選択できます。

・Cell_Write…CellRow/CellColumnにそれぞれ出力するセルの行/列番号を、CellValue/CellTypeに出力内容/タイプを入力します。

・Workbook_Get_BinaryData…取得するWorkbookを選択します。

・Workbook_Close…閉じるWorkbookを選択します。

画面上のボタンが押下されるとメンバー表が自動で出力されるようになりました。

注意事項

・Workbook_Closeは忘れずに
OutSystemsドキュメントでは、Excelファイル操作が終了したら必ずCloseするようにとあります。OutSystemsでは自動的にメモリを開放する仕組みがないので、操作が終了したらWorkbook_Closeをしてメモリを開放するようにしてください。

・シート番号やExcel行/列番号は1始まり
WorkSheet_Select でシート番号を指定したり、Cell_Writeで行/列番号を指定したりする際に起点のシート番号や行/列番号は0ではなく1になりますのでご注意ください。

まとめ

今回はAdvanced Excelを使ってOutSystemsからExcelファイルを出力する方法をご紹介いたしました。
前回のBootStrapに加えて、Outsystems上で取り扱っているデータを外部出力したい場面で活用できる機能かと思います。
第2ユニットではこれからもOutSystemsなどのローコードツールを使った技術者ブログを展開していきますのでお楽しみに。

社内勉強会:要件定義について2

前回の勉強会の様子 – 要件定義について

今回の勉強会記事を担当する第0ユニットの「xig」です。

前回は「要件定義」をテーマとして勉強会が開催されました。
今回はその内容を基に後日実施した勉強会の様子の紹介です。

勉強会の流れは、以下の通りです。

①前回「要件定義」を振り返り

②ヒアリング内容を整理するため、業務フローの作成

③振り返り、まとめ


今回の勉強会では、前回勉強会のヒアリング内容を基に、
•要求をかみ砕き、細分化することで実装すべきか内容を洗い出す
•必要な機能、性能などを書き起こす
ということを実施しました。

ヒアリング内容を整理するため、業務フローの作成にチャレンジしていきます。

業務フローとは?

特定の業務に対する作業の流れを示すフロー図のことを指します。. 業務の始まりから終わりまでの間に、誰(どの部署)が何をやるのか、その時に利用するシステムは何か。
そして、その作業順番を図にすることで、それぞれのつながりを示し、業務プロセスを可視化するための図です。

ということで、業務の内容や課題を共有していきます。

こちらが業務フローを実際に作成している様子です。
ホワイトボードに内容を書いていき、
それに対して意見を交えながら業務の流れをまとめました。

業務フローを作成する人は場面ごとに交代で実施しました。
ここでは、サービスに登録するためのお店情報を
どうやって編集するかを整理しようとしているところです。

まとめ

今回の勉強会では業務フローを作成することで、
業務の内容や課題を整理しました。
突然ですが、皆さんは

「QRコードの読み込みをPayPayみたいにピッと支払いをするイメージで」
と聞いてどんなイメージをするでしょうか?

この一言を基に内容を整理した際、
「QRをお店が読むのか、利用者が読むのか」
が結局のところ分からなく、再度確認をする場面がありました。

実際の業務でも今回の勉強会の内容を生かして
整理することでクライアントとの認識齟齬をなくしていき、
クライアントとのレビューに臨んでいきたいですね。(´ºωº`)

それでは、次回の勉強会の記事をお楽しみに!

プログラミング言語「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回する

以上で完了です。

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