すずろぐ

人生大逆転を目指す、鈴木俊吾の成長日記

スポンサーリンク

Ruby入門 第2回 数値の表現・四則演算および変数

Ruby

こんにちは、すずしんです。

前回に引き続き、Rubyの学習を進めてみました。
今回学習したのは、Rubyにおける数値の表現と四則演算および変数についてです。

数値の表現と表示

Rubyで数値を表現するには、単に数字を並べて書けば良いです。

100
3.14

数値を表示するには、文字列と同様にprintメソッドやputsメソッドを使います。

puts(100)
puts(3.14)

四則演算

当然ながら、数値の四則演算を行う事が可能です。
加算は「+」、減算は「-」、乗算は「*」、除算は「/」、剰余は「%」を使います。

puts(7 + 3) # 加算
puts(7 - 3) # 減算
puts(7 * 3) # 乗算
puts(7 / 3) # 除算
puts(7 % 3) # 剰余
10
4
21
2
1

変数

変数というのは、簡単に言うと値を保持しておく箱のようなものです。
変数に値を入れることを「代入」すると言います。
変数名は、基本的に分かりやすい名前を付けるようにします。

message = "Hello, Ruby!"
value = 10.5
age = 25
name = "Suzuki"

変数の利用例として、直方体の表面積と体積を求めるプログラムを見てみます。

x = 5
y = 10
z = 20
area = 2 * (x * y + y * z + z * x)
volume = x * y * z
print("表面積: ", area, "\n")
print("体積: ", volume, "\n")
表面積: 700
体積: 1000

ひとこと

今回は、Rubyの主に四則演算と変数について学習してみました。
特に難しい事は無いです。
パパッと確認する程度でしたよ。
この調子でどんどんと学習を進めていきたいですね。

Ruby入門 第1回 最初のRubyプログラム(HelloWorld)

Ruby

こんにちは、すずしんです。

最近、私はRubyのプログラミングに興味を持ち始めました。
そこで、まずはRubyの基本文法について学習することにしました。
ここでは、基本となる最初のRubyプログラム(HelloWorld)について調べました。

最初のRubyプログラム

Rubyの最初のプログラムは以下のような感じになります。
いわゆるHelloWorldです。
これを「hello.rb」として保存しておきます。

print("Hello, World!\n")

Rubyプログラムの実行方法

コマンドプロンプトやターミナルを起動します。
そして、hello.rbがあるディレクトリまで移動します。
その後、rubyコマンドでhello.rbを指定して実行します。

ruby hello.rb
Hello, World!

プログラムの解説

最初のRubyプログラムについて簡単に解説します。

オブジェクト

"Hello, World!\n"という部分は、Stringオブジェクト(文字列オブジェクト・文字列)と呼びます。
「Hello, World!\n」という文字列を表すオブジェクトという意味になります。
Rubyでは、文字列・数値・時刻などといった様々なデータがオブジェクトになります。

メソッド

今度は「print」に注目してみます。
この「print」というのはメソッドです。
メソッドというのは、オブジェクトを操作する手続きの事を言います。
また、メソッドに渡す値のことを引数と言います。

printメソッドは、引数として与えられた文字列の内容をコンソールに出力するメソッドです。
そのため、hello.rbで書いたプログラムでは、「Hello, World!」という文字列が表示されます。

文字列

文字列オブジェクトを作成するための区切り文字には、ダブルクォート("")の他、シングルクォート('')も使う事ができます。
シングルクォートで文字列を囲った場合、「\n」などの特殊文字の解釈をせず、そのまま出力します。

print('Hello,\nRuby!\n')
Hello,\nRuby!\n

putsメソッド

putsメソッドは、表示する文字列の最後で改行を行います。
ですので、最初のプログラムは以下のように書くこともできます。
状況に応じてprintメソッドと使い分けると良いです。

puts("Hello, World!")

pメソッド

pメソッドは、オブジェクトの内容を表示するときに便利なメソッドです。
引数の型によって、表示方法が変わります。
ハッシュや配列の内容などを表示するときに使うと良いです。

puts("1") # 1
puts(1)   # 1
p "1"     # "1"
p 1       # 1

ひとこと

今回の記事では、Rubyの最初のプログラムであるHelloWorldについて学習してみました。
Rubyでは、わずか1行で文字列が表示できてしまうのです!
非常に簡単ですね。

今後は、よく使われる基本的な文法について学んでいきたいと思います。
できるだけ早い時期に、Rubyで色々なプログラムが書けるようになりたいですね。

Aptana Studioがインストールできない(エラー発生)時の対処法

プログラミング

こんにちは、すずしんです。

今日は、プログラミングの開発環境を構築していました。
その際に、「Aptana Studio」という統合開発環境(IDE)を導入しようとしたのですが…。
普通にインストールしようとするとエラーになってしまいます。
そこで、対処法を調べて実践してみたところ、何とか無事にインストールができました。

これは同じ問題で悩む人がいるかもしれないと思いましたので…。
今回の記事では、Aptana Studioがエラー発生でインストールできない時の対処法について、まとめておきたいと思います。

Aptana Studioとは?

Aptana Studioというのは、Eclipseベースでオープンソースの高機能なWebオーサリングツールです。
HTML5/CSS3/JavaScriptに標準で対応しています。
プラグインを追加することで、PHPやRuby on Railsの開発にも利用することができます。

