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」を選択しても同じ。

Share

【golang】mapの要素順は変動する

■環境
OS X El Capitan 10.11.6
go 1.8 darwin/amd64

タイトルの件、ちょっと引っかかったのでメモです。

golangで変数にmapを格納する場合、その要素の順番は
呼び出すたびに変わります。

以下サンプルコードです。
mapをrangeで取り出しながらforで回し、標準出力する
という処理を3回繰り返します。

package main

import (
	"fmt"
)

func main() {
	// create new map
	fruitColor := make(map[string]string)
	fruitColor["pineapple"] = "yellow"
	fruitColor["apple"] = "red"
	fruitColor["grape"] = "purple"
	fruitColor["melon"] = "green"

	// printout 3 times
	for i := 1; i <= 3; i++ {
		fmt.Println(fmt.Sprintf("===== %d times =====", i))
		for name, color := range fruitColor {
			fmt.Println(fmt.Sprintf("%s is %s", name, color))
		}
	}
}

これを実行すると、このように出力されます。
要素順は変動するので、実行する度に変わると思います。

===== 1 times =====
apple is red
grape is purple
melon is green
pineapple is yellow
===== 2 times =====
grape is purple
melon is green
pineapple is yellow
apple is red
===== 3 times =====
melon is green
pineapple is yellow
apple is red
grape is purple

上記のような順不同なアプリケーションだとしても、
ユーザが画面を表示する度に順番が変わるのは気持ち悪いので
sliceを使って表示順を保持しておいた方が良いです。

sliceを使う例は以下の通りです。

package main

import (
	"fmt"
)

func main() {
	// create new map
	fruitColor := make(map[string]string)
	fruitColor["pineapple"] = "yellow"
	fruitColor["apple"] = "red"
	fruitColor["grape"] = "purple"
	fruitColor["melon"] = "green"
	// set display order
	fruitList := []string{"pineapple","apple","grape","melon"}

	// printout 3 times
	for i := 1; i <= 3; i++ {
		fmt.Println(fmt.Sprintf("===== %d times =====", i))
		for _, name := range fruitList {
			fmt.Println(fmt.Sprintf("%s is %s", name, fruitColor[name]))
		}
	}
}

これを実行すると以下のようになります。

===== 1 times =====
pineapple is yellow
apple is red
grape is purple
melon is green
===== 2 times =====
pineapple is yellow
apple is red
grape is purple
melon is green
===== 3 times =====
pineapple is yellow
apple is red
grape is purple
melon is green

Share

【golang】NetBeansでgo言語を使えるようにする

元々NetBeansでPHPをやっているので
同じIDEでgoも使うために設定してみました。
■環境
Ubuntu 16.04
NetBeans 8.1

①「http://plugins.netbeans.org/plugin/25606/go」からnbmファイルをダウンロードする。
②NetBeansのメニューより「Tools->plugin」を選択
③Downloadedタグにて「Add Plugins」をクリックして、ダウンロードしたnbmファイルを選択する。
④「Install」ボタンをクリックする。
⑤Installを進めていき、最後にNetBeansの再起動をして完了。

以上でgoが使えるようになります。
新規プロジェクトでHTML5プロジェクトなどを作成し、プロジェクト内でファイルの新規作成を選択すると
ファイルのカテゴリにGoが追加されています。

※2017/1/31 追記
GOプロジェクトを作成できるようになるプラグインも見つけました
http://plugins.netbeans.org/plugin/62162/go-project

Share