tackeのブログ

ソフトウェアや趣味のギターやカメラのこと、たまに日記とか。

IntelliJ IDEAにて "Cmd+Shift+A" でFind Actionしようとすると黄色いTerminalが出てイラッとするアレをなんとかした話

みなさん。こんにちは。tackeです。

IntelliJ IDEA、使ってますか?

"Cmd+Shift+A" のFind Action機能はもちろんご活用されていますよね?

そんな皆さん向けのTipsです。

まあ表題の通りなんですが、IntelliJ IDEAにて "Cmd+Shift+A" でFind Actionしようとすると黄色いTerminalが出てイラッとすること、ありませんか?

なんかちょっと前からちょくちょく起きててイラッとしてたんですが、原因と対処方法が分かったのでメモしておく次第です。

発生してる問題を再確認

IntelliJ IDEAを起動して、"Cmd+Shift+A" でFind ActionでIntelliJの機能をインクリメンタルサーチで呼び出すぞ〜!

hoge」...っと入力して、Enter!

f:id:tacke:20190525005719p:plain

すると...

えっ!?黄色いTerminalが開いたぞ!?なんで!?なんもわからん!!イライラッ!!

f:id:tacke:20190525005908p:plain

という感じです。

Find Actionはよく使うのでこれは困りましたね。

原因

下記のとおり、JetBrainsのIssueに上がっていました。

https://youtrack.jetbrains.com/issue/IDEA-209726

MacOs 10.14.4 update enables system shortcut Shift-Cmd-A

というわけで MacOS 10.14.4のアップデートで "Cmd+Shift+A" のショートカットがデフォルトで「Search man Page Index in Terminal」というオプションに割り当てられるようになったため、IntelliJ IDEAのFind Action機能とキーバインドが衝突してしまったのが原因でした。

下記のように、JetBrainsのブログにも取り上げられていますね。

intellij-support.jetbrains.com

対策

というわけで話は簡単、キーバインドが重ならないようにしてあげればOKです。

今回はOS側の「Search man Page Index in Terminal」オプションを無効にしてしまおうと思います。

まずは現状確認です。

↓こちらがIntelliJ IDEA側のFind Actionのキーバインドです。"Cmd+Shift+A" が割り当てられていますね。

f:id:tacke:20190525010510p:plain

次にOS側で新しく割り当てられたオプションを確認します。

System Preferences | Keyboard | Shortcuts | Services の順に開くと下記のように「Search man Page Index in Terminal」に "Cmd+Shift+A" が割り当てられていることがわかります。

f:id:tacke:20190525010804p:plain

↓「Search man Page Index in Terminal」のチェックボックスを外してあげればOKです!

f:id:tacke:20190525011021p:plain

はい、これで対策はもう終わりです。

ではみなさん、IntelliJ IDEAで引き続き快適開発ライフを!

macOS MojaveにしてからKarabiner-Elementsで「英数・かなキー設定」を入れいているとブラウザでCmd+クリックで新しいタブで開く機能が使えなくなるやつ

macOS MojaveにしてからKarabiner-Elementsで「英数・かなキー設定」を入れいているとブラウザでCmd+クリックで新しいタブで開く機能が使えなくなるやつ。

はい、タイトルのとおりです。 非常に困っておりました。

が、しかし、つい最近それが解消いたしましたのでメモしておきます。 といっても超簡単で日本語向けの設定を最新版に更新するだけです。

Karabiner-ElementsのPreferencesから日本語設定のバージョンを確認します。 なるほど、現在は rev 2 のようです。 「Add rule」からWeb上のRule一覧サイトに飛びましょう。

f:id:tacke:20190209000347p:plain

Ruleのサイトから「For Japanese (日本語環境向けの設定) (rev 4)」を選んでImportします。

f:id:tacke:20190209000059p:plain

ImportしたらKarabiner側で新しい設定を入れて、古い設定を削除すればOKです。 以下のように設定がrev 3になってるかとおもいます。

f:id:tacke:20190209000744p:plain

どうやら日本語設定がいろいろとまとまったものが rev4で、各設定はそれとは別にversionを持ってるようです。 今回の設定はrev3でしたね。