Aptana Studioは以下のページからダウンロードできます。
もし興味があるのなら、ぜひダウンロードしてみてくださいね。

Aptana | Download Aptana Studio 3.6.1

インストール時のエラー

Aptana Studioをダウンロードして、いざインストール作業をしてみたのですが…。
その際に、以下のようなメッセージが出てインストールができませんでした。

Failded to currently acquire installer_nodejs_windows.msi file: CRC error

このエラー内容から察するに、Node.jsがインストールされていないからだと推測されますが…。
ただ、Node.jsをインストールしていても、このエラーが発生するようです。
これは困りましたね…。

対処法

そこで、対処法を探してみたところ、以下の記事を見つけました。
この方法で試してみたところ上手くいきましたね。

qiita.com

やり方としては、まずダウンロードしたファイル(私の場合はAptana_Studio_3_Setup_3.6.1.exe)を、自分の分かりやすいところ(ここではデスクトップ)に配置します。
そして、コマンドプロンプトを起動して、カレントディレクトリをファイルを配置した場所に移動します。

cd "C:\Users\(ユーザー名)\Desktop"

そして、以下のようなコードを入力して実行します。

Aptana_Studio_3_Setup_3.6.1.exe /passive /norestart

これでうまくいけば、Aptana Studioがインストールされて、デスクトップにAptana Studioのショートカットアイコンが作成されるはずです。

ひとこと

インストーラーから普通にインストールできれば特に問題無いのですが…。
時々、こういったトラブルが発生するときがあるのですよね。
最初に対処法を見つけた方は、本当にすごいと思いますよ。

ひとまず、これでAptana Studioが使えるようになりましたね。
今後は、Aptana Studioを使いながら、PHPやRuby on RailsといったWebプログラミングの学習をしていこうと思っています。
さぁ、気合いを入れて頑張ろうっと!

Kotlin 最小公倍数(LCM)を求めるプログラムを作成してみた!

f:id:Suzushin:20170429140030j:plain

おはようございます、すずしんです。

前回の記事では、Kotlinでユークリッドの互除法を使って、最大公約数(GCD)を求めるプログラムを作成してみました。

www.suzushin7.jp

最大公約数(GCD)を求めたら…。
次にやりたくなるのは、最小公倍数(LCM)ですよね?
というわけで、今回はKotlinで最小公倍数(LCM)を求めるプログラムを作成してみました。

最小公倍数(LCM)とは?

最小公倍数というのは、 2つ以上の正の整数の共通な倍数(公倍数)のうち、最小のものを最小公倍数といいます。
英語で言うと「Least Common Multiple」となります。
略してLCMですね!

簡単な最小公倍数(LCM)の例を挙げてみます。
16と24の最小公倍数(LCM)の求め方として、基本的な方法では以下のように行います。

16の倍数: 16, 32, 48, 64, ...
24の倍数: 24, 48, 72, 96, ...
16と24の最小公倍数: 48

ですが、ここでは最小公倍数(LCM)を最大公約数(GCD)を使って求めてみます。
すると、最小公倍数(LCM)は以下のように求めることができます。

LCM(a, b) = (a * b) / GCD(a, b)

つまり、2つの数a, bの最小公倍数(LCM)を求めるには、aとbをまず掛け合わせて、その値をaとbの最大公約数(GCD)で割れば良いということです。
16と24の最小公倍数(LCM)の例では以下のようになります。

LCM(16, 24) = (16 * 24) / GCD(16, 24) = 384 / 8 = 48

Kotlinで最小公倍数(LCM)を求めるプログラム

以上を踏まえて、Kotlinで最小公倍数(LCM)を求めるプログラムを書いてみると以下のようになります。

import java.util.*

fun main(args: Array<String>) {
    val scanner = Scanner(System.`in`)
    val a = scanner.nextInt()
    val b = scanner.nextInt()
    scanner.close()
    println(String.format("lcm(%d, %d) = %d%n", a, b, lcm(a, b)))
}

fun gcd(a: Int, b: Int): Int = if(a < b) gcd(b, a) else if(b == 0) a else gcd(b, a % b)
fun lcm(a: Int, b: Int): Int = (a * b) / gcd(a, b)

main関数では、まずScannerを使って標準入力を受け付けるようにします。
そして、nextInt()で2つの数字a, bを取得します。
最後に、lcm(a, b)の計算結果を出力しています。

gcd(a, b)は、aとbの最大公約数(GCD)を求める関数です。
ユークリッドの互除法を使って計算しています。

lcm(a, b)は、aとbの最小公倍数(LCM)を求める関数です。
aとbを掛け合わせた値から、aとbの最大公約数(GCD)を割ることで最小公倍数(LCM)を求めています。

プログラム自体はかなりシンプルですよね。

プログラムの実行結果

上記プログラムの実行結果の例は以下のようになります。
ここでは、16と24の最小公倍数(LCM)を求めてみました。
すると、確かにその値は48となっていて、正しく求められているのが分かりますね。

16 24
lcm(16, 24) = 48

ひとこと

今回は、Kotlinで最小公倍数(LCM)を求めるプログラムを作成してみました。
最大公約数(GCD)を求めることができれば、最小公倍数(LCM)は簡単に計算することができることが分かりますね。

