IDEA Intellij でファイル単体スクリプトを編集する方法

ツールなどちょっとしたスクリプトをIDEAの持つ機能を利用しながら書きたいときありません?

プロジェクト化して Git に登録とかせずに、ササッと書いて、実行するだけの場合の話。

ファイル指定でコマンドラインから起動すれば良い!!

👉 Opening Files from Command Line - Help | IntelliJ IDEA 

ここに書いてある

Tools | Create Command-line Launcher

からは今は作成できない。

👉 Toolbox App 1.11: What’s New. | JetBrains Blog 

Toolbox 設定で [Generate Shell script] で指定した場所に起動シェルスクリプトが書き出される。

Android Studio で、プロジェクトディレクトリの指定でも開ける。

ただのランチャーとしてもどうぞ。

言語の設定 (Python)

編集したいスクリプトのファイル名を rename_gopro.py とします。

1. idea bin/rename_gopro.py で IDEA を起動する。

2. [File]-[Project Structure] から Project Structure 画面を開く。

3. Platform Settings の [SDKs]-[Python 3.7] を選択する。

4. Project Settings の [Project]-[Project SDk]-[Python 3.7] を選択する。

5. 上部ツールバー内 [Add Configuration...] から Run/Debug Configuration 画面を開く。

6. [+]-[Python] で開いた画面で Script path を入力する。

7. 上部ツールバーから [Run/Debug] する。

ちなみに今回書き出された起動スクリプトは以下。

~/bin/idea


#!/bin/sh
# Generated by JetBrains Toolbox 1.16.1212 at Fri Jan 24 07:08:01 2020

open -a "/Users/maochanz/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/193.1212.39/IntelliJ IDEA.app/Contents/MacOS/idea" "$@"

~/bin/studio


#!/bin/sh
# Generated by JetBrains Toolbox 1.16.1212 at Fri Jan 24 07:08:01 2020

open -a "/Users/maochanz/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/191.1212548/Android Studio.app/Contents/MacOS/studio" "$@"

👉 JetBrains Toolbox で Android Studio の Stable/Beta/Canary が同時に管理できる? 
👉 GoPro 分割された動画ファイルの命名規則 


Google「バックアップと同期」が謎だったので整理する

久しぶりに「Googleドライブ」と「バックアップと同期」を使ったら意味不明になっていた。

やりたいことは以下3つだけ。

複数パソコン間でのファイル共有。

スマホで撮影した写真・動画ファイルのクラウド保存と共有。
(端末内には保存しない。)

写真はパソコンからも参照。(ダウンロード)

ざっくり曖昧なまま図にしてみた。

そして、「バックアップと同期ツール」の設定を見る。

さらに、ブラウザでGoogleドライブを開く。

あれ、意味がわからない...。

「マイドライブ」
「マイiMac」

って何のことなのか...。

ややこしいので整理してみました。

基本的に持つと良い考え方

Googleのクラウドサービスとして「ドライブ」と「フォト」の2つがある。それぞれ個別に運用できる。

👉 マイドライブ - Google ドライブ 
👉 Google ドライブ - Google Play のアプリ 

👉 フォト - Google フォト 
👉 Google フォト - Google Play のアプリ 

「バックアップと同期」は、パソコン向けの「ドライブ」ツール。追加機能として、パソコン内の「画像と動画を抽出」してドライブ内指定ディレクトリと同期したり、Googleフォトにアップロードできる。

👉 バックアップと同期のダウンロード - 無料のクラウド ストレージ 

私の設定

複数パソコン内のディレクトリを指定して Googleドライブ で常に同期。
→ 「バックアップと同期」ツールで対応。

スマホで撮影した画像と動画はできるだけ Googleフォト にアップしてスマホからは消す。
→ スマホアプリ「Googleフォト」で対応。

写真や動画の実体はすべてクラウド上だけに置く。パソコン上ではブラウザ版、スマホ上ではアプリ版のGoogleフォトで参照・操作する。

「Googleドライブ」と「Googleフォト」は個別に運用する。

今は、できるだけ分かりやすくシンプルにしておく。

画像の画質やクラウドストレージ内容量やその料金などで細かく設定していこうと思っています。

まとめ

「マイ ドライブ」とは:

Googleドライブで同期されたディレクトリのクラウド側の呼び名、またはその機能。

「マイ iMac」とは:

パソコン上のディレクトリから画像と動画を自動抽出してGoogleドライブ内に同期する機能のこと。オプションとして、同時にGoogleフォトにもアップロードすることもできる。
(マイノートパソコン/マイパソコン/マイ MacBookPro なども同義。)

これに馴染めず私は混乱していたようです。

Googleクラウド上に保存するファイルサイズを増えさせての有料移行を推しているのだろう。

その他

Google ドライブの言語設定を変更したら「Googleドライブ」と「Google Drive」と同期ディレクトリが2つ作成されていてさらに混乱した。

どちらにしても「日本語カタカナ」と「スペース含み英字」のディレクトリ名になってるのキモス。

👉 【Googleフォト】一括で「高画質」へ変換して使用量を無制限にする方法 


Navigation Component がタブごとのバックスタックを実装すると思える理由

公開されているGoogleサンプルにて

下部タブごとのバックスタック実装。



自然だと思う。

コード内コメントを見ていると

👉 architecture-components-samples/NavigationExtensions.kt at master · android/architecture-components-samples 

This sample is a workaround until the Navigation Component supports multiple back stacks.

このサンプルは、ナビゲーションコンポーネントが複数のバックスタックをサポートするまでの回避策です。

この拡張関数周りのコードはコンポーネント内に内包されることになるのだろう。

が、しかし、Fragment のライフサイクルに依存しながら動くMVVMのスタイルでは、そのコンテンツデータの読み込みは再度行われることになるはず。

はっきり衝突してないか、

AAC と MVVM。

このサンプルでは、Fragment のみの実装なので複数のバックスタックがまともに動いているが、実際の現場ではそうはいかないはず。