というわけでこれで晴れて「Cmd + クリック」でいろいろと新しいタブやウィンドウで開く操作が復活しました。 よかったですね。

以上です。

fish shellの設定メモ

転職に伴いMacのTerminalを新たに設定する機会がありました。せっかくなのでメモしておきます。

Terminalでの仕事が快適にできるような自分的「最低限」の設定ができるまでがゴールです。 fish shellといくつかのCLIツールのインストールや設定について書いていきます。 fish shellは予め用意されている設定が多いので、こういう記事で書くことが少なくて便利ですね。

前提

  • Homebrewがインストール済みであること
  • iTerm2がインストール済みであること(Terminal.appでも別にいいけど、気分です)

Install fish_shell

まずはこれをしなくちゃ始まらない。fish shellをインストールします。

$ brew install fish

インストール後のガイドに従って /etc/shells にfishを追加してデフォルトシェルをfishに変更します。

Install fisher

fishのplugin manage fisher をインストールします。

$ curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish

Install peco, ghq, hub

いくつかの便利ツールをインストールします。

peco

インクリメンタル検索便利ツール peco

$ brew install peco

ghq

GitHubリポジトリ管理ツール ghq

$ brew install ghq

以下のようにgit repositoryを置いているディレクトリを設定します。今回は ~/dev/ を指定しました。

$ git config --global ghq.root ~/dev/

hub

GitHub便利コマンド hub

$ brew install hub

~/.config/fish/config.fish ファイルに以下のようにaliasを追記して設定します。bashとはalias記法が異なるので注意してください。

eval (hub alias -s)

completionについては特に何もしなくてもbrew installで設定が追加されるようです。

Install plugins

自分的に最低限必要だなと思うpluginをインストール・設定していきます。

plugin-peco

pecoでhistoryをインクリメンタルに検索できるやつ。便利すぎる。

$ fisher add oh-my-fish/plugin-peco

~/.config/fish/config.fish ファイルを編集して以下のように設定を追記します。

function fish_user_key_bindings
  bind \cr 'peco_select_history (commandline -b)'
  bind \cx\ck peco_kill
end

peco_select_historypeco_kill をそれぞれキーバインド設定しています。 bind \crcontrol + rbind \cx\ckcontrol + x の直後に control + k という意味になります。 後者は結構すばやくコマンド入力しないと反応しないので素早くコマンド入力する練習をしましょう。

z

過去に訪れたディレクトリに一発で飛べる。便利。

$ fisher add jethrokuan/z

fish-bd

ディレクトリを簡単に遡れるやつ。これも便利。

$ fisher add 0rax/fish-bd

fish-peco_select_ghq_repository

$ fisher add yoshiori/fish-peco_select_ghq_repository

以下のキーバインドを追加します。

function fish_user_key_bindings
  bind \c] peco_select_ghq_repository
end

fish-peco_recentd

z コマンドで頻繁に訪れるディレクトリを peco で選択して移動する。

とのこと。めちゃくちゃ便利。

$ fisher add tsu-nera/fish-peco_recentd

これも以下のようにキーバインドを追記します。

function fish_user_key_bindings
  bind \cx\cr peco_recentd
end

fish設定を反映

ここまで設定すると ~/.config/fish/config.fish ファイルは以下のようになっています。

eval (hub alias -s)

function fish_user_key_bindings
  bind \cr 'peco_select_history (commandline -b)'
  bind \cx\ck peco_kill
  bind \c] peco_select_ghq_repository
  bind \cx\cr peco_recentd
end

sourceやterminalの再起動などをしてfishの設定変更を反映しましょう。 fishのsourceはbashと記法が異なるため注意してください。 以下のようにすればOKです。

$ source ~/.config/fish/config.fish

以上でプラグインのインストールとキーバインド設定が完了しました。

Config fish

基本的な設定は完了していますが、プロンプトやカラーをお好みで変更していきましょう。 fish_config コマンドを実行するとブラウザでfishの設定変更が可能になります。

私は colorを"fish default"、promptは "Informative" に設定しています。

このままでは暗い文字色が少し見づらいのでiTerm2のカラーも変更します。 iTerm2のカラー設定は iTerm2 > Preferences > Profiles > Colors > Color Presets で変更できます。

