【Mac】PCの起動・停止時刻を出力するシェルスクリプト

■環境

macOS High Sierra 10.13.1
bash 4.4.12


職場の勤怠を付ける際に数日分まとめて入力するのですが、
出勤退勤時刻の目安とするため、Macの起動・停止時刻を出すようにしました。

まず、このシェルスクリプトはbash Ver 4.x.x台以上でないと動かないので、
bashのバージョンが3の場合はHomebrewでインストールします。
※執筆時点でMacにデフォルトで入っているbashはVer 3.x.xでした。

$ brew install bash
$ which bash
/usr/local/bin/bash

シェルスクリプトを作成します。
仮でホームディレクトリ直下に「kintai.sh」という名前で作る事にします。

$ vim ~/kintai.sh

シェルの内容は以下の通りです。
シバン(1行目のやつ)のパスは上記のwhichコマンドで確認したbashのパスとします。

#!/usr/local/bin/bash
set +e

declare -A rebootTimes
declare -A shutdownTimes

shutdownList=`last | grep "^shutdown" | cut -d " " -f 28-33`
while read line;
do
    curdate=`env LANG=eu_US.UTF-8 date -j -f "%a %b %d %H:%M" "${line}" "+%Y/%m/%d"`
    curtime=`env LANG=eu_US.UTF-8 date -j -f "%a %b %d %H:%M" "${line}" "+%H:%M"`
    if [ ${#shutdownTimes[${curdate}]} -eq 0 ]; then
        shutdownTimes[${curdate}]=${curtime}
    fi
done << END
$shutdownList
END

rebootList=`last | grep "^reboot" | cut -d " " -f 30-35`
while read line;
do
    curdate=`env LANG=eu_US.UTF-8 date -j -f "%a %b %d %H:%M" "${line}" "+%Y/%m/%d"`
    curtime=`env LANG=eu_US.UTF-8 date -j -f "%a %b %d %H:%M" "${line}" "+%H:%M"`
    rebootTimes[${curdate}]=${curtime}
done << END
$rebootList
END

firstDate=`date +"%Y/%m/01"`
today=`date +"%d"`

firstDate="2017/12/01"

for ((i=0; i < ${today}; i++)); do
    target=`date -v+${i}d -j -f "%Y/%m/%d" "${firstDate}" +"%Y/%m/%d"`
    echo "${target} : ${rebootTimes[${target}]} - ${shutdownTimes[${target}]}"
done

あとはこのシェルに実行権限をつけて実行するだけです。

$ chmod +x ~/kintai.sh
$ ~/kintai.sh
2017/12/01 : 10:14 - 19:16
2017/12/02 :  -
2017/12/03 :  -
2017/12/04 : 10:10 - 20:01
2017/12/05 : 10:06 - 18:44
2017/12/06 : 09:48 - 18:21
2017/12/07 : 11:22 - 15:18
2017/12/08 : 09:47 - 19:07
2017/12/09 :  -
2017/12/10 :  -
2017/12/11 : 10:06 - 19:53
2017/12/12 : 10:12 -

起動時刻はその日に最初に起動した時刻、停止時刻はその日最後に停止した時刻を出力しています。
日を跨いで仕事をした場合は、どうしようもないです。

【Mac】圧縮解凍ソフトのインストール(Win対応)

■環境

macOS Sierra 10.12.6


Windowsで圧縮したファイルがMacで正常に開けなかったり
Macで圧縮したファイルがWindowsで正常に開けなかったり

そんな時はMac側で以下ソフトを使うと解決します。

Windows → Macの圧縮ファイル連携

『The Unarchiver』というソフトを使って解凍すると正常に解凍できます。
OneDriveからダウンロードした圧縮ファイルの解凍が正常にできない場合にも使えます。

MacのAppStoreで配信されていますので、検索してインストールしてください。
使い方は、解凍したい圧縮ファイルを『The Unarchiver』で開くだけです。

Mac → Windowsの圧縮ファイル連携

『WinArchiver Lite』というソフトを使って圧縮すると、Win側で正常に解凍できます。
こちらもMacのAppStoreで配信されています。

使い方は、圧縮したいファイル・ディレクトリを『WinArchiver Lite』で開く、
または『WinArchiver Lite』を起動しておいて、圧縮したいファイル・ディレクトリを『WinArchiver Lite』のウィンドウに
ドラッグ&ドロップすると、Win対応の圧縮ファイルが生成できます。

【Mac】ForiClientでVPNを繋ぐ

■環境

macOS Sierra 10.12.6
FortiClient 5.6.0.703


■本体のダウンロード & インストール

公式サイトよりインストーラをダウンロードする。
http://www.forticlient.com/downloads

ダウンロードしてきたdmgファイルをダブルクリックするとインストーラが走るので、
あとはインストーラに従えばインストール完了

■VPN設定

FortiClientを起動し、「リモートアクセス > 歯車マーク > 新規接続の追加」をクリックする。

接続先の設定をして、『追加』ボタンをクリックする。

その後、パスワードを入力して『接続』ボタンをクリックすれば接続される。

一度設定しておけば、今後の接続&切断は右上のタスクバーのFortiClientアイコンから実施できる。

※FortiClientアイコンは盾マークの中に、VPN接続時は鍵マーク、VPN切断時は四角いマークとなっている。

【Mac】NetBeansのインストール

■環境

macOS Sierra 10.12.6
NetBeans 8.2


コードの補完やFTP機能を標準装備していたりと
無料のIDEの中では個人的には使いやすいと思っています。
あと、ねこびーんが可愛い。

■JDK & NetBeans本体のダウンロード & インストール

JDKとNetBeansがセットになっているパッケージがあるので、それをダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/jdk-netbeans-jsp-142931.html

【補足】
既にJDKをインストールしている場合は、以下のサイトからNetBeans本体のみをダウンロードすれば良いです。
https://netbeans.org/downloads/
こちらのサイトからダウンロードする場合は、利用する言語に合わせたパッケージをインストールできます。

ダウンロードしてきたdmgファイルをダブルクリックしてマウントし、
出てきたpkgファイルをダブルクリックすると、インストーラーが走ります。

そのままインストーラーに従い進めるとインストール完了です。
LaunchpadにNetBeansが追加されてます。

■NetBeansの設定

【基本設定】

上部メニューより「NetBeans > Preferences」をクリックすると設定画面が開きます。
基本的に触るとしたら以下のタブくらいだと思います。
それ以外のタブをいじる人は、もはや説明も不要なレベルの人だと思うので説明も割愛します。

一般タブ

NetBeansから開くブラウザの指定をしたり、プロキシの設定をしたりできます。
よく分からなければデフォルトのままでよいです。

エディタタブ

ソースコードのフォーマットを指定したり、NetBeansが表示する警告を設定したりできます。
インデントをタブにするかスペースにするか。どのくらいインデントを深くすると警告を出すか。など
個人の好みやチームのコーディング規約に合わせて変更してください。
分からない項目はデフォルトのままで良いと思います。

フォントと色タブ

タブ名のままですが、NetBeansで使うフォントと色を設定できます。
見づらい色などがあれば変更すれば良いです。

キーマップタブ

ショートカットキーの設定です。基本的にはデフォルトのままでいいと思います。
どんなショートカットがあるのかを確認するために、一度眺めてみるのもいいと思います。

外観タブ

IDEの見栄え全般の設定です。
「ルック・アンド・フィール」でテーマの変更ができるので、好みのテーマがありそうであれば変更してください。
※ルック・アンド・フィールの反映にはIDEの再起動が必要です。

【プラグイン導入】

利用したい言語に合わせてプラグインをインストールします。
NetBeansの上部メニューより「ツール > プラグイン」をクリックし、プラグイン管理画面を開きます。

「使用可能なプラグイン」というタブより新規プラグインのインストールができます。

暗いテーマが好きな場合

「Dark Look And Feel Themes」というプラグインがあります。
これをインストールすれば、基本設定にあった「ルック・アンド・フィール」の選択肢が増えるので、
設定画面から変更してください。
個人的には「Dark Nimbus」が好きです。

PHPを使う場合

PHPの開発をするなら「PHP」というプラグインは必須です。
あとはフレームワークやテストツールの補助プラグインもあるので、それらを必要に応じてインストールすれば良いです。

【Mac】Homebrewインストール

■環境

macOS Sierra(10.12.5)


HomebrewはmacOS用のパッケージマネージャーです。
インストールするためのコマンドは公式ページにて記載されています。
http://brew.sh/index_ja.html

2017年10月現在では以下のコマンドでインストールしました。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

これでbrewコマンドが使えるようになりました。

【Mac】ターミナル設定(iTerm2 + fish + fisherman)

■環境

macOS Sierra
iTerm2 3.1.3
fish 2.6.0
fisherman 2.13.2

■参考サイト

fish shell を使いたい人生だった
https://dev.classmethod.jp/etc/fish-shell-life/


ターミナルのシェルをiTerm2 & fishにする手順です。
デフォルトである程度便利機能が入っているので、zshでカスタマイズするのが面倒な人におすすめです。

iTerm2インストール

公式ページよりzipをダウンロードします。
https://www.iterm2.com/downloads.html

ダウンロードしたzipを解凍すると「iTerm」というファイルが出てくるので、それをアプリケーションにドラッグ&ドロップします。
これでLanchPadから起動できるようになりました。

fish インストール

fishをインストールします。

$ brew install fish
$ fish -v
fish, version 2.6.0

fishのパスを確認する。

$ which fish
/usr/local/bin/fish

上記パスをシェル一覧に追記する

$ sudo vi /etc/shells
〜末尾にwhichコマンドで確認したパスを追記する〜

シェルをfishに変更する

$ chsh -s /usr/local/bin/fish

これで、ターミナルを再起動するとfishが立ち上がります。

fisherman インストール

fishermanというfishのプラグイン管理ツールがあります。

fishermanのgithubベージにインストールコマンドが載っています。
https://github.com/fisherman/fisherman

2017年10月時点でのコマンドは以下でした。

$ curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs https://git.io/fisher
$ fisher -v
fisherman version 2.13.2 ~/.config/fish/functions/fisher.fish

上記コマンド実行時にバージョン情報が出なかった場合は、一度ターミナルを再起動すると良いです。

fishのテーマ変更

fishはテーマを変更することで見栄えが変えられます。
どのようなテーマがあるかは、以下ページが参考になります。
https://github.com/oh-my-fish/oh-my-fish/blob/master/docs/Themes.md

私は「bobthefish」というテーマを利用しており、以下手順でインストールしています。

$ fisher install omf/theme-bobthefish
$ git clone https://github.com/powerline/fonts.git
$ fonts/install.sh
$ rm -rf fonts

上記コマンド実施後、iTerm2のプロファイルを設定します。
プロファイル設定画面にて「Text>Font>ChangeFont」をクリックしてください。

フォント設定画面になるので、『D2CordingForPowerline』を選択します。
フォントサイズも必要に応じて好きなサイズに変更してください。

※2018年1月追記
「D2Cording」は無くなっていました。
「○○○ for Powerline」というフォントの中から好きなものを選んでください。
個人的には「Meslo LG M for Powerline」が好きです。

これで、テーマの変更は完了です。

プラグイン追加

プラグインは色々ありますが
私が入れているプラグインを紹介しておきます。

z

過去の履歴からディレクトリを選択して遷移できるようになります。
【インストール方法】

$ fisher install z

【使い方】
z {文字列}まで入力してタブを押下する。
上記の{文字列}で履歴からディレクトリ検索をして遷移できる。
{文字列}を空にしておけば直近の履歴が表示される。

bd

親以上のディレクトリ(祖先ディレクトリ?)への遷移が簡単になる。
【インストール方法】

$ fisher install 0rax/fish-bd

【使い方】
$ bdと入力してタブを押すと、親ディレクトリの一覧が表示されるので
選択してエンターを押すだけで移動できる。

peco

コマンド履歴の検索が容易にできるようになる。

【インストール方法】

$ brew install peco
$ fisher oh-my-fish/plugin-peco

上記コマンド後、fishのコンフィグファイルへ以下を記載。

vim ~/.config/fish/config.fish
〜以下を追記(ファイルがなければ新規作成)〜
function fish_user_key_bindings
  bind \cr 'peco_select_history (commandline -b)'
end

※「function fish_user_key_bindings」の定義が既にされているなら、
その中にbind〜の行だけ追記すれば良い。

上記完了後、ターミナルを再起動してください。

【使い方】
「Ctrl + R」でコマンド履歴検索画面になる。
検索画面では直近のコマンドから選択することもできるし、文字列を入力すれば該当の文字列を含むコマンド履歴に絞ることもできる。

ghq

gitの管理が容易になるプラグイン

【インストール方法】

$ brew install ghq
$ fisher install yoshiori/fish-peco_select_ghq_repository

上記コマンド後、fishのコンフィグファイルへ以下を記載。

vim ~/.config/fish/config.fish
〜以下を追記(ファイルがなければ新規作成)〜
function fish_user_key_bindings
  bind \c] peco_select_ghq_repository  # 追加
end

※「function fish_user_key_bindings」の定義が既にされているなら、
 その中にbind〜の行だけ追記すれば良い。
 例えば、もし上記のpecoも導入しているのであれば、config.fishの記載は以下のようになる。

function fish_user_key_bindings
  bind \cr 'peco_select_history (commandline -b)'
  bind \c] peco_select_ghq_repository  # 追加
