1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Power Apps コントロール完全解説】テキスト入力編

1
Last updated at Posted at 2026-09-29

はじめに

こんにちは!

このシリーズでは、Power Appsで使用するコントロールを1つずつ取り上げ、基本的な使い方から各プロパティまで詳しく解説していきます。

クラシックコントロールとモダンコントロールの両方を扱い、

  • どんなコントロールなのか
  • どんな場面で使うのか
  • どんなプロパティがあるのか
  • クラシックとモダンで何が違うのか
  • 実務ではどのように使えるのか

まで、実際の設定例やPower Fxを交えながら紹介します。

「このプロパティ、何に使うんだっけ?」

そんなときにも振り返れる、Power Appsのコントロール辞典のようなシリーズを目指していきます。

それでは、今回のコントロールを見ていきましょう!

🏷️ 今回のコントロール:テキスト入力

今回紹介するのは、テキスト入力(Text input)コントロールです。

テキスト入力は、ユーザーから文字や数値などを入力してもらうために使用するコントロールです。

例えば、

  • 氏名
  • メールアドレス
  • 検索キーワード
  • 備考
  • コメント
  • 申請理由

など、ユーザーが自由に値を入力する場面で使用します。

入力フォームだけでなく、検索ボックスや入力チェックなどでも使用するため、Power Appsでは非常によく登場するコントロールの1つです。

ユーザーが入力した値は、Textプロパティから取得できます。

例えば、txtUserNameというテキスト入力に入力された値を取得する場合は、

txtUserName.Text

と記述します。

💡 POINT

今回のプロパティ一覧は、Power Apps Studioの「詳細設定」に実際に表示されているプロパティを掲載しています。

Textは入力された現在の値を取得するときに使用する重要な出力プロパティですが、今回確認した「詳細設定」の一覧には表示されていないため、プロパティ一覧には追加していません。

💡 まずはこれだけ覚えよう

テキスト入力を使用するときは、まず次のプロパティを覚えておくとよいでしょう。

内容 クラシック モダン
入力値を取得する Text Text
初期値を指定する Default Default
入力例を表示する HintText Placeholder
入力形式を変更する Mode Type
編集可否を変更する DisplayMode DisplayMode
表示・非表示を変更する Visible Visible
高さを指定する Height Height
幅を指定する Width Width
横方向の位置を指定する X X
縦方向の位置を指定する Y Y

例えば、氏名入力欄の値が入力されているか確認する場合は、次のように記述できます。

IsBlank(Trim(txtUserName.Text))

Trimを組み合わせることで、スペースだけが入力されている場合も未入力として判定しやすくなります。

🎨 クラシックとモダン

テキスト入力には、クラシックコントロールとモダンコントロールがあります。

基本的な役割はどちらも同じですが、一部のプロパティ名や機能が異なります。

代表的な違いは次のとおりです。

内容 クラシック モダン
入力例の表示 HintText Placeholder
入力形式 Mode Type
入力値の反映タイミング DelayOutput TriggerOutput
検索用の入力形式 なし TextInputType.Search
必須入力の指定 個別に実装 Required
検証状態の表示 個別に実装 ValidationState
外観の指定 個別のデザインプロパティ Appearanceなど

クラシックは、枠線やホバー時の色などを細かく設定できるプロパティが多いのが特徴です。

一方、モダンではTypeやTriggerOutput、Required、ValidationStateなど、入力コントロールとしての機能が整理されています。

🧱 クラシック:テキスト入力

クラシックのテキスト入力は、従来からPower Appsで使用されているテキスト入力コントロールです。
image.png
image.png

入力値は、次のように.Textで取得します。

TextInput1.Text

基本的な使い方

例えば、氏名を入力するテキスト入力を配置し、コントロール名を次のように変更します。

txtUserName

入力された氏名を取得する場合は、

txtUserName.Text

と記述します。

ラベルのTextに設定すると、ユーザーが入力した内容をそのまま表示できます。

txtUserName.Text

また、最初から値を表示しておきたい場合はDefaultを使用します。

User().FullName

これにより、コントロールが初期表示されたときにログインユーザーの表示名を表示できます。

User().FullNameで取得される表示名は、Microsoft 365側のユーザー情報の設定によって異なります。

📚 クラシック:プロパティ一覧