f:id:tacke:20181207113815p:plain
iTerm2 > Preferences > Profiles > Colors > Color Presets

私は "Tango Dark" に設定しています。

以上で私的に最低限の設定ができました! fishで簡単便利なshell lifeを!

参考

fish shell fishshell.com

peco github.com

hub github.com

plugin参考 futurismo.biz

fisher github.com

jethrokuan/z github.com

0rax/fish-bd github.com

yoshiori/fish-peco_select_ghq_repository github.com

tsu-nera/fish-peco_recentd github.com

oh-my-fish/plugin-peco github.com

AWS AthenaでS3のログを集計してみた

業務でS3にあるログファイル(JSON行レコード)を集計するタスクをAWS Athenaでやってみたので備忘録。

実はこれ、すでにAWS EMR/Apache Pigで集計しているログファイルなのでPigスクリプトを修正してもよかったんですが実行環境やデプロイが面倒そうだったのと、 Athenaを今覚えたほうが今後の業務で役に立ちそうなのでチャレンジしてみることにしました。 (Pigスクリプトを書いたのは3年前くらいの自分なので頑張れば思い出せるのですが、古い技術を思い出すモチベーションはそんなにない・・・)

そもそもAthenaがSQLで簡単に集計できる、ってのも大きな判断要素ではありました。

というわけでどういう感じで学んでいったかをメモしておきます。

概要を把握

何事もまずは基礎基本から、というわけでまずはAthenaのドキュメントを読んで概要を把握します。

docs.aws.amazon.com

わかったこと

Athena使い方

  • テーブル、データベース、を定義する

次にチュートリアルをやってみます。 日本語の解説を見ながら進めたかったのでこの記事を参考にしました。 blog.serverworks.co.jp

これでざっくりと機能と使い方を把握できました。

というわけで今回の対応を進めていきます。 以下、チュートリアルをやったことある人向け。

テーブルの作成

まずはテーブル作成からです。

S3上のログのパスはだいたいこんなかんじ。 s3://bucket_name/path/to/logs/2018/08/01/00/

Athenaにはパーティション機能があり、Hive形式で s3://bucket_name/path/to/logs/year=2018/month=08/date=01/hour=00/ のようになっていればSQLパーティションを利用できて便利そうだったんですが、今回は単に年月日でディレクトリが切られているだけなので対応しておりません。

こういう場合でも手動でパーティションを作成すれば利用可能なのですが、8月1日のパーティション作成、8月2日のパーティション作成、、、 といった具合にひとつずつパーティションを作成しないといけないようです。

プログラムを作成してJDBCパーティション作成コマンドを一気に発行・・・とかやればいいみたいですが、 今回はアドホックな集計なのでS3パスの指定を対象の年月日を直接指定しパーティションを利用しないようにしました。

今回は以下のように指定しました。こうすると /2018/08/ 以下のすべてのログが集計対象になります。 s3://bucket_name/path/to/logs/2018/08/

ログの形式はJSONを指定します。 JSONだと次ステップのカラム定義の際にで正規表現でログをパースする必要がなくてかなり楽ちんでした。

カラム定義

JSONのプロパティ名をひとつずつカラムとして定義していきます。 JSONパースして一覧を出して選べたりすればかなり楽なのに手動入力なのでつらいです。 しかし、CSVなどの場合は正規表現でパース処理を書かなくてはいけないのでだいぶマシです。

というわけでこれはS3の実際のログを確認しつつ作業します。

ここで、必要ないカラムや値の型が不明なプロパティについては定義しないほうが楽です。 使わないうえによくわからないプロパティをわざわざ定義してパースに失敗するより、定義しないままにしておきましょう。 すべて定義しなくても無視されるだけなので問題ありません。

定義に問題なければプレビューを確認できるので確認しておきましょう。

SQL作成

ここは普通にSQLを書くだけなので特に書くことはありません。

予めS3のログサイズを調べておき実行時間やコストが想定外に膨らまないように注意しましょう。

最初はわざとすくないデーターでテーブルを作っておくといいかもしれません。 (こういう機能がAthenaにあれば簡単なのですが、無さそうです)

結果の確認