end

上記完了後、ターミナルを再起動してください。

【使い方】
「Ctrl + ]」でghqで管理しているgitリポジトリの選択ができます。
gitリポジトリを選択すると、該当リポジトリのディレクトリへ遷移します。

ghqコマンドの使い方は割愛するので、別途調べてください。

Atom IDEの環境構築(PHP、Go)

■環境

macOS Sierra 10.12.6
Atom 1.21.0-beta2

■参考にしたサイト

公式サイト
https://ide.atom.io/
はくたけ氏のブログ
http://tech.innovator.jp.net/entry/2017/09/14/165139
sayama0402さんのQiita
https://qiita.com/sayama0402/items/3bd8d905619c514179b7


ナウいエディタ「Atom」は、前から気になっていたのですが、

  • テキストエディタにしては重い
  • IDEにしては機能がすくない

という理由で、少し敬遠していました。

が、そのAtomからIDEが出たそうなので、試しに使ってみました。

■手順

①Atomの入手

以下サイトより、Atom 1.21.0(ベータ版)を入手してインストールする。
https://atom.io/beta

※いくつかの紹介ページを見ましたが、1.21.0が推奨されているようです。
 試しに1.20.0(安定板)でも試して見ましたが、確かに動きが怪しかったです。

②必須パッケージのインストール

