Casual Developers Note

エンジニアやデザイナー向けの技術情報・英語学習情報・海外留学情報・海外旅行情報を提供中。世界を旅して人生を楽しもう。

  • ホーム
  • 技術 Tips & Tutorials
  • 技術塾
  • ライフハック
  • 海外留学
  • 英語学習
  • コラム
  • お問い合わせ
現在の場所:ホーム / アーカイブtumblr-imported

2017年8月12日 By KD コメントを書く

初心者エンジニア必見!Windows VS Mac 推奨基本ツール

初心者エンジニア必見!Windows VS Mac 推奨基本ツール

そろそろ夏休みですねー。俺は今海外です(笑)数年は日本には戻らない予定ですが、人生は気分とタイミングで決まるのでどうなるかは未来の自分しか知りません。手に職があるので何とでもなると思っているこの頃です。

対象

今回の記事は初心者のアプリケーションエンジニア向けです。 特にWindowsを主に使っている人向けに、自分のお薦め(推奨)の基本ツールセットを紹介します。ついでに、Macに乗り換えたばかりの人は助かることがあるかもしれません。

基本ツールとは?

今回はターミナル、シェル、ランチャー、パッケージマネージャーのことだと定義します。(良い言い方が思いつかなかったので。)また、テキストエディタに関しては対象外としました。完全に好みの問題ですし、WindowsとMacで差異はほぼ無いためです。(とは言っても安定のSublime Text3かVisual Studio Codeがお薦めです。サクラエディタやTextMateを使ってる人はもういないでしょう。)

推奨基本ツールの一覧

  Windows Mac
ターミナル Cmder iTerm
シェル GitBash Bash
ランチャー Launchy Alfred
パッケージマネージャー Chocolatey Homebrew

ターミナル

Windowsはコマンドプロンプト(用の端末)が標準で搭載されていますが、かなりショボいです。Macで標準で搭載されているターミナルと比較しても、枠を簡単に調節できないし、コピペがめんどくさい上に、デザインもダサいです。 Windowsの標準は良いとこなし。そこでCmderの登場です。上記のコマンドプロンプトの弱点をすべてカバーしてくれます。

一方、Macは標準のターミナルでもWindowsより優れていますが、iTermに乗り換えればタブで開けたりなどさらに便利になります。

シェル

Windowsには専用のコマンド群が用意されていますが、Linuxコマンドとは異なるため、tail -fやsshなどのコマンドが使えません。そこでGit for Windowsをインストールすることで付いてくるGitBush(msysgit)が便利です。これを入れれば、Linuxの基本コマンド郡がexeとして手に入ります。自分はCmderからGitBushとPowerShellを切り替えながら使っていました。(もうCygwinを使う人もいないでしょう。)

ちなみに、Windows標準でtail -fをするには、PowerShellから「Get-Content ファイル -Wait -Tail 末尾からの行数」と入力すれば良いです。Windowsユーザでも意外と知らない人がいますよね。

なお、Bash on Linux on Windowsはまだ様子見の段階だと思います。MacやLinuxのようになることはOSを一から作り直さない限り無いと思いますが、Windowsにしては前向きな取り組みですね。

MacはLinuxと同じシェル環境が手に入るので、好きなシェルが選び放題です。特にこだわりが無い人は標準のBashが一番でしょう。機能性重視の人はやはりZshになるかと思います。

ランチャー

Windowsには標準でランチャーがありません。なので、もうめんどくさいです。そこで、昔からあるLaunchyがまあまあ良いです。他にも、WowやHainあたりを試してみるのも良いでしょう。Windowsユーザはランチャーがあるだけで捗りますよ。

Macは安定のAlfredでしょう。標準のSpotlightで満足できるならそれで良いですけどね。

パッケージマネージャー

Windowsに何かソフトを入れる場合はサイトからインストーラをダウンロードしてきてインストールするのが一般的ですが、PCをセットアップするたびにうんざりします。LinuxやMacみたいにコマンドだけでインストールできないものでしょうか?そこで、Chocolateyの出番です。パッケージが豊富というわけではありませんが、そこそこ必要なものは手に入ります。

他にも、マイナーなところでScoopもありますし、.Net用にはNuGetが提供されていますので、試してみるのも面白いです。