AthenaのHisotry、およびS3から確認&ダウンロード可能です。 極力Athena側でクエリに名前をつけて保存しておくと、あとあと再利用などしやすそうです。

所感など

S3のログを手軽にSQLで集計でき、かなり便利でした。 今回はWebコンソールから作業しましたがチュートリアルをやっておけば特に困ることがないぐらい簡単でした。 今後の業務で活用していきたいです。

イマイチなところとしては、SQLをSaveするときDescription入力時にEnterを押すと確定されてしまい、日本語が入力しづらい、というのがありました。。。 これはWebコンソールが日本語化されてないのでいろいろと対応してないところがあるのでしょう・・。まぁそんなに問題ないです。ちょっとつらいだけ。

以上!

Kalafinaブログを閉じました

Kalafina梶浦由記関連のブログを作っていたがはじめに2記事ぐらい書いてから1年ぐらい更新していなかったので記事をこのブログに統合して、ブログは削除しました。

というかKalafina自体がKeiko脱退以降、活動してないですし何書くっていうんだい、っていう・・・。

まぁそんな感じです。

たった2記事ですし、せっかくなのでリンクを貼っておきます。

tacke.hateblo.jp

tacke.hateblo.jp

「LINE Developers Meetup in Tokyo #44 -Agile2018 Conference 報告会-」に参加してきたメモ

「2018年08月28日(火) LINE Developers Meetup in Tokyo #44 -Agile2018 Conference 報告会-」に参加してきました。

line.connpass.com

当初ブログに書くつもりはなかったのでかなり雑なヌケモレだらけのメモですが、せっかくなので記録しておきます。

1) From Output to Outcome

伊藤 宏幸(LINE株式会社)

Agile 2018についての説明

今年、Metricsがカテゴリに昇格した DevOpsは減ったが、それは別でカンファレンスをやるようになったから

Topic

  1. Scaling Agile
  2. Business Agility
    • 正直ハズレだった、とのこと。まだ具体的なはなしがあまりない
    • Outcome
  3. Tech for Trial & Errors

-> Summary Outcome Business

Continuous Delivery

  • Scale teams
  • CD for DB

-> Outcome

Database DevOps

DBもDevOpsやっていく

Chaos Engineering

Metrics (Agile Data)

KeynoteでMetricsについて話していた。

Mob Programming

年がら年中コミュニケーションしてるから、、、 -> 見積もりやらない。 -> デイリーMTGがやらない。

Learning to Experiment

常に実験しながら改善していく。

週7時間、勉強会をやっている。チームのためなら内容は何でもいいし予算も確保している。

Tool

Portfolio Dashboard Poker

メトリクスを選ぶポーカー

Wisdom of Crowds

チームごとの考えをお互い見れるようにする

まとめ

Agile 2019 に応募しよう!

2) Data & Metrics in Agile2018

陶山 育男 様(株式会社サイバーエージェント

Metricsについて

Modern Data (Modern Agileのモジり)

  • Data is Beautiful
  • Data を安全に使う
  • 予測可能性の対価
  • 依存があるとタスクが間に合わない確率的がかなり高くなる!
    • 依存を減らしましょう

The impact of lean

  • SDPI
    • Software Development Performance Index
    • 4つのメトリクスでバランスよく・・・
    • これをつかってチームをはかる
    • WIPを減らすと不具合が減り、デリバリー速度があがる。しかし生産性は落ちる。

3) Making work visible

高橋 陽太郎 様 (株式会社リクルートジョブズ 兼 株式会社リクルートテクノロジーズ)

メトリクスをあえて手で取ってる。

  • 開発はアジャイルだぜー!と思ってたけどビジネス含めて全体では全然アジャイルじゃなかった
  • やろうとしたことを思いついて、着手してからビジネス的にリリースするまでのリードタイムを図ろう

感動したメトリクスの話し

よさそう。あとで。

著者や登壇者と雑談の話し

Christopher Lucian Hunter Industriesのディレクター モブプロの創始者の一人

モブは案件ごとにやり始めて最後までそのメンバーでやり続ける 途中から参加する人のコスト高いから基本的にやらない

モブプロは見積もりしないけど、計画は立ててないの? ビジネスは計画を立ててるけど、開発に強いることはないよ