最大公約数(GCD)と最小公倍数(LCM)は、いわばセットのようなものです。
プログラミングの練習問題としてもちょうど良いと思いますので…。
あなたも得意なプログラミング言語で、これらを求めるプログラムを作成してみてはいかがでしょうか?

Kotlin 最大公約数(GCD)を求めるプログラムを作成してみた!

f:id:Suzushin:20170429140030j:plain

こんばんは、すずしんです。

今日は、Kotlinのプログラミングをしてみました。
今回作成したプログラムは、ユークリッドの互除法最大公約数(GCD)を求めるというものです。
Kotlinのプログラミングは、なかなか楽しいです。

最大公約数(GCD)とは?

最大公約数というのは、共通する約数の中で一番大きな数のことを言います。
最大公約数は、英語で「Greatest Common Divisor」と言います。
略してGCDですね!

最大公約数の例を挙げてみます。
例えば、16と24の最大公約数の基本的な求め方では以下のように行います。

16の約数: 1, 2, 4, 8, 16
24の約数: 1, 2, 3, 4, 6, 8, 12, 24
16と24の最大公約数: 8

ユークリッドの互除法とは?

ユークリッドの互除法と言うのは、2つの自然数の最大公約数を求めるアルゴリズムの1つです。
2つの自然数a,b(a ≧ b)において、aのbによる剰余をrとした時、aとbの最大公約数はbとrとの最大公約数に等しいという性質が成り立ちます。
この性質を利用して、bをrで割った剰余、除数rをその剰余で割った剰余、と剰余を求める計算を繰り返し、剰余が0になった時の除数がaとbとの最大公約数となります。

最大公約数を求める関数をgcd(a, b)として、先ほどの例であげた16と24の最大公約数を求める例を見てみます。

gcd(24, 16) = gcd(16, 8) = gcd(8, 0) = 8

いかがでしょうか?
かなりシンプルに最大公約数を求めることができますよね。

Kotlinで最大公約数(GCD)を求めるプログラム

それでは本題です。
以上の事を踏まえて、Kotlinで2つの数a,bの最大公約数(GCD)を求めるプログラムを作成してみました。
それが以下のプログラムです。

import java.util.*

fun main(args: Array<String>) {
    val scanner = Scanner(System.`in`)
    val a = scanner.nextInt()
    val b = scanner.nextInt()
    scanner.close()
    println(String.format("gcd(%d, %d) = %d%n", a, b, gcd(a, b)))
}

fun gcd(a: Int, b: Int): Int {
    if(a < b) return gcd(b, a)
    if(b == 0) return a
    return gcd(b, a % b)
}

main関数では、まずScannerを用意して標準入力を受け付けるようにします。
そして、nextInt()を使って2つの数字を取得します。
最後に、それらの最大公約数をgcd()で求めて結果を出力しています。

gcd関数では、最初のif文でaとbの大きさの比較をしています。
その後、剰余bが0になっていたら、最大公約数はaなのでaの値を返します。
そうでなければ、剰余r = a % bとして、gcd(b, r)を計算します。
再起呼び出しなので、bが0になるまで繰り返し計算されます。

プログラム自体は、どちらも非常にシンプルですよね。

プログラムの実行結果

上記プログラムを実行した結果の例は以下の通りです。
ここでも、16と24の最大公約数を求めてみました。
確かに、最大公約数が8となっていて、正しい値になっていることが分かりますね。

16 24
gcd(16, 24) = 8

ひとこと

今回の記事では、Kotlinでユークリッドの互除法を使った最大公約数(GCD)を求めるプログラムを作成しました。
ユークリッドの互除法のアルゴリズムが理解できれば、実装は非常に簡単ですね。
比較的サクッとプログラムを書くことができました。

こうしたプログラムを書くことは、プログラミングにおいて良い練習になると思います。
あなたも得意なプログラミング言語で、最大公約数(GCD)を求めてみてはいかがでしょうか?

追記

Kotlinでは、gcd(a, b)を以下のように書くこともできます。
参考までにどうぞ。

fun gcd(a: Int, b: Int): Int = if(a < b) gcd(b, a) else if(b == 0) a else gcd(b, a % b)

ぜひ使って!自作フリーソフト「デスクトップ付箋」の紹介

こんにちは、すずしんです。

現在、私は趣味でプログラミングをしています。
これまでには、いくつかのAndroidアプリやフリーソフトを開発してきました。

これらのAndroidアプリやフリーソフトは既に外部で公開しているのですが…。
知名度がありませんので、なかなかダウンロードして使ってもらえていないのが現状です。

そこで、今回の記事では…。
私が過去に作成した自作フリーソフトデスクトップ付箋」の紹介をさせてもらおうと思います。
この記事を読んだ方には、ぜひとも一度使って頂きたいですね。

デスクトップ付箋とは?

デスクトップ付箋というのは、パソコンのデスクトップに簡易的な付箋を配置することで、簡単なメモを残すことができるようにするフリーソフトです。
ファイルなどにメモしておくのと比べて、常にメモの内容を確認できたり、簡単に編集をしたりすることができるという利点があります。
ちなみに、このデスクトップ付箋はJavaFXで作成しています。

