見出し画像

プログラム初心者が”DEV.LAB"を受講してどこまで成長できるかの記録 その13【第12章 正規表現・デバックについて】【ユーザー体験】

DEV.LAB受講生のayakaです:)
今回は第12章 正規表現・デバックについてです。
こちらが最後の章となります。

授業ポイントノート

正規表現について

正規表現とは、 あやふやな文字列やあやふやな部分のある文字列からルールを見つけ出し パターンで表現したもののことを言います。 例えば、W(INDOWS|indows)(7|8(.1)?10) というものを見つけ出す正規表現のパターンで

という文字列の中から背景色(黄色)の文字列が検索対象となります。

正規表現の使い道としては
- サクラエディタやEclipse といったエディターでまとめて検索するときに
- テキストや置換など編集するときに
- プログラムの入力フォームの入力チェックをするときに

正規表現の考え方は
① 文字列のどこに定めるのか
②    定まっていないところはどのように変化するのか
③    上記を正規表現で表現する

正規表現の考え方の例として以下のように表します。

DEV.LAB授業スライドより

正規表現で使われる記号は、テキストパターンを検索や置換する際に使用される特殊な文字です。以下は正規表現の記号ごとに使い方の説明をしていきます。

①  [ . ] (ドット):ドットは任意の一文字を表します。
例えば、'a.b' という正規表現は、'aab'や'acb' といった文字列にマッチします。

DEV.LAB授業スライドより

② [ ^ ](キャレット):キャレットは、行の先頭にマッチすることを表しています。例えば、'^abc' という正規表現は 'abc' という文字列が行の先頭にある場合にマッチします。

DEV.LAB授業スライドより

③ [ $ ](ダラー):ダラーは行の末尾にマッチすることを表します。例えば、'abc$' という正規表現は 'abc' という文字列が行の松尾にある場合にマッチします。

DEV.LAB授業スライドより

④ [ ^$ ](キャラットとダラーを組み合わせたとき):それぞれの行の先頭と末尾を表しており、この2つの文字を組み合わせることで、正確に一致する文字列を表現することができます。例えば、'^hello$' という正規表現は、文字列が 'hello' の場合のみマッチします。つまり、行の先頭が 'hello' で、末尾が 'hello' の場合にだけマッチするということになります。

DEV.LAB授業スライドより

⑤ [ * ] (アスタリスク):直前の文字やグループが0回以上繰り返されうことを表します。例えば、'ab*c' という正規表現は、'ac'や 'abc' 、'abbbc' といった文字列にマッチします。

DEV.LAB授業スライドより

⑥ [ + ](プラス):プラスは、直前の文字やグループが1回以上繰り返されることを表します。例えば、'ab+c' という正規表現は、'abc' や 'abbbc' といった文字列にマッチします。

DEV.LAB授業スライドより

⑦ [ ? ] (クエスチョン):クエスチョンは直前の文字やグループが0回または1回現れることを表します。要するに、直前の文字があってもなくてもマッチします。例えば、'ab?c' という正規表現は、'ac'  や 'abc' といった文字列にマッチします。

DEV.LAB授業スライドより

⑧  [ { n } ](ブレース):ブレースは、直前の文字やグループの繰り返し回数を指定するために使用されます。例えば、'a{3}' という正規表現は、
' aaa ' といった文字列にマッチします。また、'a{1,3}' という正規表現は
'a' 、'aa' 、'aaa' といった文字列にマッチします。

DEV.LAB授業スライドより

⑨ [ { n,} ](ブレースとカンマの組み合わせ):直前のパターンが少なくとも 'n'回以上繰り返されることを表します。例えば、'a{2,}' という正規表現は、'a' の後に少なくとも2回以上 'a' が続く文字列にマッチします。' a ' が2回続く場合、( 'aa' ) や3回以上続く場合、( 'aaa'、'aaaa' 、など) にマッチしますが、1回だけの場合はマッチしません。

DEV.LAB授業スライドより

⑩  [ { n,m} ]:直前のパターンが少なくとも、'n' 回以上、最大で'm'回まで繰り返されることを表します。例えば、'a{2,4}' という正規表現は、'a'の後に2回以上4回以下 'a' が続く文字列にマッチします。
'aa' 、'aaa' 、'aaaa' のような文字列にマッチしますが、
'a' または 'aaaaa' のような文字列にはマッチしません。