Atomを起動したら、上部メニュー
Packages > Settings View > Install Packages/Themes
より、以下を検索してインストールする。

  • atom-ide-ui
  • ide-php
  • ide-go

③使って見る。

初めてgoのソースコードを開いた際には「ide-go」が依存するパッケージをインストールするか聞かれるので、
インストールします。
また、「linter」と「atom-ide-diagnostics」が競合している旨のメッセージが出るので、
そのメッセージの下にある「Disable linter」をクリックして、競合を解決します。

これで、実際に使い始められそうです。
定義ジャンプや補完機能は十分使えそうなレベルで動いてました。
また、他の無料IDE(EclipseやNetBeans)に比べると、起動が早かったです。

その他パッケージのインストール

IDEとは関係なく便利なパッケージが沢山あるので入れます。
以下、実際に入れて見たパッケージです。

■file-icons
各ファイルの拡張子に合わせてアイコンを変えてくれる。
ちなみに、Atomに新拡張子を紐付けさせるには、上部メニューより「Atom Beta>Config」をクリックし、
config.csonを編集する必要がある。

【例:以下の記載で「.inc」という拡張子をPHPファイルとして認識してくれる】

"*":
  core:
    customFileTypes:
      "source.php": [
        "inc"
      ]

『source.php』に該当する部分はPHPファイルを開いた状態で「cmd + opt + P」を押すとポップアップで表示される。
別拡張子のファイルでも同じ操作でできるはず。