デスクトップ付箋の主な機能は以下のとおりです。
シンプルに使えるような設計にしていますので、付箋紙として必要な最小限の機能のみを実装しています。

  • 付箋紙の作成(大/中/小サイズ)
  • 付箋紙の移動
  • 付箋紙の削除
  • 付箋紙のコンテンツ部分の表示・非表示
  • 付箋紙の編集
  • タイトル/コンテンツの編集
    • 付箋紙の色変更(赤/橙/黄/緑/水/青/紫)
    • 文字サイズの変更(15/18/21/24/27/30)
    • 最上面表示変更
    • 不透明度の変更

デスクトップ付箋のスクリーンショットはこんな感じです。
デスクトップの右上にあるのが、デスクトップ付箋によって作成された付箋紙です。
これで大体どんなものかイメージがつきましたか?

デスクトップ付箋 - スクリーンショット

それでは、ここからデスクトップ付箋の使い方について書いていきます。

新規付箋紙(メモ)の作成

新しい付箋紙を作成するには、タスクトレイ(システムトレイ)にあるデスクトップ付箋のアイコンを右クリック→「新規」からサイズを選択します。
もしくは、既に作成されている付箋紙のタイトル部分上で右クリック→「新規」からサイズを選択します。
サイズは大(400x300)、中(320x240)、小(240x180)の3サイズがあります。

デスクトップ付箋 - 新規付箋紙

デスクトップ付箋 - 新規付箋紙

付箋紙の移動

付箋紙の位置を変えるには、付箋紙のタイトル部分をドラッグしてください。
すると、ドラッグしている間マウスに追従していきます。
配置したい位置でマウスドラッグをやめてください。

デスクトップ付箋 - 付箋紙の移動

付箋紙の削除

付箋紙の削除は、付箋紙のタイトル部分を右クリック→「削除」を選択でできます。
一度削除すると復元できませんのでご注意ください。

デスクトップ付箋 - 付箋紙の削除

付箋紙のコンテンツ部分の表示・非表示

付箋紙の左上にあるボタンをクリックすると、付箋紙のコンテンツ部分の表示・非表示を選択できます。
非表示にすると省スペースになりますので、その状態で並べるとスッキリします。
ちなみに、タイトル部分にマウスを持っていきしばらく待つと、付箋紙のタイトルとコンテンツの内容が表示されるツールチップが表示されます。
そのため、非表示状態でも付箋紙の内容を確認することができます。

デスクトップ付箋 - 付箋紙のコンテンツ部分の表示・非表示

デスクトップ付箋 - ツールチップの表示

付箋紙の編集

タイトル/コンテンツの編集

付箋紙のタイトルの編集は、タイトル部分をクリックしてフォーカスを当ててから文字を入力します。
コンテンツの編集は、コンテンツ部分をクリックしてフォーカスを当ててから文字を入力します。
入力されたテキストはオートセーブされます。

デスクトップ付箋 - タイトル・コンテンツの編集

付箋紙の色変更

付箋紙の色を変更するには、付箋紙のタイトル部分を右クリック→「設定」→「色」から選択可能です。
赤/橙/黄/緑/水/青/紫の中からお好きな色を選んでください。

デスクトップ付箋 - 付箋紙の色変更

文字サイズの変更

付箋紙の文字サイズを変更するには、付箋紙のタイトル部分を右クリック→「設定」→「文字サイズ」から選択可能です。
15/18/21/24/27/30からお好きなサイズを選んでください。
ちなみに、これによって変わるのはコンテンツ部分の文字サイズとなっています。

デスクトップ付箋 - 文字サイズの変更

付箋紙の表示方法の設定

付箋紙の表示方法を設定するには、付箋紙のタイトル部分を右クリック→「設定」→「表示」から選択可能です。
最上面を選択すると、常に付箋紙が一番上に表示されるようになります。
通常を選択すると、通常の表示方法となります。

デスクトップ付箋 - 表示方法の設定

付箋紙の不透明度の設定

付箋紙の不透明度を設定するには、付箋紙のタイトル部分を右クリック→「設定」→「不透明度」から選択可能です。
設定可能な不透明度は0.1~1.0の10段階となっています。
あなたが使いやすいと思う値を設定してくださいね。

デスクトップ付箋 - 不透明度の設定

ダウンロード

デスクトップ付箋は、現在Vectorにて公開中です。
以下にリンクを貼っておきますので、そこからダウンロードをしてください。
ファイルをダウンロード後、解凍してできたフォルダの中の「DesktopFusen.jar」をクリックすると起動します。

www.vector.co.jp

ちなみに、このデスクトップ付箋を動作させるためには、最新版のJava Runtime Environment(JRE)が必要になります。
もしJREがお使いのパソコンにインストールされていない場合には、以下のリンクからJREをダウンロード・インストールしてください。

java.com

一応、デスクトップ付箋はWindowsのみでの動作確認をしていますが…。
Javaで作成していますので、おそらくMacでも動くのではないかと推測されます。
Windowsの方はもちろんですが、Macの方もぜひ試してみてください。

ひとこと

今回の記事では、過去に作成した自作フリーソフト「デスクトップ付箋」の紹介をしてみました。
このデスクトップ付箋を使うと、簡単かつ手軽にデスクトップ上にメモを残すことができるようになります。

もし興味を持ってもらえたなら…。
ぜひデスクトップ付箋をダウンロードして実際に使ってみてくださいね。
感想などを頂けるとありがたいです。

