Androidの文字入力スピードが5倍以上になる14のテクニック

以下記事の Gboard - Android 版です。

👉 iPhoneの文字入力スピードが5倍以上になる14のテクニック [iPhone] All About 
👉 iPhoneの文字入力スピードが「5倍以上」になる14のテクニック(All About) - Yahoo!ニュース 

同じ操作や機能が、Androidでどのように実装されているか確認してみましょう。

 

1. カーソルを自由自在に動かす


[...] - [テキスト編集]


または、


[◀][▶]キーの長押しから上下左右

でも移動することが可能です。上下左右のインジケーターが表示されます。

👉 Gboard 日本語 12キー 左右のカーソルキーを使ってすばやく上下移動する方法 

 

2. 3本指のピンチでコピー・ペーストが可能

iPhone や mac のような、3本指のピンチアウト・イン操作でのコピペはできません。

代わりに「クリップボード履歴」とかはあります。


[クリップボード]



使い方は、クリップボード内にヒントとして以下のように書かれています。

- コピーしたテキストはここに保存されます。
- クリップをタップすると、テキストボックスに貼り付けられます。
- クリップを長押しするとクリップが固定されます。固定を解除したクリップは1時間後に削除されます。
- 編集アイコンで、クリップを固定、追加、削除します。

 

3. 3本指を左にスワイプで直前の動作を取り消す

すべての動作を戻ることはできないが、変換は左上矢印で無変換状態に戻れる。

 

4. 連続タップで単語・文・段落を瞬時に選択できる

Androidでは、


「長押し」から左右のつまみをスワイプ

つまみは、外方向で「単語」ごとに選択範囲拡張、内方向で「文字」ごとに選択範囲縮小。

 

5. 選択した漢字の再変換ができる

できない。と思う。

 

6. ダブルタップ→スライドで素早く範囲選択できる


対象の文字を[長押し]してスライド

です。スライドしている間は、虫眼鏡で拡大表示されます。


 

7. 「や」の横フリックでカッコを素早く入力できる

Androidも同じ。


[や]のフリックでカッコ


あと、


[8]のフリックで「〒」「々」「〆」

 

8. 地球儀マークの長押しでキーボードを素早く切り替える

Androidでも同じく「地球儀マーク」や「スペース」の長押しでキーボード変更のダイアログから切り替えです。


「地球儀マーク」や「スペース」長押し


👉 顔文字パック キーボード - Google Play のアプリ 
👉 Android 端末 キーボード切り替え方法あれこれ 

 

9. キーボードを左右どちらかに寄せる


[...] - [片手モード]


同様に「フローティング」させることも可能です。

 

10. アルファベットの大文字を連続して入力できる


左下「⇑」長押しで大文字モード

 

11. ユーザ辞書を使って定型文を呼び出す

12. ユーザー辞書に顔文字を登録する

単語の登録は、


[歯車]-[単語リスト]

から登録や編集可能です。


または、以下のようなアプリを使って顔文字や絵文字、定型文など簡単に登録することもできます。

👉 顔文字パック 単語リスト - Google Play のアプリ 
👉 顔文字/絵文字辞書 単語リスト - Google Play の Android アプリ 

 

13. 日付や住所は予測変換を活用すると超スピード


いま

きょう

きのう/さくじつ

おととい/いっさくじつ

さきおととい

あした/あす

あさって/みょうごにち

しあさって

「2015」と入力して「20時15分」

私は、「きょう」や「いま」をよく使います。

 

14. あいまいな英単語は日本語からの変換がおすすめ

iPhoneと同様に、ひらがなで入力すれば候補に表示されます。

 

まとめ

ホントに「入力スピードが5倍以上になる」か分かりませんが、Android - Google Gboard でもほぼ似たようなことはできるようです。

👉 「Google Gboard」に関する記事 


【Android Studio】矢印キー(カーソルキー) を使わない排除したキーマップ【macOS】

できれば、カスタムせずにデフォルトのままで自分側を対応させたかったmacOSキーマップ。

コロナの影響かなんとなくショートカットでイライラしすぎなので、少し考えて整理してみようと思いました。


👉 キーボード ショートカット  |  Android デベロッパー  |  Android Developers 


👉 Android Studio/IDEA Default Keymap 

 

カーソルキーが問題では?

きっとこれです。どの指で触るかさえ悩んでしまうカーソルキー。

小指以外で触れば、ホームポジションから指が離れてしまう。

👉 スラドに聞け:矢印キーの押し方は | スラド Slashdotに聞け 

カーソルキーを使うショートカットを眺めます。

Android Studio - macOS keymap

うーん、カーソルキーを使うショートカット自体は少ないが...

 

カーソルキーを使う操作

実際のカーソルキーを使う操作を考えてみると、以下の3つ。


- カーソルの移動

- テキストの選択/解除

- カーソルキーを利用したショートカット

それぞれ見ていきます。

 

カーソルの移動