使用頻度の見方

各プロパティについて、一般的なアプリ開発での使用頻度を3段階で表しています。

評価 使用頻度
★★★ 非常によく使う
★★☆ よく使う
★☆☆ 使用する機会は少ない

使用頻度はMicrosoft公式による評価ではありません。
一般的なPower Appsのアプリ開発を想定した、本記事独自の目安です。

⚙️ アクション

プロパティ 内容 使用頻度
OnChange 入力値が変更されたときに実行する処理を指定する ★★☆
OnSelect コントロールが選択されたときに実行する処理を指定する ★☆☆

🗃️ データ

プロパティ 内容 使用頻度
AccessibleLabel スクリーンリーダーで読み上げる説明を指定する ★★☆
ContentLanguage コントロール内のコンテンツの言語を指定する ★☆☆
Default 初期表示する値を指定する ★★★
DelayOutput 入力値を数式へ反映するタイミングを遅延させるか指定する ★★☆
HintText 入力欄が空の場合に表示する案内文を指定する ★★★
MaxLength 入力できる最大文字数を指定する ★★☆
Reset コントロールを既定値へ戻すか指定する ★★☆
Tooltip マウスポインターを合わせたときに表示する説明を指定する ★☆☆

🎨 デザイン

プロパティ 内容 使用頻度
Align 入力文字の水平方向の配置を指定する ★★☆
BorderColor 枠線の色を指定する ★★☆
BorderStyle 枠線の種類を指定する ★☆☆
BorderThickness 枠線の太さを指定する ★★☆
Clear 入力内容を消去するためのクリアボタンを表示するか指定する ★★☆
Color 入力文字の色を指定する ★★☆
DisabledBorderColor 無効時の枠線の色を指定する ★☆☆
DisabledColor 無効時の文字色を指定する ★☆☆
DisabledFill 無効時の背景色を指定する ★☆☆
DisplayMode 編集・表示・無効の状態を指定する ★★★
EnableSpellCheck ブラウザーのスペルチェックを使用するか指定する ★☆☆
Fill 背景色を指定する ★★☆
FocusedBorderColor フォーカス時の枠線の色を指定する ★☆☆
FocusedBorderThickness フォーカス時の枠線の太さを指定する ★☆☆
Font フォントを指定する ★★☆
FontWeight 文字の太さを指定する ★★☆
Format 入力をテキストまたは数値として扱う形式を指定する ★★☆
Height コントロールの高さを指定する ★★★
HoverBorderColor ホバー時の枠線の色を指定する ★☆☆
HoverColor ホバー時の文字色を指定する ★☆☆
HoverFill ホバー時の背景色を指定する ★☆☆
Italic 文字を斜体にするか指定する ★☆☆
LineHeight 行間を指定する ★☆☆
Mode 1行・複数行・パスワードなどの入力形式を指定する ★★★
PaddingBottom 下側の余白を指定する ★★☆
PaddingLeft 左側の余白を指定する ★★☆
PaddingRight 右側の余白を指定する ★★☆
PaddingTop 上側の余白を指定する ★★☆
PressedBorderColor 押下時の枠線の色を指定する ★☆☆
PressedColor 押下時の文字色を指定する ★☆☆
PressedFill 押下時の背景色を指定する ★☆☆
RadiusBottomLeft 左下の角丸を指定する ★★☆
RadiusBottomRight 右下の角丸を指定する ★★☆
RadiusTopLeft 左上の角丸を指定する ★★☆
RadiusTopRight 右上の角丸を指定する ★★☆
Size 文字サイズを指定する ★★☆
Strikethrough 文字に取り消し線を表示するか指定する ★☆☆
TabIndex キーボード操作時のフォーカス順序を指定する ★☆☆
Underline 文字に下線を表示するか指定する ★☆☆
VirtualKeyboardMode タッチ端末で表示する仮想キーボードの種類を指定する ★☆☆
Visible コントロールを表示するか指定する ★★★
Width コントロールの幅を指定する ★★★
X コントロールのX座標を指定する ★★★
Y コントロールのY座標を指定する ★★★

🔍 クラシック:主要プロパティを詳しく見てみよう

ここでは、使用頻度を★★★としたプロパティについて詳しく見ていきます。

Default