Kotlin プログラミングの基本「FizzBuzz問題」を解いてみた

f:id:Suzushin:20170429140030j:plain

おはようございます、すずしんです。

Kotlinが私の中でマイブームです。
そのため、最近はもっぱらKotlinの勉強をしています。
今日は何か基本的なプログラムでも書こうと思いたち、どんなプログラムを書こうかと悩んだ結果…。
今回は、プログラミングの基本的な練習問題である「FizzBuzz問題」をKotlinで解いてみることにしました。

FizzBuzz問題とは?

FizzBuzz問題というのは、1から100まで順番に数字または指定の文字列を出力する問題です。
3の倍数の時は「Fizz」、5の倍数の時は「Buzz」、3の倍数かつ5の倍数の時は「FizzBuzz」と出力します。
その他の場合は数字を出力します。

具体的な例としては、以下のようになります。

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
...
FizzBuzz
91
92
Fizz
94
Buzz
Fizz
97
98
Fizz
Buzz

FizzBuzz問題の考え方

FizzBuzz問題は、基本的にif文とループが理解できて、それらを正しく使う事ができれば問題無く解けると思います。

ある数字nが3の倍数であるかどうかを判定するには、剰余(%)を使って以下のように書きます。

if(n % 3 == 0) {
  ...
}

同様にして、数字nが5の倍数であるかどうかは以下のように書けますね。

if(n % 5 == 0) {
  ...
}

3の倍数かつ5の倍数の場合には、&&で条件をつなげます。

if(n % 3 == 0 && n % 5 == 0) {
  ...
}

実際のプログラム上では、まず3の倍数かつ5の倍数であるかを確認します。
その後、else if文を使って3の倍数または5の倍数であるかどうかを確認します。
それらのどれにも該当しない場合がelse文になります。
具体的には、以下のような感じですね。

if(n % 3 == 0 && n % 5 == 0) {
  ...
}
else if(n % 3 == 0) {
  ...
}
else if(n % 5 == 0) {
  ...
}
else {
  ...
}

1から100までループさせるには、やり方が色々とありますが…。
ここではfor文を使ってみます。
Kotlinでは例えば以下のように書けます。

for(n in 1..100) {
  ...
}

FizzBuzz問題のプログラムのソースコード(Kotlin)

以上を踏まえて、Kotlin版FizzBuzz問題のプログラムのソースコードは以下のようになりました。

fun main(args: Array<String>) {
    for(n in 1..100) {
        val fizz = (n % 3 == 0)
        val buzz = (n % 5 == 0)
        val result = if(fizz && buzz) "FizzBuzz"
            else if(fizz) "Fizz"
            else if(buzz) "Buzz"
            else "$n"
        println(result)
    }
}

ポイントとしては、倍数確認の結果を変数fizz,buzzに代入しているところでしょうか。
そのfizz,buzzの結果をif文で参照して出力するべき文字列をresultに代入します。
そして、resultをprintln()で出力します。

nが3の倍数であれば、fizzの値はtrueになります。
nが5の倍数であれば、buzzの値はtrueになります。
nが3の倍数かつ5の倍数の時というのは、fizzの値がtrueかつbuzzの値がtrueの時にtrueになります。
else文が実行されるのは、これらのいずれにも該当しない時ですね。
つまり、fizzとbuzzがfalseの時という事になります。

プログラムの実行結果

上記プログラムの実行結果は以下のようになります。
正しく問題の条件のとおりに出力されているのが分かります。

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
...
FizzBuzz
91
92
Fizz
94
Buzz
Fizz
97
98
Fizz
Buzz

ひとこと

今回は、KotlinでFizzBuzz問題を解いてみましたが…。
特にこれといった問題はありませんね。
比較的サクッと解くことができましたよ。

このFizzBuzz問題は、プログラミング言語を学習し始めた頃に取り組むと良いと思います。
もしあなたがプログラミングを習いたてなら…。
ぜひこのFizzBuzz問題を、学習中のプログラミング言語で解いてみてはいかがでしょうか?

読者の方の中には、もしかするとプログラミングをやったことがない方がいるかもしれませんね。
でも、何となく今回のプログラムの内容が分かるような気がしませんか?
この記事の内容が理解できれば、あなたは既にプログラミングの入門ができていると思いますよ。
ちょっと勉強すれば、きっとプログラミングが楽しめる域まで行けるようになります。
もし良かったら、あなたもプログラミングの世界に飛び込んでみませんか?
私にできる範囲であればサポートしますよっ!

プログラミングは私の好きな分野ですので…。
今後もプログラミング関連の記事を書くことが多くなるかもしれません。
これらの記事を通して、少しでもプログラミングに興味を持ってくれる人が増えてくれたら嬉しいですね。

関連記事

www.suzushin7.jp

Kotlin 整数リストの選択ソートプログラムを作成してみた

f:id:Suzushin:20170429140030j:plain

こんにちは、すずしんです。

今日は、Kotlinの学習をしてみました。
Kotlinのおおまかな仕様を確認した後で、どんなプログラムを書こうかなと考えていたのですが…。
ここはやはり比較的入門しやすいソートのプログラムを書いてみようとなりました。
そこで、今回は整数リスト選択ソートをするプログラムを作成してみました。

選択ソートとは?