4) 当たり前を当たり前に

横道 稔(LINE株式会社)

横道さんは Training, Teaching, Coaching にフォーカスしてた

みんな読んでるらしい本 https://www.amazon.co.jp/dp/B0062O7L7S/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

アジャイルを教えるためのセッション

ゲームをするといいですよ、っと。 記憶にも残るし。 -> Communication Game

VARK 人間の学習特性4分類。Visual, AUidtory, Reading/Writing, Kinesthetic どれが強いか、を意識するといいかも

Cone of Learning てっぺんはDiscussion -> いますぐディスカッション隣の人とやりましょう!

Efficiency <-> Effectiveness

感想

運営スタッフ、登壇者、の皆様の発言やふるまいがものすごくオープンで話しやすく聞きやすかった。 これはなにげに、かなりすごいと思った。

メトリクスの話は面白いしやってみたいと思うが、スクラムマスター専任でないとそのための時間は取れなさそう。 現実的にスクラムマスターと開発者を兼任している現場も多そうだし。 ツールで解決できるといいのだが・・・。

自分のチームで依存を減らすのはやりたい。 フロントとサーバーサイドでペアを組んでみると依存は減るかも?(ジャストアイデア

モブプロもやってみたい。 しかしPO不在の状況が多いため難しいかも。

MacBook Pro 13" 2018を購入したのでセットアップメモ

メインマシンとして利用していた MacBook Pro 17" 2011 が故障したため新しいメインマシンとしてMacBook Pro 13" 2018 を購入しました。

せっかくなのでセットアップでやったことをメモしておきます。

やったこと

  • トラックパッド設定に全てチェックを入れる
  • トラックパッドカーソルスピードを最速に設定
  • App Storeで最新にアップデート
  • Chromeインストール
    • ログインしてブックマークや拡張などの設定を同期
  • ShiftItインストール
  • Dockの表示/非表示を有効化
  • Karabiner-Elementsインストール
    • 日本語向けの設定をImportして左右のコマンドキーを英数かなボタンに変更した
    • 左ControlキーとCaps Lockキーを入れ換え
  • Clipyをインストール
  • バッテリー表示の「割合を表示する」を有効化
  • 日付と時刻表示の「秒を表示」「時刻内の":"を点滅する」「日付を表示」にチェックを入れる
  • App StoreからLINEをインストール
  • 3本指ドラッグの有効化
  • キーリピートの速度を最速に設定、リピート入力認識までの時間を最短に設定
  • iTerm2をインストール
  • Xcodeをインストール。CLIも。
    • Homebrewのインストールの必須条件
  • Homebrewをインストール
    • fish shellとかgitとかgoとか適当に入れとく。後でも良い。
  • iStat Menusをインストール
  • JetBrains Toolboxをインストールし、IntelliJ IDEA Ultimateをインストール
    • キーボードショートカットを変更して、Ctrl+DをDeleteに割り当てる
  • Visual Studio Codeをインストール
  • Dropbox Appをインストール
  • Adobe Creative Cloudをインストール
    • Adobeアカウントでログインしてダウンロード&インストール
  • システム環境設定>共有>コンピューター名 を変更
  • Contextsをインストール
    • Ctrl + spaceの検索を無効化(IDEの補完とかぶる)
  • 環境設定>キーボード>ショートカット で「前の入力ソースを選択」に Ctrl + spaceが割り当てられているのでチェックをはずす

iTermを入れたりHomebrewを入れたり色々やることが残ってるけど一旦これで最低限かな。

ひとまずここまで。 何か設定したら追記するかも。

新しいMacBook Proの所感

まだ重い作業をしてないのですが、最新のキーボードは軽いタッチで入力できてかなり良いです。 トラックパッドも大きくなっていて使いやすいです。 Touch Barはまだ使い込んでないのでなんとも言えませんが、Touch IDは最高です。 あと、13インチというサイズは軽くて取り回しがしやすく非常に良いです。 USB Type-Cについてもこれから使ってみないとなんともいえません。 YouTubeで音楽を再生してみるとかなり音質が良いように感じました。低音もモリモリ出ます。 7年ぶりの新マシンなのでいろんなところがアップデートされていてかなり良さげです。