Defaultは、テキスト入力に初期表示する値を指定するプロパティです。

image.png

固定値を設定する

"山田 太郎"

ログインユーザーの表示名を設定する

User().FullName

選択したデータを表示する

例えば、ギャラリーで選択したレコードのTitleを表示する場合は、

Gallery1.Selected.Title

と設定できます。

また、Reset関数などによってテキスト入力をリセットすると、Defaultに設定されている値へ戻ります。

Reset(txtUserName)

💡 POINT

Defaultは単なる初期表示値ではなく、コントロールをリセットしたときの戻り先としても使用されます。

HintText

HintTextは、入力欄が空の場合に表示する案内文を指定するプロパティです。

image.png
image.png

例えば、

"氏名を入力してください"

や、

"例:山田 太郎"

のように設定します。

HintTextはあくまで入力を補助するための表示であり、実際の入力値には含まれません。

例えば、ユーザーが何も入力していない場合、

txtUserName.Text

からHintTextの内容が取得されるわけではありません。

💡 POINT

HintTextだけで項目名を表現すると、入力後にその項目が何だったのか分かりにくくなる場合があります。

項目名はラベルなどで常に表示し、HintTextは入力例や補足として使用すると分かりやすくなります。

DisplayMode

DisplayModeは、テキスト入力を編集できるかどうかを指定するプロパティです。

image.png

主に次の値を使用します。

値 内容
DisplayMode.Edit ユーザーが編集できる
DisplayMode.View 表示のみで編集できない
DisplayMode.Disabled 無効状態にする

例えば、編集モードの場合だけ入力できるようにする場合は、

If(
    glbIsEdit,
    DisplayMode.Edit,
    DisplayMode.View
)

と設定できます。

申請済みや承認済みのデータを編集させたくない場合など、業務アプリではよく使用します。

Height

Heightは、テキスト入力コントロールの高さを指定するプロパティです。

image.png

例えば、

40

と設定すると、高さが40になります。

画面サイズや他のコントロールに応じて動的に変更することもできます。

Parent.Height * 0.08

複数行入力のテキスト入力では、入力しやすい高さを確保するためにも重要なプロパティです。

Mode

Modeは、テキスト入力の入力形式を指定するプロパティです。

image.png

主に次の3種類があります。

値 内容
TextMode.SingleLine 1行入力にする
TextMode.MultiLine 複数行入力にする
TextMode.Password 入力文字をマスクして表示する

1行入力

氏名やメールアドレスなどでは、

TextMode.SingleLine

を使用します。

image.png

複数行入力

備考やコメントなどでは、

TextMode.MultiLine

を使用します。

image.png

パスワード入力

入力した文字を画面上で見えにくくする場合は、

TextMode.Password

を使用します。

image.png

TextMode.Passwordは入力した文字をマスクして表示するための機能です。

Power Fx内にパスワードを直接記述したり、入力された値を固定文字列と比較して独自の認証機能を作成したりする用途には適していません。

Visible

Visibleは、テキスト入力を表示するかどうかを指定するプロパティです。

image.png

true

の場合は表示され、

false

の場合は非表示になります。

例えば、ドロップダウンで「その他」が選択された場合のみ、詳細入力欄を表示する場合は、

Dropdown1.Selected.Value = "その他"

のように設定できます。

条件によって入力項目を切り替えるフォームでは、特によく使用するプロパティです。

Width

Widthは、テキスト入力コントロールの幅を指定するプロパティです。

image.png

例えば、

320

と設定すると、幅が320になります。

親コントロールの幅に合わせて調整する場合は、

Parent.Width - 40

のように指定できます。

レスポンシブな画面やコンテナー内でコントロールサイズを調整する場合にもよく使用します。

X

Xは、テキスト入力コントロールの横方向の位置を指定するプロパティです。

image.png

例えば、

20

と設定すると、親要素の左端から20の位置に配置されます。

別のコントロールの右側に配置する場合は、

Label1.X + Label1.Width + 10

のように設定できます。

💡 POINT

XやYに他のコントロールの位置やサイズを利用すると、コントロール同士の位置関係を保ったレイアウトを作成できます。

Y

Yは、テキスト入力コントロールの縦方向の位置を指定するプロパティです。

image.png

例えば、

100

と設定すると、親要素の上端から100の位置に配置されます。