選択ソートというのは、配列の最小値(最大値)を持つ要素を探して、それを配列の先頭要素と交換することで整列を行っていくソートアルゴリズムです。
最悪計算量はO(n2)と遅いのですが、実装が単純なためしばしば用いられることがあります。

ここでは、昇順で値を並びかえることを考えます。
選択ソートでは、まずデータ列の中で最も小さい値を探し、1番目の要素と交換します。
続いて2番目以降のデータ列から最も小さい値を探し、2番目の要素と交換します。
このような手順を、データ列の最後(の1回前)まで繰り返すとソートが完了します。

数字を使った選択ソートの例は以下のような感じです。
各回で最も小さい値を探して、値を入れ替えるという手順を踏みます。

5 9 1 4 7 (初期状態)
1 9 5 4 7 (1回目)
1 4 5 9 7 (2回目)
1 4 5 9 7 (3回目)
1 4 5 7 9 (4回目)
1 4 5 7 9 (終了)

Kotlinでの選択ソート

今回私が作成した、Kotlin版選択ソートのソースコードは以下のような感じです。

main関数では、まずScannerを用意して標準入力を受け付ける準備をします。
そして、整数のリストとなる文字列を入力してもらい、それを整数のMutableListに変換します。
そのリストの内容を表示して初期状態を確認してから、ソートを行い、再びリストの内容を表示しています。
sort関数では、forループでインデックスを更新しながら、各回の最小値を探して交換する作業を繰り返しています。

import java.util.*

fun main(args: Array<String>) {
    val scanner: Scanner = Scanner(System.`in`)
    val n: MutableList<Int> = scanner.nextLine().split(",").map({ it.toInt() }).toMutableList()
    scanner.close()

    println(n)
    sort(n)
    println(n)
}

fun sort(n: MutableList<Int>) {
    var tmp: Int
    var minIndex: Int
    for(i in n.indices.filter({ it < n.size - 1 })) {
        minIndex = i
        n.indices.filter({ it >= i + 1 }).forEach({ j -> if(n[j] < n[minIndex]) minIndex = j })
        if(minIndex != i) {
            tmp = n[i]
            n[i] = n[minIndex]
            n[minIndex] = tmp
        }
    }
}

今回のプログラムを作成するにあたって困ったのが、forループの回数指定です。
forループ中に使うためのインデックス(i, j)の範囲を指定する方法が最初分からず悩みましたが…。
filter()を使えば上手くいくかもと思って、試しにやってみたところ良い感じになりました。

私はJavaでも選択ソートのプログラムを書いたことがありますが…。
Javaとは若干プログラムの雰囲気が違います。
Kotlinに慣れてしまうと、こちらの方が書きやすくなるのでしょうかね?

実行結果

上記のプログラムを実行してみた結果の例は以下のような感じです。
整数のリストの入力は「,」で区切って入力します。
実行結果を見てみると、確かに昇順に並び替えられているのが分かりますね。

5,1,8,4,9,2,3,7,6
[5, 1, 8, 4, 9, 2, 3, 7, 6]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

ひとこと

今回はKotlinで選択ソートをするプログラムを作成してみましたが…。
アルゴリズムの基本的な考え方は他の言語とも同じですね。
後はどうやって実装するかの話になってきます。

私はまだまだですが…。
map()やfilter()などをうまく使いこなせるようになれば、もっと簡潔にプログラムを書けそうな感じがしますね。
スムーズにプログラムを作成できるようにもっと勉強しなければっ!

やはり、Hello Worldのプログラムと比べれば…。
だいぶプログラムを作成したという達成感がありますね。
今後はさらに高度な事ができるように、Kotlinの学習を続けていきたいと思います。

関連商品

amzn.to

Kotlin入門 IntelliJ IDEAで開発環境の構築とHello World

こんにちは、すずしんです。

GoogleがAndroid開発言語としてKotlinを採用するというニュースがありました。
これは大きな出来事でしたね。

www.suzushin7.jp

これを受けまして…。
今後、Androidアプリの開発の際にはKotlinを使ってみたいと思いまして…。
私はこの機会にKotlinの学習をしてみることにしました。

今日は、Kotlinのプログラミングができる開発環境構築してみました。
そして、Hello Worldのプログラムを作成して動作を確認するところまでやってみました。
実際試してみると結構面白いですね。

そこで、今回の記事では…。
InttelliJ IDEAを使ったKotlinの開発環境の構築および最初のプログラムを作成するところまでを解説してみます。
あなたもぜひこの機会にKotlinに触れてみてはいかがでしょうか?

Kotlinとは?

Kotlinというのは、JetBrains社のアンドリー・ブレスラフとドミトリー・ジェメロフが開発した、静的型付けのオブジェクト指向プログラミング言語です。
オペーレーティング・システムに関係なく、Java仮想マシン上で動作させることが可能なJVM言語の1つです。
Java言語で書かれたプログラムとほぼ同じくらいの速度でコンパイルされ、同じくらいの速度で動作するとされています。
Kotlinで書かれたプログラム(.kt)は、コンパイルされるとクラスファイル(.class)になります。

IntelliJ IDEAとは?

IntelliJ IDEAというのは、Kotlinを開発したJetBrains社が提供しているIDE(統合開発環境)です。
Javaの統合開発環境としては、Eclipseに次いでIntelliJ IDEAが2番目の人気になっているようです。
無料のCommunity Editionと有料のUltimate Editionの2つがあります。