Macはもはや一強となったHomebrewです。一世代前のMacPortsはいつの間にか誰も使っていません。Homebrew-Caskも素晴らしいです。(一時期Chef/Puppet/AnsibleでMacの環境を構築するヲタクがいましたが、過去の話です。)

最後に

自分はWindowsからMacに乗り換えた派なので、両方の良さとWindowsの苦しみを知っています。と言うか、普通の人ならWindowsが最初のPCになると思いますが、MacにするともうWindowsに戻れそうにありません。Windowsユーザがせめて少しでも良い環境を手に入れられることを願ってこの記事を書きました。Windowsもっと頑張れ!

カテゴリ : 技術塾 タグ : launcher, mac, packagemanager, shell, terminal, tumblr-imported, windows

2017年5月25日 By KD コメントを書く

[tips][Kotlin] GradleでKotlin入門

[tips][Kotlin] GradleでKotlin入門

皆さん、お久しぶりです。Keidです。 気づくとかなり更新していませんでした。 え、何してたって?炎上案件に決まってるでしょ!察して(笑)

なぜ今Kotlinか?

KotlinはJetBrains社が開発したJVM系のプログラミング言語です。 2016年のリリースからジワジワ来ていて、今年のGoogle IO 2017でAndroidのKotlin対応が公式発表されました。 つまり、来年は皆Android開発をKotlinですることになるでしょう。 iOSもObjective-CからSwiftになったことですし、良い感じの変化ですね。

Kotlinで書くメリット

  • Java100%互換なので、Javaの資産使い放題
  • 「Null安全」という考え方により、ヌルポを防げる
  • Andoridの場合は、古いjava6の文法から解放される(Java単体だとそろそろ9なのに)
  • 何と言っても、AndroidのKotlin公式対応に余裕で追従できる
  • それに、Javaプログラマはかなり移行しやすい文法(少なくとも俺は)

対象

  • Javaを書ける人(Androidの知識はいらない)
  • Gradleは知ってれば良い(まだMavenの人はこの機会に移行しましょう。)
  • とにかく「Hello, Kotlin」したい人

この記事で書くこと

  • Kotlinの開発環境
  • GradleでのKotlinアプリケーション開発入門
  • Kotlinのテスト(少しだけ)

この記事で書かないこと

  • Kotlinの詳細な文法(ググってね)
  • KotlinによるAndorid開発入門

1. Kotlinの開発環境

1-1. Kotlinのインストール

まずはSDKMANをインストールします。

$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
$ sdk version
SDKMAN 5.5.9+231

続いてSDKMAN経由でKotlinをインストールします。

$ sdk install kotlin
$ kotlin -version
Kotlin version 1.1.2-2 (JRE 1.8.0_131-b11)

1-2. IDEの準備

現時点でKotlinの開発環境はIntelliJ IDEAの一択です。インストールしていない人はコミュニティ版を入れてください。

  • IntelliJ IDEA ダウンロード

Homebrewがある人はCask経由でインストールできます。

$ brew cask install intellij-idea-ce

実はEclipseにも「Kotlin Plugin for Eclipse」というプラグインがありますが、全然ダメです。 どれくらいダメかは試してみてもらってもいいのですが、補完がイケてないですし、そもそもアプリケーション実行時にEclipseが落ちるので真面に使えません。

1-3. この記事読んでてまさかGradle入れていない人

そんな人はさっき入れたSDKMANからインストールできます。

$ sdk install gradle

2. GradleでのKotlinアプリケーション開発入門

2-1. まずJavaアプリケーションの雛形を作る

Gradleでinitコマンドを実行します。プロジェクト名は「hello-kotlin」にしますか。

$ mkdir hello-kotlin
$ cd hello-kotlin
$ gradle init --type java-application
$ cat build.gradle
apply plugin: 'java'
apply plugin: 'application'
repositories {
    jcenter()
}
dependencies {
    compile 'com.google.guava:guava:21.0'
    testCompile 'junit:junit:4.12'
}
mainClassName = 'App'

その後でsrcフォルダの構成を変更します。ついでに不要なJavaファイルも消しましょう。

$ tree src/
src/
├── main
│   └── java
│       └── App.java
└── test
    └── java
        └── AppTest.java
$ rm -rf src/main/java/
$ rm -rf src/test/java/
$ mkdir src/main/kotlin
$ mkdir src/test/kotlin
$ tree src/
src/
├── main
│   └── kotlin
└── test
    └── kotlin