別のコントロールの下に配置する場合は、

Label1.Y + Label1.Height + 10

のように指定できます。

✨ モダン:テキスト入力

モダンのテキスト入力も、ユーザーから文字を入力してもらうためのコントロールです。
image.png
image.png
基本的な使用方法はクラシックと同じで、入力された値は.Textで取得できます。

TextInput2.Text

一方で、クラシックのHintTextがPlaceholderになっていたり、ModeがTypeになっていたりするなど、プロパティ構成には違いがあります。

また、モダンでは、

  • Required
  • TriggerOutput
  • ValidationState
  • Appearance

などのプロパティが用意されています。

📚 モダン:プロパティ一覧

⚙️ アクション

プロパティ 内容 使用頻度
OnChange 入力値が変更されたときに実行する処理を指定する ★★☆

🗃️ データ

プロパティ 内容 使用頻度
AccessibleLabel スクリーンリーダーで読み上げる説明を指定する ★★☆
ContentLanguage コントロール内のコンテンツの言語を指定する ★☆☆
Default 初期表示する値を指定する ★★★
MaxLength 入力できる最大文字数を指定する ★★☆
Placeholder 入力欄が空の場合に表示する案内文を指定する ★★★
Required 入力を必須とするか指定する ★★☆
TriggerOutput 入力値を数式へ反映するタイミングを指定する ★★★
Type テキスト入力の入力形式を指定する ★★★
ValidationState コントロールの検証状態を指定する ★★☆

🎨 デザイン

プロパティ 内容 使用頻度
Align 入力文字の水平方向の配置を指定する ★★☆
Appearance コントロールの外観スタイルを指定する ★★☆
BasePaletteColor コントロールの基本となるテーマカラーを指定する ★★☆
BorderColor 枠線の色を指定する ★★☆
BorderStyle 枠線の種類を指定する ★☆☆
BorderThickness 枠線の太さを指定する ★★☆
Color 入力文字の色を指定する ★★☆
DisplayMode 編集・表示・無効の状態を指定する ★★★
Fill 背景色を指定する ★★☆
Font フォントを指定する ★★☆
FontWeight 文字の太さを指定する ★★☆
Height コントロールの高さを指定する ★★★
Italic 文字を斜体にするか指定する ★☆☆
PaddingBottom 下側の余白を指定する ★★☆
PaddingLeft 左側の余白を指定する ★★☆
PaddingRight 右側の余白を指定する ★★☆
PaddingTop 上側の余白を指定する ★★☆
RadiusBottomLeft 左下の角丸を指定する ★★☆
RadiusBottomRight 右下の角丸を指定する ★★☆
RadiusTopLeft 左上の角丸を指定する ★★☆
RadiusTopRight 右上の角丸を指定する ★★☆
Size 文字サイズを指定する ★★☆
Strikethrough 文字に取り消し線を表示するか指定する ★☆☆
Underline 文字に下線を表示するか指定する ★☆☆
Visible コントロールを表示するか指定する ★★★
Width コントロールの幅を指定する ★★★
X コントロールのX座標を指定する ★★★
Y コントロールのY座標を指定する ★★★

🔍 モダン:主要プロパティを詳しく見てみよう

モダンのテキスト入力で使用頻度を★★★としたプロパティのうち、

  • Default
  • DisplayMode
  • Height
  • Visible
  • Width
  • X
  • Y

については、基本的な使い方はクラシックコントロールと同様です。

そのため、ここではモダンで名称や機能が異なるプロパティを中心に確認します。

Placeholder

Placeholderは、入力欄が空の場合に表示する案内文を指定するプロパティです。

image.png

クラシックのHintTextに相当します。

"氏名を入力してください"

入力例を表示する場合は、

"例:山田 太郎"

のように設定できます。

Placeholderも実際の入力値には含まれません。

そのため、入力欄にPlaceholderが表示されている状態でも、

IsBlank(TextInput2.Text)

では空として扱われます。

TriggerOutput

TriggerOutputは、ユーザーが入力した内容をText出力へ反映するタイミングを指定するプロパティです。

image.png

主に次の値があります。

値 内容
TriggerOutput.Keypress キー入力ごとに値を反映する
TriggerOutput.FocusOut コントロールからフォーカスが外れたときに値を反映する
TriggerOutput.Delayed 入力後、少し遅延して値を反映する