EmacsやMac上のアプリでは、カーソルキーを利用することなくカーソル位置を自在に動かすことができます。


⌃(Control) + p : 1行上に移動 (↑)

⌃(Control) + n : 1行下に移動 (↓)

⌃(Control) + f : 1文字前に移動 (→)

⌃(Control) + b : 1文字後に移動 (←)

また、テキストの選択に非常に便利な、以下の2つのショートカットもデフォルトですぐに利用することができます。


⌃(Control) + a : 行の先頭に移動

⌃(Control) + e : 行の末尾に移動

👉 Mac のキーボードショートカット - Apple サポート 

 

テキストの選択/解除

Emacs でいうところの「Mark-Set」、AndroidStudio 上での macOS キーマップでいうところのアクション「Toggle Sticky Selection」を使うことで選択範囲の開始です。ショートカットの「⌃(Control) + space」に上書きして使います。

選択範囲を開始したら、前述のカーソルキーの移動を使って範囲を調整します。

選択の解除は、Android Studio macOSキーマップでいうところの「Escape」が該当します。

👉 【macOS】「Toggle Sticky Selection」を設定したい!

これらの操作は、Emacs のデフォルトキーバインドと同じ操作となっています。Mac の標準的なソフトウエアでも利用できるものが少なくありませんので覚えておくといいと思います。

 

カーソルキーを利用したショートカット

前述のキーマップPDFに記載のように、macOSキーマップにはカーソルキーを利用したショートカットが登録されています。

「Shrink/Extend Selection」などは、あちこちの記事で便利で使えると言われていることが多いです。

その他、お好みで多用するショートカットが使いづらいようであれば、利用していないショートカットキーに登録するのも良いでしょう。

 

まとめ

私の感覚で言うと、カーソルキーを使わず Emacs/Mac 系ショートカットたちをエディタで使うには、あといくつかのショートカットを登録しておくとストレスが少ない。

👉 To keep on your keyboard home position for Android Studio 

macOS 上で、コーディングを含むテキストの編集なら、ホームポジションを考慮した emacs/mac 系ショートカット操作が最強に思っていますが、マウスやトラックパッドも触るっちゃあ触ってるけども、これがスッキリする。

実際は、以下、キーリマップ を使ったほうが早い気もする。


👉 MacBook Proの「バタフライキーボード」補足。困った矢印キーと適切な修飾キー刻印。: パワーリンゴ 
👉 Controlキーで自由自在にカーソルをコントロール!テキスト入力が超捗るショートカットキーまとめ|スーログ 
👉 keymaps at master · JetBrains / intellij-community 
👉 Configure TAB to indent current line? – IDEs Support (IntelliJ Platform) | JetBrains 
👉 AndroidStudioをemacsのキーバインドにしよう - Qiita 
👉 Mac のキーボードショートカット - Apple サポート 


ショートカット「Find Action (⌘⇧A)」が使えない Android Studio "No manual entry for XXX\;type\=a"【macOS】

「Find Action (⌘⇧A)」が使えません。

Find Action (⌘⇧A)

「Search Everywhere (⇧⇧)」 からいくしかないのでしょうか。

Cmd+Shift+A hotkey opens Terminal with "apropos" search instead of the Find Action dialog – IDEs Support (IntelliJ Platform) | JetBrains

👉 Cmd+Shift+A hotkey opens Terminal with "apropos" search instead of the Find Action dialog – IDEs Support (IntelliJ Platform) | JetBrains 

Android Studio と macOS のショートカットの衝突のようです。


[システム環境設定]

    |

[キーボード]

    |

[ショートカット]

    |

[サービス]

    |

[ターミナルの...デックスで検索] を OFF

OSや各アプリやソフトウエアと異なったレイヤーでのショートカットの衝突。

最終的には、どちらを優先するか、ということだけになります。

👉 mac 特殊キーの記号 ⇧⌃⌥⌘などの入力方法 


【Google フォト対策】ffmpeg で動画軽量化

👉 Encode/AV1 – FFmpeg 

Android端末カメラで取得できる最高品質の動画を撮る。



パソコンのデスクトップ上に置いて、確認したあと、コーデック変換してサイズを下げる。


➜  ls -alh PXL_20201214_211006730.mp4
-rw-r--r--@ 1 nasu  staff   864M 12 15 13:14 PXL_20201214_211006730.mp4


➜  ffprobe -hide_banner PXL_20201214_211006730.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'PXL_20201214_211006730.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2020-12-14T21:12:41.000000Z
    com.android.capture.fps: 30.000000
  Duration: 00:02:30.34, start: 0.000000, bitrate: 48225 kb/s
    Stream #0:0(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 191 kb/s (default)
    Metadata:
      rotate          : 90
      creation_time   : 2020-12-14T21:12:41.000000Z
      handler_name    : SoundHandle
    Stream #0:1(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, smpte170m/bt470bg/smpte170m), 3840x2160, 48030 kb/s, SAR 1:1 DAR 16:9, 29.98 fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      rotate          : 90
      creation_time   : 2020-12-14T21:12:41.000000Z
      handler_name    : VideoHandle
    Side data:
      displaymatrix: rotation of -90.00 degrees


