開発環境紹介 - その3 -

Posted by rhoboro on 2016-06-16

前回予告した通り、今回はほぼろのローカルの開発環境(主にPC内)を紹介します。

ローカルの開発環境

使っているマシン

  • MacBook Air (11-inch, Early 2015)

    • スペックは標準よりあげてます
      • Processor: 2.2 GHz Intel Core i7
      • Memory: 8 GB 1600 MHz DDR3
      • Storage: 128GB SSD
    • 持ち歩くためにこのサイズにしています。
      実際によく持ち歩いているので、このサイズ感はとても助かっています。
    • 無印Macbookのサイズ感も気になるのですが、まだまだCPUが非力そうなので手は出せないですね。
    • ちなみに私はMacもiPhoneもNexus5もカバーやケースをつけずに裸で持ち歩いています。
  • 自作のデスクトップPC

    • 大学4年の頃に組んだ人生2台目の自作PC。
    • 真っ赤なケースに一目惚れしたことがきっかけで作った超クールなPCです。
    • スペックはこんな感じ
      • Processor: 2.8 GHz Intel Core i7-860
      • M/B: ASUS P7P55D-E
      • Memory: 8 GB
      • Storage: 120GB SSD + 2T HDD
      • OS: Windows 10 (7 -> 8 -> 10)
    • LGA1156なのでCPUを載せ換えることなく、HDD以外は当時の構成のままです。
    • 最近はずっとMacbook Airばかり使ってるので、映画見るくらいしか使ってない。
    • ちなみに1台目の自作PCはPentium4 2.8GHzで高校入試1週間前に作ってましたねー(笑)

開発環境(Macbook Airの中身)

続いて中身編です。

基本的にターミナルが好きです。(GUIよりCUIが好きな変わり者)
意外とSSHを利用する機会が多いので、各種ツールはできる限りデフォルト状態でも使えるようカスタマイズはほどほどにしています。

  • 日常でよく使うソフトウェア

    • Terminal(bash, zsh)
      • 自分のMacbook Airはzshを入れてます。が、会社で自分が使ってるMacbook Pro 13はbashのまま利用してます。
      • TotalTerminalを愛用してたけどEl Capitanになって開発終わったのでどうしようか悩み中。
      • iTermは慣れなかった。。。
      • 結局現在はMac標準のTerminalを使ってるって感じです。
    • Vim
      • できる限りデフォルト状態でも使えるよう、日々練習しているところです。
      • 実践Vim 思考のスピードで編集しよう!を読みながらVim力を上げてる真っ只中。
      • 直接は関係無いけど、grep, awk, sed, findなども最近ちゃんと使うようになってきたので、作業効率上がってると地味に実感しています。
      • テキストファイル最高!
    • GNU Screen
      • ターミナルの仮想化ソフトウェア。
      • tmuxもあるけどscreenで不便ないし、いろんな環境にわりとデフォルトで入っているのでscreen使ってます。
      • ただし、Ctrl+Aってターミナル内でよく使うのでエスケープキーは Ctrl+Tにしています。
    • Alfred
      • Mac専用のランチャーアプリ。
      • 便利なのでランチャーとして使っています。(本当はもっといろんなことができる)
      • 仕事だとインストール許可を申請していないので、普通にSpotlightから起動してます。どちらもキーバインドはCtrl+スペース。
  • 開発系のソフトウェア

    • XCode
      • iOSアプリ開発するのに利用してます。
      • 一応本職の専門がモバイル開発なので。
    • AndroidStudio
      • Androidアプリ開発するのに利用してます。
      • 一応本職の専門がモバイル開発なので(2度目)
      • 最近は、9月に開催予定のPyCon JPに向けて、公式アプリも作ってます。
    • pyenv, virtualenv, pyenv-virtualenv
      • Pythonista御用達のツールたち。
      • PCをクリーンインストールする際は、必ず最初の方にいれます。
      • [追記@2016/12/23]今現在こちらは使ってないです。2系ならvirturalenv venv、3系ならpython3 -m venv venvのどちらかのコマンドのみを使っています。
    • Vagrant
      • Virtualboxで立てたVMを楽に管理するためのソフトウェア。
      • 便利ですよねー。Virtualboxを直接起動することはかなり減りました。
    • Virtualbox
      • 仮想マシン(VM)作るやつ。めっちゃ便利。
      • 最近は参考書でもOSイメージから配布してくれることが多いので重宝しています。
      • 仮想マシンはネットワークの勉強にもオススメです。
    • Docker
      • コンテナ型の仮想化ツールを簡単に扱えるようにしてくれてるツール。めっちゃ便利。
      • 基本的にはDocker HubでOfficialとなっているイメージしか使わないポリシーで利用してます。
      • それ以外のイメージが必要になったときは自分でビルドします。
    • Wireshark
      • アプリ開発中にAPIの戻りを調べたりするのによく使ってます。
      • 下記のコマンドで作ったiOSのパケットの解析に利用することが多いです。
// 仮想インターフェースを作成
$ rvictl -s [Macに接続しているiPhoneのUUID]
// パケットをキャプチャして保存
$ tcpdump -i rvi0 -s0 -w hoge.pcap

まとめ

開発ツールとしては、なるべくメジャーなものを選ぶようにしているので、モバイル開発者としては、とくに目新しいものはないはず。

また、モバイルには全く関係無いものも複数含まれてます。
最近は仮想マシンとして簡単に作って壊せる環境ができるのでとてもとても便利ですよね。 昔は遊び用のPC買って、CD-ROMからLinux入れて遊んでましたが、今はコマンド一発で全てが終わる時代。
便利ではありますが、しっかりと裏で動いている仕組みまで理解していきたい。。。

個人的な考え方ですが、少しの差なら多少不便でもよく使われているツールの方を選んで利用しています。
理由として大きいのは下の2点です。

  • SSHで知らないマシンに入った時のストレスを減らしたいから。
  • メジャーなほうがマイナーなソフトウエアより情報量が多いから。

これ書きながら自分の環境を振り返ってみると、私は「可用性」を重視する性格なのかなーって気がしてきました(笑)
UNIXの考え方や哲学みたいなものが好きなのも影響しているかな。
よく使われるUNIXのツールなんて可用性や汎用性の塊ですし、 grepやsed、awk、findのような素晴らしいツールを作ってくれた先人達には感謝の気持ちしかない。

なぜか最後UNIXの話になってしまったけど、今回はこの辺で。 フィードバックあれば気軽にTwitterまでお願いします。