Keypress

TriggerOutput.Keypress

入力するたびに値を反映します。

入力内容に応じてリアルタイムに表示内容を変えたい場合などに使用できます。

FocusOut

TriggerOutput.FocusOut

ユーザーが入力を終え、別のコントロールへ移動したタイミングで値を反映します。

入力途中の値をすぐに他の数式へ反映する必要がない場合に使用できます。

Delayed

TriggerOutput.Delayed

入力後に少し待ってから値を反映します。

検索ボックスの入力値を使ってデータを絞り込む場合など、キー入力のたびに処理を反映したくない場合に便利です。

💡 POINT

TriggerOutputは、OnChangeを実行するタイミングを設定するプロパティではありません。

Textとして出力される値を、依存する数式へいつ反映するかを制御するプロパティです。

Type

Typeは、テキスト入力の入力形式を指定するプロパティです。

image.png

主に次の値があります。

値 内容
TextInputType.SingleLine 1行入力にする
TextInputType.Multiline 複数行入力にする
TextInputType.Password 入力文字をマスクする
TextInputType.Search 検索用の入力欄にする

1行入力

TextInputType.SingleLine

氏名やメールアドレスなど、通常の入力欄で使用します。

複数行入力

TextInputType.Multiline

備考やコメントなど、長い文章を入力する場合に使用します。

パスワード入力

TextInputType.Password

入力内容を画面上でマスクして表示します。

検索入力

TextInputType.Search

検索用の入力欄として使用できます。

クラシックのModeには検索専用の種類がないため、Searchを選択できる点はモダンの特徴の1つです。

🤔正直1行入力との違いは今のところほぼありません...

⚖️ クラシックとモダンの違い

クラシックとモダンの代表的な違いをまとめると、次のようになります。

内容 クラシック モダン
現在の入力値 Text Text
初期値 Default Default
入力案内 HintText Placeholder
入力形式 Mode Type
1行入力 TextMode.SingleLine TextInputType.SingleLine
複数行入力 TextMode.MultiLine TextInputType.Multiline
パスワード入力 TextMode.Password TextInputType.Password
検索用入力 なし TextInputType.Search
入力値の反映調整 DelayOutput TriggerOutput
必須入力 個別に判定 Requiredを利用可能
検証状態 個別に表現 ValidationStateを利用可能
外観 個別のデザイン設定が多い Appearanceやテーマ設定を利用可能

特に大きな違いは、モダンではTriggerOutputによって値を反映するタイミングを細かく選択できる点です。

クラシックのDelayOutputは、

true

または、

false

で遅延させるかどうかを指定します。

一方、モダンでは、

TriggerOutput.Keypress
TriggerOutput.FocusOut
TriggerOutput.Delayed

のように、用途に応じて反映タイミングを選択できます。

🛠️ 実務で使える活用例

① 検索ボックスとして使用する

テキスト入力は、ギャラリーなどの検索条件としてよく使用します。

例えば、CustomersというデータソースのTitle列を検索する場合は、ギャラリーのItemsに次のように設定できます。

Filter(
    Customers,
    StartsWith(
        Title,
        txtSearch.Text
    )
)

ユーザーが検索文字を入力すると、その値を使ってギャラリーを絞り込めます。

モダンコントロールでリアルタイムに検索したい場合は、

TriggerOutput.Keypress

を使用できます。

一方、入力のたびに検索結果を反映したくない場合は、

TriggerOutput.Delayed

を使用する方法もあります。

クラシックの場合は、DelayOutputを使用して入力値の反映を遅延させることができます。

② 必須入力をチェックする

入力欄が空の場合に登録ボタンを無効にする場合は、登録ボタンのDisplayModeに次のように設定できます。

If(
    IsBlank(Trim(txtUserName.Text)),
    DisplayMode.Disabled,
    DisplayMode.Edit
)

これにより、氏名が入力されるまで登録ボタンを押せないようにできます。

ただし、ボタンを無効にするだけでは「なぜ押せないのか」がユーザーに伝わらない場合があります。

必要に応じて、エラーメッセージも表示すると分かりやすくなります。

If(
    IsBlank(Trim(txtUserName.Text)),
    "氏名を入力してください",
    ""
)