■pigments
色コードを記載したら自動で該当の色でハイライトしてくれる。

■show-ideographic-space
全角スペースを見える化

■git-plus
ターミナルなしでgit操作ができる!だそうです。

■merge-conflict
gitのコンフリクト解消が楽になる。

■highlight-selected
選択した単語と同じ単語をソースコード上でハイライトしてくれる。
選択=ダブルクリックらしい。同じ変数を探す時などに便利。

■linter-php
構文チェックしてくれるパッケージ。
括弧の開閉数が不一致の時とか教えてくれる。
紐づくパッケージを諸々インストールしてねと出てくるので、それらもインストールする。
※AtomIDEにも標準で構文チェックパッケージ(?)が入っているらしく、それと競合すると警告が表示される。
 IDE標準のものはエラー検知をしてくれているのかよく分からなかったので、私は無効化してしまいました。
 (上記警告にDisableボタンが付いているので、それをクリックするだけ)

■project-manager
複数プロジェクトを管理するためのパッケージ。
プロジェクト切り替えが容易になる。
【管理対象のプロジェクトを増やす方法】
 対象としたいプロジェクトを開いた状態で上部メニューより「packages > Project Manager > Save Project」を選択
【管理対象プロジェクトの呼び出し】
 「Ctrl + Command + P」で一覧が表示されるので、そこで選択する。
 上部メニューより「packages > Project Manager > List Project」を選択しても同じ。