ここでGradleをよく使う人なら「gradle init –type kotlin-application」はないのか?と思うと思いますが、現時点でありません。確かGradleのissueには上がっていましたよ。

2-2. Kotlinの設定を追加

Kotlinに必要なスクリプトとプラグインを設定ファイル(build.gradle)に記載します。

// kotlin script
buildscript {
    ext.kotlin_version = '1.1.2-2'
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
apply plugin: 'kotlin'
// apply plugin: 'java'
apply plugin: 'application'
repositories {
    mavenCentral() // for kotlin plugins
    jcenter()
}
dependencies {
    // kotlin plugins
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
    // compile 'com.google.guava:guava:21.0'
    testCompile 'junit:junit:4.12'
}

// mainClassName = ‘App’

ポイントは以下です。

    • Kotlinのbuildscriptにより、「apply plugin: ‘kotlin’」が有効になる。
    • Mavenリポジトリ上にある「kotlin-stdlib」及びテスト用の「kotlin-test-junit」のプラグインを設定している。

「mainClassName」は一旦コメントアウトしておきます。(あとで設定)

2-3. IDEからインポートする

IntelliJ IDEAを起動し、「import Project」から「hello-kotlin」プロジェクトをインポートします。

2-4. Hello Kotlin

「hello」パッケージを作成し、「Hello」クラスを作成しましょう。IDEから実行してみてください。

package hello

fun main(args: Array<string>) {
    println("Hello, Kotlin!")
}

すでにJavaのおきまりの「public static void main」に比べるとシンプルです。

この程度のクラスならもっとシンプルに書けます。

fun main(args: Array<string> = println("Hello, Kotlin!")

2-5. Gradleで実行してみよう

先ほど作成したHello.ktクラスを「build.gradle」ファイルの「mainClassName」に追記します。

mainClassName = 'hello.HelloKt'

ポイントは以下です。

  • build.gradle上ではHello.ktファイルを「Hello + Kt」として表現するところです。これはKotlinのmainのクラスファイルのデフォルトの命名規則です。
  • 好きな名前のクラスファイルを作成したい場合は「@file:JvmName」 で以下のように指定すれば上記の条件は不要です。
@file:JvmName("Hello")
package hello

fun main(args: Array<string>) = println("Hello, Kotlin!")
mainClassName = 'hello.Hello'

それではコマンドラインから実行してみましょう。(もちろんIDEからもできます)

$ gradle run
:compileKotlin
Using kotlin incremental compilation
:compileJava NO-SOURCE
:copyMainKotlinClasses
:processResources NO-SOURCE
:classes UP-TO-DATE
:run
Hello, Kotlin!

BUILD SUCCESSFUL

Total time: 6.435 secs

2-6. ちなみに

いろいろコマンドラインでやっていますが、IntelliJ IDEAから「Create New Project」からのGradleプロジェクトでKotlinを選択すればほぼ同じ環境が出来上がります。え、今までの苦労は、、、でも、その代わりにGradleのKotlinの設定を理解できたはずです。

3. テストを書いてみよう

Helloクラスはテストを書くには微妙なので、無駄にラムダ式を使って書き直します。

package hello

fun main(args: Array) {
    println(hello("kotlin"))
}

val hello: (String) -> String = {
    val words = mutableListOf<string>()

    words.add("Hello")
    words.add(when (it.length) {
        0 -> ""
        1 -> it.toUpperCase()
        else -> it[0].toUpperCase() + it.substring(1)
    }).toString()

    words.joinToString(separator = ", ").plus("!!")
}

HelloTestクラスのテストはこんな感じです。

package hello

import org.junit.Test
import kotlin.test.assertEquals

class HelloTest {

    @Test fun testHelloHasMessage() {
        assertEquals(expected = "Hello, Kotlin!!", actual = hello("kotlin"))
    }

}

せっかくなので、コマンドラインからテストしてみましょう。

$ gradle test
:compileKotlin
Using kotlin incremental compilation
:compileJava NO-SOURCE
:copyMainKotlinClasses
:processResources NO-SOURCE
:classes UP-TO-DATE
:compileTestKotlin
Using kotlin incremental compilation
:compileTestJava NO-SOURCE
:copyTestKotlinClasses
:processTestResources NO-SOURCE
:testClasses UP-TO-DATE
:test

BUILD SUCCESSFUL

Total time: 13.342 secs

成功しました!

最後に

ここまでくれば、明日からKotlinでググりまくりながらアウトプットを出せます。新しい言語に億劫なのって結局最初だけですし、あとは文法勉強するだけですから。

久しぶりに書いたらQiitaみたいな書き方になってしまいました。個性死んじゃう(泣)

環境

  • OS : macOS Sierra 10.12.4
  • Kotlin : 1.1.2-2 (JRE 1.8.0_131-b11)
  • Gradle : 3.5
  • IntelliJ IDEA CE : 2017.1.3 Build #IC-171.4424.56

カテゴリ : 技術 Tips & Tutorials タグ : gradle, kotlin, tips, tumblr-imported

2015年12月31日 By KD コメントを書く

[column] 正月だし御節食べながら技術ブログ書きませんか?

[column] 正月だし御節食べながら技術ブログ書きませんか?

2016年、明けましておめでとうございます。

迷走系エンジニアのKeidです。このブログ「Keid’s LIFE」も4年目に入りました。当初の記事を見るとどんどん黒歴史が出来上がっていますね(笑)この間テレビで30手前で人生を考え直した的なあるある話を見て、俺もまさにその時期だな、と感じています。後悔だけはしたくないなー。

このブログは、平日400PV、休日は150PVくらいのアクセスがあり、一週間に2000人強が見に来てくれています。学生時代にプライベートな日記ブログを書いていたことがありますが、その時は1日1人も見に来てくれればラッキーくらいの過疎地で、今のアクセス数は驚きです。それだけ、役に立っていると言うことだと思いますので、嬉しいことです。

俺がブログをしている理由は今のところ一つだけです。

「世界のエンジニアやデザイナの小さな助けになるため」です。

(日本語で書いてますけど、アメリカやヨーロッパからもアクセスがあるんですよ、不思議と。)

エンジニアなら誰もが経験したことがあるはずです。何か技術的な問題にぶち当たり、その解決策をググりにググり、ある記事によって助けられた経験が。何度も(笑)

このブログは、世界の技術ブロガーへの感謝の気持ちを込めて、その恩返しとして、同じようにググっているエンジニアやデザイナへ貢献するための「小さな一歩」だと考えています。

技術ブログなんて、本当に小さな記事で良いと思います。その記事がどんなに小さな問題解決であっても、それで助けられる人はいますから。インターネットのロングテールは小さな記事を誰もが発見できるようにし、多くの人を助ける仕組みを提供してくれています。

少し話が変わりますが、前に、それなりに有名なエンジニアが集まるセッションを見に行ったことがあります。その時の有名エンジニアの方々が「ずっとコードを書いていたい。(まともな食事もとらずに)お菓子だけでずっとコーディングしている。(俺、かっこいいでしょ)」的な発言をしていました。俺は「こいつら、正気か?」と思ったのは言うまでもありません。うまいもの食べながらコーディングしたいですから。まったく、有名人の言うことは意味が分かりません(笑)

コーディングもブログも、ガッツリうまいもの食べて、リラックスできる空間で、テイラースウィフトの音楽を聴きながらしたいものです(^ー^)

ということで、

お正月ですし、豪華な御節でも食べながら技術ブログ書きましょう!

きっと、あなたの記事で助けられる人がいますよ。

カテゴリ : コラム タグ : blog, column, tumblr-imported

  • « 前のページ
  • 1
  • 2
  • 3
  • 4
  • 5
  • …
  • 11
  • 次のページ »

ブログ更新情報や海外の関連情報などを配信する無料メルマガ

Sponsored Links

About Author

KD

世界を旅し日本を愛するエンジニア。大学でコンピュータサイエンスの楽しさを学び、日本の大手IT企業で働く中で、新しい技術やスケールするビジネスが北米にある事に気づく。世界に挑戦するための最大の壁が英語であったため、フィリピン留学およびカナダ留学を経て英語を上達させた。現在は日本在住でエンジニアとして働きつつ、次の挑戦に備えて世界の動向を注視している。挑戦に終わりはない。このブログでは、エンジニアやデザイナー向けの技術情報から、海外に留学したい人向けの留学情報、海外に興味がある人向けの海外旅行情報など、有益な情報を提供しています。

https://casualdevelopers.com/

最近の投稿

  • 2020年JS周辺のバックエンド寄りの注目技術!ネクストNodeJSの「Deno」と分散型パッケージレジストリの「Entropic」の紹介

    2020年JS周辺のバックエンド寄りの注目技術!ネクストNodeJSの「Deno」と分散型パッケージレジストリの「Entropic」の紹介

    2020年1月13日
  • 今さら聞けないJavaによる関数型プログラミング入門 ~ラムダ式、ストリーム、関数型インターフェース~

    今さら聞けないJavaによる関数型プログラミング入門 ~ラムダ式、ストリーム、関数型インターフェース~

    2019年11月4日
  • ReactのためのEslintおよびPrettierの設定方法 ~Airbnb JavaScript Style Guideの適用~

    ReactのためのEslintおよびPrettierの設定方法 ~Airbnb JavaScript Style Guideの適用~

    2019年10月30日
  • BashからZshに移行する方法(Mac編)

    BashからZshに移行する方法(Mac編)

    2019年10月21日
  • Create React Appを使わないでゼロからReactの開発環境を構築する方法(Webpack/Docker編)

    Create React Appを使わないでゼロからReactの開発環境を構築する方法(Webpack/Docker編)

    2019年9月30日

カテゴリ

  • 技術 Tips & Tutorials (100)
  • 技術塾 (6)
  • ライフハック (26)
  • 海外留学 (12)
  • 英語学習 (3)
  • コラム (6)

アーカイブ

最高の学習のために

人気記事ランキング

  • MySQLで「ERROR 2003 (HY000): Can't connect to MySQL server」と怒られた時の対処法
    MySQLで「ERROR 2003 (HY000): Can't connect to MySQL server」と怒られた時の対処法
  • Expressで「Cannot set headers after they are sent to the client」と怒られた時の対処法
    Expressで「Cannot set headers after they are sent to the client」と怒られた時の対処法
  • SAKURAのメールボックスで独自ドメインのメールを設定し、Gmail経由で送受信する方法
    SAKURAのメールボックスで独自ドメインのメールを設定し、Gmail経由で送受信する方法
  • AWS ECRとECSの入門(EC2編) ~ ECSのEC2版を使ってReactのDockerアプリケーションをAWS上で稼働させる方法 ~
    AWS ECRとECSの入門(EC2編) ~ ECSのEC2版を使ってReactのDockerアプリケーションをAWS上で稼働させる方法 ~
  • 爆速でJenkinsをマスターしよう(GitHubアカウント統合編) ~ JenkinsのGitHub Organizationの設定方法 ~
    爆速でJenkinsをマスターしよう(GitHubアカウント統合編) ~ JenkinsのGitHub Organizationの設定方法 ~
  • Amazon EC2インスタンスにSSHできなくなった時の対処法
    Amazon EC2インスタンスにSSHできなくなった時の対処法
  • バンクーバー留学豆知識:バンクーバーのATMで日本の銀行のキャッシュカードを使ってお得にお金を引き出す方法
    バンクーバー留学豆知識:バンクーバーのATMで日本の銀行のキャッシュカードを使ってお得にお金を引き出す方法
  • Jupyter Notebookで「The kernel appears to have died. It will restart automatically.」というエラーが出た場合の原因と対処法
    Jupyter Notebookで「The kernel appears to have died. It will restart automatically.」というエラーが出た場合の原因と対処法
  • [tips][bat] バッチで明日の日付を計算する。
    [tips][bat] バッチで明日の日付を計算する。
  • [tips][perl] Perlで文字コードをいい感じに処理する方法
    [tips][perl] Perlで文字コードをいい感じに処理する方法

Bitcoin寄付 / BTC Donation

Bitcoinを寄付しよう

BTC
Select Payment Method
Personal Info

Donation Total: BTC 0.0010

このブログの運営のためにBitcoinでの寄付を募集しています。お気持ち程度の寄付を頂けると管理者の励みになります。

Bitcoin寄付について知りたい方はこちらの記事へ

ビットコイン取引ならここ

  • ホーム
  • 技術 Tips & Tutorials
  • 技術塾
  • ライフハック
  • 海外留学
  • 英語学習
  • コラム
  • サイトマップ
  • タグ一覧
  • プライバシーポリシー
  • お問い合わせ

Copyright © 2023 KD - Casual Developers Notes