【Mac】42 Tokyo Piscine向け環境構築〜エディタ編〜

42 Tokyoの1月Piscineに向け、環境構築方法を改めて考えてみました。今回はエディタ編です。続くかは分かりません。

注:Piscineネタバレ防止のため、この記事は2020/01/06以降、更新されなくなる可能性があります。ご了承ください。

  • 追記:記事内の情報が古くなったため、2022/05/28にPiscineのネタバレにならない範囲で更新しました。

選定エディタ(Visual Studio Code

Visual Studio Codeとは、Microsoftが開発しているコードエディタです。

選定理由

検討したがやめた物

CLion:機能が充実してそうだが学生以外有料。

Visual Studio for MacWindowsではC/C++を扱えた記憶がありましたが、Macは対象外のようです。

AtomWindowsで使ってみて重かったため。

Cloud9:使ったことはないのですが、AWSのアカウントを作るのはハードルが高い気がします(確認の電話がかかってくるし、クレカorデビットカードが必要)。

インストール

Microsoft公式 もしくは Homebrew Cask からインストールします。

Microsoft公式からインストールする場合は、「今すぐ無料でインストールする」から「Mac」のボタンをクリック。

Homebrew Caskを使う場合は、Homebrewインストール後、以下のコマンドを実行してください。

brew cask install visual-studio-code

各種設定

設定(⌘,)

検索欄から設定項目を検索し、変更します。

Editor: Render Whitespace

  • 「all」を選択
    • 全ての空白文字を表示するように。

Editor: Render Control Characters

  • チェックを入れる
    • 制御文字を表示します。

Files: Trim Trailing Whitespace

  • チェックを入れる
    • ファイル保存時、末尾の余分な空白文字を削除します。

Files: Trim Final Newlines

  • チェックを入れる
    • ファイル保存時、末尾の余分な改行を1行を残して削除します。

Editor › Bracket Pair Colorization: Enabled

  • チェックを入れる
    • ブラケット( {}() )を色分けしてくれます。

Editor › Guides: Bracket Pairs

  • 「active」を選択
    • 現在カーソルを合わせているブラケットのガイドラインを表示します。

Workbench: Color Customizations

  • ブラケットの色設定がデフォルトだと少し鮮やかすぎるように感じたので、ほんのり分かる程度の色に設定しました。

  • ブラケットの色設定をする場合、「settings.json で編集」をクリックして編集します。

Bracket Pair Colorizer設定例

"workbench.colorCustomizations": {
    "editorBracketHighlight.foreground1": "#efc1db",
    "editorBracketHighlight.foreground2": "#baddef",
    "editorBracketHighlight.foreground3": "#fff9c6"
},

拡張機能(⇧⌘x)

検索欄から拡張機能を検索し、インストールします。

全般

Japanese Language Pack for Visual Studio Code
  • エディタを日本語化します。

C言語

C/C++
  • エディタにC/C++の言語サポートを追加します。
Code Runner
  • 現在のファイルや範囲選択したコードを実行できる拡張機能。C, C++にも対応しています。

コードの可読性を高める

zenkaku

Git関連

GitLens — Git supercharged
Git Graph
  • commitログやブランチをグラフィカルに表示してくれる拡張機能

必要なら入れる拡張

CMake関係

CMakeはクロスプラットフォーム向けのMakefile生成ツールです。Piscineで必要そうなら入れます。

(CMakeはMacでは標準でインストールされていません。インストール方法はいくつかありますが、Homebrewを使ってインストールすると楽かと思います)

Markdown関係

Markdown記法を使った文章の作成を補助します。

参考URL

qiita.com

qiita.com

code.visualstudio.com

変更履歴

2022/05/28

  • Bracket Pair Colorizer:VSCode本体の機能として取り込まれたため、設定方法を更新。
  • Setting Sync:VSCode本体の機能として取り込まれたため、記載を削除。
  • Git関連:Git History ではなく Git Graph を紹介するように。
    • 個人的にGit Graphの方が見た目が分かりやすいため。

『ペアプログラミング―エンジニアとしての指南書』読書メモ

Laurie Williams, Robert Kessler著の『ペアプログラミング―エンジニアとしての指南書』を読んだメモです。

読もうとしたきっかけ

1ヶ月前、友人とペアプログラミングをしました。とても面白い体験でした。その時にこの本を見せてもらって興味を持ち、図書館で借りました。

見せてもらった時は、特に第3部が気になりました。人をタイプ付けし、ペアでのメリット・デメリットを解説されていました。ペアプログラミング以外でも人に教える時役に立ちそうだと感じました。

概要

ペアプログラミングについて書かれた本です。

本書は5部で構成されています。

 第1部:ペアプログラミングの説明

 第2部:ペアプログラミング実践上の詳細(ベストプラクティスや机の配置など)

 第3部:さまざまな種類のペアのメリットとデメリット

 第4部:ソフトウェア開発プロセス(XP, CSP)でのペアプログラミングに関する事例

 第5部:将来の方向性(既存の枠を超えたペアプログラミング, 有能なペアプログラマの7つの習慣, 付録)

面白かった部分

第1部 理解の習得

学生を対象とした実験。ペアプログラミングしたグループはしなかったグループと比べ、

  • 納期が安定する(期日内に課題を提出する)
  • コードが20%短くなる(設計がより良くなる、保守コストが減少する)

とのこと。工数が増加しないのは意外でした。

第3部 ペアプログラミングパートナー選択の法則

ペア選択のメリット、デメリット、対処方法の説明。各章冒頭の例はユーモアがあり面白かったです。

以下の組み合わせが参考になりました。

  • 専門家、平均的な人、新人
    • 技術レベルの分類
      • 専門家:説明できる
      • 平均的な人:できるけれど、説明できない
      • 新人:できない
    • 専門家と専門家のペアは、お互いへの尊敬。
    • 専門家と平均的な人のペアは、コミュニケーション。
    • 専門家と新人のペアは忍耐が大事だそうです。
  • 外交的、内向的
    • 自身のコミュニケーションパターンを把握して、相互理解に努めるのが大切だと感じました。

また、「第23章 過少な自尊心の問題」にあった、「とても賢い」は存在しない。ペアプログラミングでは全ての人に貢献できることがある。という言葉も刺さりました。どちらかというと自信が無い方なので。

理解できなかった部分

付録B ペアプログラミングの経済上の分析

経済上の分析はよく分からず飛ばしました。データが古い(199X〜年)からいいかなって。基本情報、応用情報で見た単語があるなあと思いました。

感想

監修者あとがきにあるように、この本はペアプログラミングだけでなく、あらゆるチーム開発に役立つと感じました。

ペアプログラミングはコミュニケーションが無いと成り立ちません。コミュニケーションはペアプログラミングでなくとも仕事で必要になるからです。

現在は会社に所属しておらず、組織にペアプログラミングを浸透させる機会は無いですが、組織に属してペアプログラミングを導入したいと思った場合は4, 5章が役に立ちそうです(ただし、万人にペアプログラミングが向いているわけではないそうです)。

またペアプログラミングしたいなあと思う1冊でした。

pipenvコマンド実行時、pkg_resources.DistributionNotFoundが出た場合の対処法

環境

  • OS: macOS Mojave 10.14.6
  • IDE: PyCharm 2018.3.7
  • Python: 3.6.5
  • Pipenv: 2018.11.26(Homebrewを使いインストール)

事象

PyCharmで仮想環境作成時、エラー画面「Error Running Pipenv」が表示。

Terminalでpipenvコマンド実行時も同様のエラーが発生。

トレースバックは以下。

Traceback (most recent call last):
  File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/bin/pipenv", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3241, in <module>
    @_call_aside
  File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3225, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3254, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 583, in _build_master
    ws.require(__requires__)
  File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 900, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 786, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'pipenv==2018.11.26' distribution was not found and is required by the application

解決方法

pipenvを再インストールする。

brew reinstall pipenv

原因

不明。GitHubでも同様の事象が報告されている。

brew install spontaneously breaks requiring reinstall · Issue #4013 · pypa/pipenv

その他参考URL

python - pkg_resources.DistributionNotFound: The 'pipenv==2018.10.13' distribution was not found and is required by the application - Stack Overflow

『初めてのProcessing 第2版』読書メモ(19章まで)

はじめに

初めてのProcessing 第2版』はProcessingを通してオブジェクト指向プログラミングを学ぶことができる本です。

以前TwitterでProcessingで作られた映像を見てProcessingに興味を持ち、図書館で借りてみました。

全23章中19章までの読書メモになります。読み終わるまで2-3ヶ月目安の本を2-3週間で読もうとしましたが無理がありました。練習問題などは飛ばし飛ばしやっていました。

各章詳細

1-3章

ピクセル、カラーやProcessingの話。

2章でProcessingの環境構築をします。

  • PDEはデフォルトのフォントSource Code Proだと日本語が文字化けしたため、環境設定から Menlo に変更しました。
  • コード補完も有効に。Ctrl + Spaceで補完候補が表示されます。

4-9章

基本的な文法を学びつつ、Processing独自の変数・関数を学んでいきます。

変数、条件文、ループ、関数、オブジェクト、配列。

概念説明→Processingで書いてみる、の繰り返し。この辺りは流し読みで進めました。

10章

これまでの章の総まとめ。オブジェクト指向を使って雨粒キャッチゲームを作りました。

11, 12章

箸休め的内容。デバッグ方法、ライブラリの説明。

13-15章

ここから応用的な内容になってきます。数学, 3D, 画像処理など。

  • ピクセル集合処理が面白かったです。ペイントソフトのフィルタ処理(ぼかし、鮮鋭化)の方法が知れて良かった。畳み込みって機械学習で聞いた単語だけど、数学用語なんですかね。
  • 練習問題14-5、8個の四角形からなる3次元の立方体を作るという問題。おそらく6個の四角形だと思われます。

16, 17章

ビデオとテキスト。カメラの映像がその場で画像処理されるのが楽しくて良かったです。

18章

データ入力。

  • HTMLをStringで取得・処理して要素を取ってくるのつらみがありました。XMLJSONはクラスが用意されていましたが。静的型付け言語だから、JSONObjectとJSONArrayクラスがあるのはなるほど…と思いました。

  • 練習問題・例を実行するためにOpenWeatherMapとNYTimesのAPI Key登録が必要。

例18-5

サンプルコードをそのまま実行したら文字化けしました。URLから取得するファイルがgzip圧縮されているようです。

Terminalで以下のコマンドを実行して、dataフォルダ下にgzip解凍したテキストファイルを出力。

cd [例18-5のスケッチディレクトリパス]
mkdir data
curl "http://www.gutenberg.org/cache/epub/1514/pg1514.txt" | gunzip > data/pg1514.txt

サンプルコードを修正してローカルファイルを読み込むようにしました。

String[] rawtext = loadStrings("data/pg1514.txt");

19章

クライアント・サーバを作りました。ネットワークの本、基本情報の本読むと理解が深まりそうだと思いました。

telnetでサーバへ接続確認する箇所があります。macOS High Sierra以降はコマンドが入ってないのでbrew installする必要あり。

環境面

  • 例はlearningprocessingから見れますが一部表示されません。ファイルをダウンロードして実行した方が良さそうです。

  • PDEはしんどいので、以下の記事を参考にVSCodeでスケッチを実行できるようにしました。特に例はいちいちPDEから開くのが面倒なので、この方が良いです。

    Processingのvscode開発環境を構築(Mac)

  • Retinaディスプレイだと pixelDensity() で解像度設定をする必要あり。

感想

  • Processingは簡単に、インタラクティブな画像処理ができるのが強みなんだなと思いました。
  • HSPっぽさを感じましたが、画像描画して遊ぶのがHSP以来だったのと、副作用がある関数が多いからかもしれません。
  • Zoogちゃんがキモカワイイ
  • 途中までしか読めなかったので、また借りるか買うかして読みたいです。