今回使用するのは、IntelliJ IDEAのCommunity Editionです。
こちらでは、Java・Scala・Groovy・Clojure・KotlinといったJavaプラットフォーム上で動作する言語のみの対応となっています。
Kotlinの学習用途で利用するので問題ないですね。

IntelliJ IDEAのダウンロードとインストール

まずは、何はともあれIntelliJ IDEAをダウンロードしましょう。
以下のリンク先に移動します。
そして、ページの右上にあるDownloadをクリックします。

www.jetbrains.com

以下のようなページになりますので…。
あなたがお使いのパソコンのOSが選択されているかどうかを確認してから、Community Editionの方のDownloadをクリックします。
すると、IntelliJ IDEAのダウンロードが始まります。

f:id:Suzushin:20170522112042j:plain

ダウンロード完了後は、ダウンロードしたファイルをクリックしてインストールをします。
基本的には、指示に従っていくだけなので簡単ですね。
インストールには少々時間がかかりますので、コーヒーでも飲みながらまったり待ちましょう。

Kotlinプラグインのインストール

IntelliJ IDEAのインストールが完了したら、続いてIntelliJ IDEAにKotlinプラグインをインストールします。

IntelliJ IDEAを最初に起動すると、Set UI Theme画面がまず表示されます。
IntelliJとDarculaの2つからお好きな方を選択してください。
私は何となくDarculaを選択してみました。

f:id:Suzushin:20170522113331j:plain

続いて、TUNE IDEA to your tasks画面が表示されます。
ここではそのままにしておいて、「Next: Featured plugin」をクリックします。

f:id:Suzushin:20170522113536j:plain

Download featured plugins画面が表示されます。
ここもそのままにしておいて、「Start using IntelliJ IDEA」をクリックします。

f:id:Suzushin:20170522113758j:plain

Welcome to IntelliJ IDEAという画面になると思います。
ここで、右下にある「Configure」をクリックして、表示される項目の中から「Plugins」を選択します。

f:id:Suzushin:20170522114123j:plain

Plugins画面になります。
画面左下にある「Install JetBrains plugin...」をクリックします。

f:id:Suzushin:20170522114410j:plain

Browse JetBrains Plugins画面になります。
検索ボックスに「Kotlin」と入力すると、Kotlinのプラグインが表示されると思います。
そのKotlinプラグインを選択して、右側の画面に表示される「Update」をクリックしてください。
更新が終わったら、「Restart IntelliJ IDEA」をクリックして再起動してください。

f:id:Suzushin:20170522114748j:plain

新規プロジェクトの作成

IntelliJ IDEAを再起動すると、Welcome画面になります。
ここで、「Create New Project」を選択します。

f:id:Suzushin:20170522115248j:plain

プログラム言語の選択になります。
左側の画面から「Kotlin」をクリックして、右側の画面から「Kotlin(JVM)」を選択して「Next」をクリックします。

f:id:Suzushin:20170522120252j:plain

プロジェクト名とSDKの設定を行います。
Project nameには「HelloKotlin」、Project SDKにはインストールしているJDKを選択します。
もしJDKをまだインストールしていない場合には、その下にある「Download JDK」からJDKをダウンロード・インストールしてから改めて作業を行ってください。
設定が終わったら「Finish」ボタンを押します。
しばらく待つと「HelloKotlin」プロジェクトが作成されます。

f:id:Suzushin:20170522120326j:plain

Hello.ktの作成と実行

それでは、いよいよKotlinでのプログラミングを始めます。

まずは「Hello.kt」を作成します。
プロジェクトの「HelloKotlin」→「src」を選択してある状態にします。
そして、右クリック→「New」→「Kotlin File/Class」を選択します。

f:id:Suzushin:20170522121044j:plain

「New Kotlin File/Class」画面になります。
Nameに「Hello」と入力して「OK」ボタンを押します。
これで、Hello.ktが作成されます。

f:id:Suzushin:20170522124602j:plain

右側にある編集画面で、以下のようにソースコードを編集します。
コピペではなく、自分の手で入力してくださいね。
そうしないと、プログラミングの練習にはなりませんので…。

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

入力が終わったら、メニューの「Run」→「Run」を選択します。
実行するファイルを訊かれますので「HelloKt」をクリックします。
すると、コンパイルされた後、プログラムが実行されます。
画面下に表示されるコンソールに「Hello, world!」と表示されましたね。

f:id:Suzushin:20170522125725j:plain

f:id:Suzushin:20170522125849j:plain

次回以降、Hello.ktを実行する際には…。
画面右上にある再生ボタン(▶)を押せば実行できますよ。

以上で、Hello.ktの作成と実行方法についての説明を終わります。
お疲れ様でした。

ひとこと

今回の記事では、IntelliJ IDEAを使ってKotlinのプログラムを作成するところまでの解説を行いました。
いかがでしたでしょうか?
うまくできましたか?

やはり、プログラムが正しく実行するところを見ると…。
「おぉ、ちゃんと動いた!」と嬉しくなってきますよね。
もし同じようにちょっと感動したような人は、きっとプログラミングを楽しめるようになると思いますよ。