【Mac】コマンドラインから写真の撮影日時などを確認する

■環境

macOS Sierra 10.12.6
exiftool 10.55


Macのコマンドラインから写真の撮影日時を確認する方法が知りたかったため調べてみました。
最終目標はファイル名に撮影日時を付与する事です。

exiftoolインストール

写真の情報を取り出すには、exiftoolというツールを使います。
brewでインストールできます。

brew install exiftool

写真の詳細情報を確認してみる

単純に

exiftool 対象ファイル

というコマンドでファイルの全詳細情報は取れます。
撮影日時だけに絞りたい場合は

exiftool -DateTimeOriginal 対象ファイル

とすれば絞れます。

が、

どうやら使っているカメラによって撮影日時情報が画像データに含まれていない場合や、
上記で指定した「Date/Time Original」以外のタグ名で存在する場合があるようです。

その場合は

exiftool 対象ファイル

で全情報を表示して、それっぽいのを選ぶしか無さそうです。

【Mac】言語パッケージ管理用にasdfを導入する(fish環境)

■環境

macOS Sierra 10.12.6
fish 2.5.0


■手順

Brewでもインストールできるらしいが、公式ページの手順に従った方が良さそう。
公式ページ:https://github.com/asdf-vm/asdf

まず、asdfをgithubからクローンし、fishのコンフィグに追加する。

$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.3.0
$ echo 'source ~/.asdf/asdf.fish' >> ~/.config/fish/config.fish
$ mkdir -p ~/.config/fish/completions; and cp ~/.asdf/completions/asdf.fish ~/.config/fish/completions

asdfで必要になるアプリケーションをbrewでインストールしておく。
下記はだいたい公式サイトで記載されているもの。

$ brew install coreutils automake autoconf openssl libyaml readline libxslt libtool unixodbc

また、言語別で必要になるアプリケーションもある。
詳細は言語別のgithubページを参照
https://github.com/asdf-vm/asdf-plugins

【メモ】
icu4cは2017年10月現在、最新バージョンを入れてしまうとPHPビルドできなくなってしまうので、旧バージョンをインストールした方が良いらしい
参考:https://github.com/phpbrew/phpbrew/issues/899

asdfで管理対象の言語を追加する。

$ asdf plugin-add {任意の名前} {githubリポジトリ}
===== (例) asdf plugin-add go https://github.com/kennyp/asdf-golang

上記で設定するリポジトリは以下を参照
https://github.com/asdf-vm/asdf-plugins
もしここでエラーが出てしまった場合は必要なアプリケーションが入っていない可能性があるので、
エラー文言を参考にbrewインストールしておく。

インストールできるバージョン一覧を見る。

$ asdf list-all {さきほどの名前}
===== (例) asdf list-all go

上記で確認したバージョンの中から希望のバージョンをインストールし、
利用できるように設定する。

$ asdf install {さきほどの名前} {バージョン}
===== (例) asdf install go 1.8.4
$ asdf global {さきほどの名前} {バージョン}
===== (例) asdf global go 1.8.4

以上で設定完了です。

その他コマンドは公式ページを参照。チートシートがいらないくらいまとまってます。
https://github.com/asdf-vm/asdf