➜ ffmpeg -i PXL_20201214_211006730.mp4 -c:a copy -c:v libx265 -tag:v hvc1 PXL_20201214_211006730_hevc.mp4
...
frame= 4511 fps=5.4 q=31.0 size=  318720kB time=00:02:30.28 bitrate=17373.5kbitsframe= 4512 fps=5.3 q=34.2 Lsize=  323369kB time=00:02:30.30 bitrate=17625.0kbits/s dup=10 drop=5 speed=0.178x
video:319682kB audio:3517kB subtitle:0kB other streams:0kB global headers:2kB muxing overhead: 0.052518%
x265 [info]: frame I:     42, Avg QP:29.28  kb/s: 78656.18
x265 [info]: frame P:   1219, Avg QP:30.59  kb/s: 32333.41
x265 [info]: frame B:   3251, Avg QP:33.83  kb/s: 11025.11
x265 [info]: Weighted P-Frames: Y:10.1% UV:9.8%
x265 [info]: consecutive B-frames: 14.4% 7.1% 8.9% 45.5% 24.1%

encoded 4512 frames in 844.19s (5.34 fps), 17411.49 kb/s, Avg QP:32.91





サイズは1/2以下になるはず。


➜ ls -alh PXL_20201214_211006730*
-rw-r--r--@ 1 nasu  staff   864M 12 15 13:14 PXL_20201214_211006730.mp4
-rw-r--r--  1 nasu  staff   316M 12 15 13:33 PXL_20201214_211006730_hevc.mp4


➜  ffprobe -hide_banner PXL_20201214_211006730_hevc.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'PXL_20201214_211006730_hevc.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf58.45.100
  Duration: 00:02:30.40, start: 0.000000, bitrate: 17613 kb/s
    Stream #0:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, progressive), 2160x3840 [SAR 1:1 DAR 9:16], 17412 kb/s, 30 fps, 30 tbr, 15360 tbn, 30 tbc (default)
    Metadata:
      handler_name    : VideoHandle
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 191 kb/s (default)
    Metadata:
      rotate          : 90
      handler_name    : SoundHandle

スマホで閲覧がメインな今、無駄な高画質動画など本当にいるか?

AV1はとろすぎ。

👉 【Googleフォト】一括で「高画質」へ変換して使用量を無制限にする方法 
👉 Google「バックアップと同期」が謎だったので整理する 
👉 Google フォト から写真や動画を一括で取得する – Google データエクスポート 
👉 「無料」は永遠ではない? 「Google フォト」が容量無制限の保存を終了する意味 | WIRED.jp 
👉 Googleフォトの[高画質]無制限バックアップが'21年6月終了。整理ツールも - Impress Watch 


アダプティブ バナー(Adaptive Banner) の width | SDK v20 の準備

スマートバナーてなくなるんですね!

全幅表示のバナーを引き続き使用したい場合は、以下のコード スニペットに示されるようにアダプティブ バナーを使用してください。

👉 SDK v20 の準備  |  Android  |  Google Developers 

サンプルコードのここら。


 // Determine the screen width (less decorations) to use for the ad width.
 // If the ad hasn't been laid out, default to the full screen width.
 private val adSize: AdSize
   get() {
     val display = windowManager.defaultDisplay
     val outMetrics = DisplayMetrics()
     display.getMetrics(outMetrics)

     val density = outMetrics.density

     var adWidthPixels = ad_view_container.width.toFloat()
     if (adWidthPixels == 0f) {
       adWidthPixels = outMetrics.widthPixels.toFloat()
     }

     val adWidth = (adWidthPixels / density).toInt()
     return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
   }

👉 アダプティブ バナー |  Google Developers 

コメントにも書かれてるけど、ほぼ無意味な


var adWidthPixels = ad_view_container.width.toFloat()
if (adWidthPixels == 0f) {
      adWidthPixels = outMetrics.widthPixels.toFloat()
    }

通常の利用するタイミングを考えるとほぼ常に「0f」 でしょうか。

他の公式サンプルを見てみます。


   // Since we're loading the banner based on the adContainerView size, we need to wait until this
   // view is laid out before we can get the width.
   ad_view_container.viewTreeObserver.addOnGlobalLayoutListener {
     if (!initialLayoutComplete) {
       initialLayoutComplete = true
       loadBanner()
     }
   }

👉 googleads-mobile-android-examples/MyActivity.kt  

ad_view_container のレイアウトが完了するまで待ってから、loadBanner() → ad_view_container.width と処理が進んで前述分岐の意味が発生。

、、、

うん、

やっぱ、最近の公式サンプルコードやべーわ!

View サイズの取得のタイミングについては以下で🙆

👉 java - View's getWidth() and getHeight() returns 0 - Stack Overflow