③ 入力文字数を表示する

備考欄やコメント欄では、入力できる文字数に制限を設けることがあります。

例えば、MaxLengthを、

500

に設定します。

さらにラベルのTextに、

Len(txtComment.Text) & " / 500文字"

と設定すると、

125 / 500文字

のように現在の入力文字数を表示できます。

ユーザーがあと何文字入力できるのか分かりやすくなるため、長文入力欄では便利です。

④ Patchでデータを登録する

テキスト入力の値は、Patchなどでデータソースへ登録できます。

例えば、Customersへ氏名を登録する場合は、

Patch(
    Customers,
    Defaults(Customers),
    {
        Title: txtUserName.Text
    }
)

のように記述します。

入力値を取得するときは、

txtUserName.Text

のように.Textを参照します。

⑤ 入力内容を初期状態へ戻す

テキスト入力を初期状態へ戻したい場合は、Reset関数を使用できます。

Reset(txtUserName)

実行すると、テキスト入力はDefaultで指定されている値へ戻ります。

登録完了後に入力欄をクリアしたい場合などに使用できます。

例えば、Defaultが空文字の場合は、

""

リセット後も空の状態になります。

⚠️ テキスト入力を使うときのポイント

項目名をPlaceholderだけで表現しない

クラシックのHintTextやモダンのPlaceholderは、入力内容を案内するために便利です。

しかし、

[ 氏名を入力してください ]

のように入力欄だけを配置すると、ユーザーが文字を入力した後に「何を入力する項目だったのか」が分かりにくくなる場合があります。

そのため、

氏名
[ 例:山田 太郎 ]

のように、項目名はラベルなどで常に表示し、HintTextやPlaceholderは入力例や補足として使用すると分かりやすくなります。

保存先の文字数制限を意識する

保存先の列に文字数制限がある場合は、テキスト入力側でもMaxLengthを設定しておくと、入力時点で制限できます。

保存時になって初めてエラーになるよりも、ユーザーにとって分かりやすい画面になります。

OnChangeに重い処理を詰め込みすぎない

OnChangeには、入力内容が変更された後に実行する処理を設定できます。

ただし、入力コントロールの変更をきっかけに、

  • 大量のデータ更新
  • 複雑な検索
  • 複数のデータソースへの処理

などを実行すると、操作感に影響する場合があります。

入力値を利用する処理では、クラシックのDelayOutputやモダンのTriggerOutputも含めて設計するとよいでしょう。

パスワードモードを認証機能として使用しない

TextMode.PasswordやTextInputType.Passwordは、入力文字を画面上で見えにくくするための機能です。

Power Fxにパスワードを直接記述して、

txtPassword.Text = "password123"

のように独自の認証機能を作る設計は避けた方がよいでしょう。

認証が必要な場合は、Microsoft Entra IDなど適切な認証の仕組みを使用します。

📝 まとめ

今回は、テキスト入力コントロールについて紹介しました。

テキスト入力は、

  • 氏名やメールアドレスの入力
  • 備考やコメントの入力
  • 検索ボックス
  • 必須入力チェック
  • データ登録

など、Power Appsのさまざまな場面で使用します。

入力された値を取得するときは、

TextInput1.Text

のように.Textを使用します。

また、クラシックでは、

  • Default
  • HintText
  • DisplayMode
  • Height
  • Mode
  • Visible
  • Width
  • X
  • Y

モダンでは、

  • Default
  • Placeholder
  • TriggerOutput
  • Type
  • DisplayMode
  • Height
  • Visible
  • Width
  • X
  • Y

が、本記事で使用頻度を★★★とした主要なプロパティです。

クラシックとモダンでは基本的な役割は同じですが、HintTextとPlaceholder、ModeとType、DelayOutputとTriggerOutputなど、名称や機能に違いがあります。

それぞれの特徴を理解し、用途に合った設定を使い分けていきましょう。

今後も、Power Appsで使用するコントロールを1つずつ取り上げ、「このプロパティ何だっけ?」というときに振り返れる記事としてまとめていきます。

最後まで読んでいただき、ありがとうございました!

この記事が、Power Apps開発者の皆様に少しでもお役に立てていれば幸いです。

もし、記事の内容に間違いがある場合はご指摘ください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?