DEV.LAB授業スライドより

11  [ [-] ](ブランケットの中にハイフン):[ ] の範囲内の1文字にマッチします。例えば、'[a-z]' という正規表現は 'a' から 'z' までの全ての小文字にマッチしますが、'[a-d]' という正規表現は、'a' から 'd'までの小文字にマッチします。'[0-9]'は、数字の範囲にマッチするためによく使用されます。

DEV.LAB授業スライドより
DEV.LAB授業スライドより

数字以外の範囲の表し方は以下のようになります。

DEV.LAB授業スライドより

12 [ ](パイプ):パイプは、いずれかの文字列にマッチすることを表します。例えば、'a|b'という正規表現は、'a' や 'b' といった文字列にマッチします。

DEV.LAB授業スライドより

13 [ (   ) ](括弧):括弧はグループ化を表します。また指定した文字列にマッチします。例えば、'(ab)+' という正規表現は、'ab' や 'abab'といった文字列にマッチします。

DEV.LAB授業スライドより

下記はよく使う定義済み正規表現になります。

DEV.LAB授業スライドより

上記でお伝えした正規表現を複数しようし検索や入力チェックを行っていきます。
実務での使用例として、以下のように電話番号やメールアドレス、クレジットカードの番号などの入力チェックに使用されます。

DEV.LAB授業スライドより

デバッグ

デバッグとは、バグを調査、修正する作業のことを指します。
※バグとはプログラムが想定通りに動かない原因となる処理

Eclipseでのデバッグについて
デバッグモードを使用します。
特定の処理が実行される手前でプログラムを一時停止することで、
一つ一つの処理を実行していきます。
デバッグモードの操作手順は以下のようになります

DEV.LAB授業スライドより

次にデバッグモードの各操作手順を詳しく説明していきます。
① ソースコードの中で一時停止したい処理を指定する
Eclipseでは、ブレークポイントを設定することで、プログラムの実行を一時停止させ、実行中に変数の値やプログラムのステップを確認することができます。複数箇所作成でき、処理の流れを想定し、バグが発生しような処理に指定します。

DEV.LAB授業スライドより

②デバッグモードでプログラムを実行する
⑴デバッグボタンを押す

DEV.LAB授業スライドより


⑵デバッグ・パースペクティブを表示する

DEV.LAB授業スライドより

③一文ずつ処理を実行する
⑴一時停止している処理を確認する

DEV.LAB授業スライドより

⑵ステップ・オーバー(F6)などで一文ずつ処理を実行する

DEV.LAB授業スライドより

下記はデバッグの一時停止中の次の処理への進め方の紹介です。

DEV.LAB授業スライドより

④ 実行結果を確認する
⑴変数の値を確認する

DEV.LAB授業スライドより

「変数」ビューが画面に見えない場合、以下の方法を行ってみてください。

⑤デバッグモードを終了する
終了ボタンをクリックする

DEV.LAB授業スライドより

⑥バグを修正し、再度デバッグモードでバグの確認を行う

デバッグモードを活用することで特定の処理を実行した後に、変数にどのような値が代入されるか、各処理が想定通りの流れで実行されているか確認できるようになります。Eclipseは、豊富なデバッグ機能を備えており、開発者にとって非常に便利なツールとなっています。
処理が正常に終了していたとしても、バグがなくても、コードを触ったら必ずデバッグで想定している動きをしているか必ず確認するようにしましょう。単体試験で確認するからと、デバッグにて確認せずに完了報告すると、開発スキルを疑われる原因にもなります。

まとめ

正規表現を使うことで、効率的に文字列を操作することができますが、デバッグをしっかり行い、正確なパターンを作成することが重要です。
この12章でJavaとプログラミングに関する基本的な授業は完了します。
1章からここまで学んだことを活かして、ついに実践演習となります。
実践演習では、実際の現場を想定した上でプログラミングを行なっていくので、いざ現場に出た時に、スムーズに業務を遂行していくことができるようにトレーニングを行なっていきます。

私が通っているDEV.LAB(ディラボ)とは…
”一生使えるスキルを学ぶ”ことができる 未経験から現場での活躍を目指す
超実践OJT開発型をおこなっているプログラミングスクールです。
Java × Springを現役エンジニアから学ぶことができ充実したサポートもあります。

この記事が気に入ったらサポートをしてみませんか?