これで、Kotlinの学習環境が揃いました。
これから私はKotlinの勉強を本格的に始めてみたいと思います。
いずれは、Androidアプリの開発にもKotlinを使えるようにするつもりです。
今後が非常に楽しみですね!

この記事を読んでいるあなたは、プログラミングに興味があるということなのでしょうかね?
もしくは何となく読んでいるだけなのかもしれませんが…。
それでもここまで読んでいただけてありがたいですね。

プログラミングに興味がある方はもちろんなのですが…。
今までプログラミングに関心が無かったという方も、ぜひ一度はプログラミングを実際に体験してみてください。
もしかしたら、プログラミングの楽しさにハマるかもしれませんよっ!?

Android StudioにKotlinの開発環境を導入する方法

おはようございます、すずしんです。

前回の記事で、GoogleがKotlinAndroid開発言語として正式サポートすると発表したことについて書きました。
これは非常に大きなニュースですね!

www.suzushin7.jp

そんなわけで、私もAndroid開発にKotlinを使ってみたいと思うようになりまして…。
手持ちのAndroid StudioにKotlinの開発環境を導入してみることにしました。
実際にやってみると、意外と簡単に導入することができましたね。

そこで、今回の記事ではAndroid StudioにKotlinの開発環境を導入する方法について書いてみます。
もしあなたがAndroid開発をしているのなら、この機会にKotlinを導入してみる価値はあると思いますよ。

Kotlinとは?

Kotlinというのは、JetBrains社のアンドリー・ブレスラフとドミトリー・ジェメロフが開発した、静的型付けのオブジェクト指向プログラミング言語です。
100%Javaと互換性があり、OSに関わらずJava仮想マシン上で動作します。
Javaで書かれたプログラムと同等くらいの速度で動作します。
Kotlinで作成したファイル(.kt)は、コンパイルするとクラスファイル(.class)になります。

Android StudioにKotlinの開発環境を導入する方法

それでは、以下からAndroid StudioにKotlinの開発環境(プラグイン)を導入する方法、およびKotlinを使ったAndroidアプリの作成方法について書いていきます。
手順に沿ってやっていけば、誰でも導入ができると思います。

Kotlinプラグインの導入

まずは、Android Studioを起動します。
メニューの「File」→「Settings」を選択して、Setting画面を表示させます。

f:id:Suzushin:20170519120827j:plain

画面の左側にある項目の中から「Plugins」を選択します。
そして、右側に表示される画面の下にある「Install JetBrains plugin...」をクリックします。

f:id:Suzushin:20170519121147j:plain

Brouse JetBrains Plugins画面になります。
検索ボックスの中に「Kotlin」と入力してKotlinのプラグインを検索します。
Kotlinプラグインが見つかると思いますのでそれをクリックします。
その後、右側にある「Install」をクリックしてください。

すると、Kotlinプラグインのインストールが始まります。
インストール後、Android Studioを再起動してください。

f:id:Suzushin:20170519121639j:plain

Kotlinを使ったAndroidアプリの作成方法

それでは、試しに簡単なAndroidアプリのサンプルを作成してみます。
メニューの「File」→「New」→「New Project」を選択します。

f:id:Suzushin:20170519123942j:plain

Create New Project画面になります。
ここでは、Application nameを「HelloKotlin」、Company domainを「suzushin7.jp」とします。
そして、画面右下にある「Next」ボタンをクリックしてください。

f:id:Suzushin:20170519124359j:plain

Target Android Devicesを選択する画面になります。
「Phone and Tablet」にチェックを入れて、Minimum SDKをここでは「API 14: Android 4.0」にしてください。
設定が終わったら、「Next」ボタンをクリックします。

f:id:Suzushin:20170519124844j:plain

Add an Activity to Mobileを選択する画面になります。
ここでは「Empty Activity」をクリックして選択してください。
その後、「Next」ボタンをクリックします。

f:id:Suzushin:20170519125156j:plain

Customize the Activityの設定画面になります。
これはそのままで大丈夫ですので、「Finish」ボタンをクリックしてください。
以上で、JavaでのAndroidアプリのひな型が作成されます。

f:id:Suzushin:20170519125447j:plain

ここから、Kotlinで開発できるように設定していきます。

Javaで書かれているファイルをKotlinファイルに変換します。
メニューの「Code」→「Convert Java File to Kotlin File」を選択します。
しばらくすると、JavaファイルがKotlinファイルに変換されます。

f:id:Suzushin:20170519130337j:plain

変換が終わると、以下のようになりますね。

package jp.suzushin7.hellokotlin

import android.support.v7.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

メニューの「Tools」→「Kotlin」→「Configure Kotlin in Project」をクリックします。
すると、build.gradle(app)ファイルにKotlin用の記述が自動で追加されますので同期します。

以上で、Kotlinで書かれたプログラムを実行することができるようになりました。
Android Studioの再生ボタンを押して、エミュレーターや実機で実行させてみましょう。

ひとこと

今回の記事では、Android StudioにKotlinの開発環境(プラグイン)を導入する方法について書いてみました。
一見手順が多そうに見えますが、実際にやってみるとそう多くはありません。
所要時間としてはおそらく10分もあればできると思います。

Androidアプリの開発は、今後Kotlinでの開発が増えてくるのではないかと思います。
その際にすぐに対応できるように、今の内からKotlinに慣れておくと良いかもしれませんよ。

関連商品