プログラミング言語初心者はスクリプト言語オススメ!

プログラミング初心者にはスクリプト言語が平易だし需要もありオススメです。

Pythonのkivyの基本について

Kivy は PythonGUI のプログラムを作るためのオープンソースのライブラリです。

【結論】

タッチパネル操作を含むGUIの作成が可能になります。

【理由】

オープンソースとはソースコードの改変や再配布が自由に認められている無償のソフトウェアです。
kivyのGUIとは簡単に言えば操作できる画面の事です。

kivyとはタッチパネル操作ができますからスマホアプリによく使われてます。

【具体例】

エディタはvscodeでやります。

#ターミナルでpip3 install kivyでインストール

from kivy.app import App

App().run() #ウインドウ表示


vscodeでターミナルを開いてコマンドにpip3 install kivyでインストールするとkivyが起動します。
コードにfrom kivy.app import App入れてkivyを呼び出して、App().run() を書くとウインドウを表示します。

【結論】

kivyはGUIの作成ができスマホアプリを作るのに活用できます。
kivyを使用する時はターミナルでpip3 install kivyとコマンド入れてインストールします。





取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com

Rubyのクラスとインスタンスの作成

Rubyのクラスとは設計図のようなものです。
モノを組み立る設計図がクラスであり、そこで作られたモノがインスタンスです。

実際にコードを見てみましょう。

【コード】


#クラス
class Cat #メソッドのまとまり
def initialize(name,weight)
@name = name
@weight = weight
end

def eat(food)
@weight += 1
p "体重:#{@weight}kg"
end

def cry
p "私は#{@name}"
end
end

#インスタンス変数c
cat1 = Cat.new("一郎",5)
cat2 = Cat.new("二郎",3)

cat1.eat("魚")
cat2.eat("魚")
cat1.eat("魚")



【解説】

ネコが魚を食べると体重が1キロ増えるという処理です。

クラスは

class クラス名
@name = 値
end
で作成します。


class Cat #メソッドのまとまり
def initialize(name,weight)
@name = name
@weight = weight
end

最初のclassの後の変数は必ず大文字になります。

initializeメソッドはインスタンスの生成時に必ず実行したい処理をメソッドを呼び出すことなく実行することができます。

initialize(name,weight)のように引数を入れると@name = name、@weight = weightの値を引き渡して処理する事ができます。

ちなみに@変数はメンバ変数と言いインスタンス変数からアクセスできるようにします。

インスタンス変数は処理を実体化させるもので

cat1 = Cat.new("一郎",5)
cat2 = Cat.new("二郎",3)

cat1.eat("魚")
処理結果> 一郎 5
cat2.eat("魚")
処理結果>二郎 4
cat1.eat("魚")
処理結果> 一郎 6

cat1に一郎、5Kg、cat2に二郎、3Kgとします。

cat1 = Cat.new("一郎",5)がcat1.eat("魚")でこの魚がdef eat(food)の引数foodに代入されます。
そして、5が @weightに代入され += 1で6となります。

次のcat2 = Cat.new("二郎",3)はinitializeメソッドで初期化されまた違うデータとなりcat1と同じ流れで処理され4となります。

1番最後はまたcat1の処理でこれは先ほどのデータが残って2周するのでweightが 5 なのでなこれに+= 1なので6となります。

【結論】

Rubyのクラスはちょっと難解なとこです。
いきなり全部覚えるはなかなか大変です。
クラスは処理の型でインスタンス変数の生成で処理を実際に出すってとこは理解しておきましょう。
後はひたすらコード書いて慣れることです。





取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com

Rubyの想定外エラーの処理

Rubyでは想定外エラーといい自分でエラーを起こさす処理ができます。
何故エラーをわざわざ起こさす必要があるのでしょうか?

例えば入力フォームに間違った文字を入力してログインしようとした時にエラーにして処理をさせないようにする時などに必要になります。


【コード】


#想定外エラー
def calc_tax(i)
fail("数値を指定してください。") unless i.instance_of?(Integer)
i * 1.1
end

begin
p calc_tax("あ") #例外発生,rescueへ飛ぶ
p calc_tax(1)
rescue => e #例外はここにやってくる
p e.message #エラーメッセージ
p e.backtrace #エラー箇所

end
p calc_tax(2)

結果
#"数値を指定してください。"
#["c:/Users/user/Desktop/MyPython/Ruby.arb:56:in `calc_tax'", "c:/Users/user/Desktop/MyPython/Ruby.arb:61:in `

'"]
#>2.2


【解説】

これは間違った値を入れた時のエラーを出す処理をしてそれを中断せずにその後に正しい値を入れた時に処理をするコードです。

書き方ははこんな感じです。

begin
例外の発生をチェックする対象となるプログラム
rescue
例外が発生した場合の処理
end

fail("数値を指定してください。") unless i.instance_of?(Integer)
i * 1.1
end

failは例外を発生させる処理で、unlessはif文とは逆にfalseかどうかを判定します。
i.instance_of?(Integer)は指定した値が整数かどうかを判定します。

beginの後にエラーかどうかを判定するコードを入れます。
p calc_tax("あ")と数値でなく文字列を入れたからエラーが発生し、rescue => eに飛びます。

p e.message #エラーメッセージ
p e.backtrace #エラー箇所

end

ここの処理でエラーメッセージとエラー箇所を表示します。

一方でp calc_tax(1)はcalc_taxに引数1が入って整数なので正しい処理なのでエラーにならずに

p calc_tax(2)の引数2が変数iに代入されて
i * 1.1で2.2と出力されます。


【結論】

Rubyの想定外エラーはやや難しさはあるかもしれません。
普段の処理で使わなくてもアプリケーションは作れてしまいますし。

unlessはfalse判定、beginでエラー判定、rescueはエラーが出たらここに飛ぶって基本は抑えて起きましょう。





取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com

Rubyのreturnなしの戻り値

今回はRubyの戻り値をやります。
Rubyの戻り値も独特な処理があります。

【コード】


#returnと戻り値
def price(age)
if age >= 20
return "大人料金"
else
return
end
end

res = price(20)
p res


【解説】

基本的な処理です。
これは20以上なら大人料金と出力される処理です。

if age >= 20でage変数に20が入れば比較演算子>= は以上なのでres = price(20)で20が入るので大人料金となります。

【コード】

#暗黙的な戻り値


def calc(i)
i = i + 2
end

p calc(1)


def calc(i)
i = i + 2
i
end

p calc(1)


def calc(i)
i + 2
end

p calc(1)

【解説】

暗黙の戻り値といわれこれはreturnを省略できます。
①から③のコードは全て3と出力されますが処理の仕方が違います。

①はp calc(1)でこの値1が引数iに代入されて
i = i + 2でiと2を足して3となります。



def price(age)
if age >= 20
"大人料金"
end
end

res = price(20)
p res

最初に書いたコードもreturnなしで書けます。


【結論】

Ruby独特なreturn無しの戻り値にいかに慣れるかが重要です。

書き方が

def 変数(引数)
処理
end

p変数(引数)

です。

他のPythonなどに慣れてるとなかなか大変だが慣れればスッキリしたコードが書け簡潔で分かりやすくなります。
是非とも慣れましょう。







取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com

Rubyのいろいろなメソッドを動かそう!

Rubyでは複数の処理をまとめたのをメソッドと言います。
他の言語、JavaScriptPythonなら関数と呼ぶがRubyではメソッドと呼びます。

ただ処理の仕方はJavaScriptPythonの関数と基本は同じだがRubyにしかない処理もあります。

では、実際にコードを見ましょう。

【コード】

#メソッド
#メソッドは処理のまとまり
#呼び出されるまで実行されない

def study(lang)
p "#{lang}入門"
p "#{lang}講座"
end
#メソッド呼び出し
study("ruby")
study("php")

#引数のデフォルト値
def say_age(me="私",age=30)
p "#{age}は#{age}歳です"
end

say_age
say_age(nil,20)
say_age("君",20)

#キーワード引数
def say_age(age: 30)
p age
end

say_age(age: 20)
say_age

#可変長引数
def price(*i)
p i #[1,2,3]
end

price(1,2,3)

#オプション引数
def price(**i)
p i
end

price(item1: 100, item2: 200)


【解説】

最初のコードは引数付きです。
Rubyの引数付きメソッドはこのような形になります。
def メソッドの名前(引数1、引数2…)
処理
end

呼び出され方としてメソッド内の処理は呼び出されずにend以降の処理が最初に呼び出されます。

study("ruby")、study("php")が先に呼び出されそれがメソッド内の処理のp "#{lang}入門"、p "#{lang}講座"のlangにrubyphpが代入されてrubyphpと出力されます。




2番目のコードはデフォルト値です。
デフォルト値は引数に既に値を指定できる処理です。
メソッド呼び出し値で引数の値を変えることができます。

このような感じです。
def メソッド名(変数1=デフォルト値1, 変数2=デフォルト値2, ...)
実行する処理
実行する処理
end

me="私",age=30で引数に値を私と30を入れてます。
say_ageで私は30歳ですと出ます。

次の戻り値のsay_age(nil,20)のnilは何も存在しないって処理で0ですから私になります。
引数20はage=30をage=20にするので
私は20歳ですと出力します。

最後の戻り値はsay_age("君",20)はme、ageのデフォルトを全て変えてるので
君は20歳ですと出ます。

あとキーワード引数でキーワードに引数がつけられます。age: 30のように何の処理かが分かりやすくなります。


可変長引数がありこれはRuby独特な処理です。
可変長引数は個別に指定するのでなく配列を指定する時に使用されます。

次のコードの
def price(*i)のように
必ず引数に✳︎アスタリスクをつけて下さい。

配列の要素を複数個指定します。
インスタンスにprice(1,2,3)と引数は何個でも構いません。
これを処理すると1、2、3と出力されます。

そして最後に解説するオプション引数もRuby独特な処理です。
オプション引数とは一つの変数で配列のキーと値を取り出す処理です。

書き方はdef メソッド名( **引数名 )です。
必ず**二つ書きましょう。

def price(**i)でiが配列のキーと値を取得。
このprice(item1: 100, item2: 200)中の
item1 100 、item2 200を取得するので
> item1 100 、item2 200と表示されます。

【結論】

特に可変長引数、オプション引数はRuby独特な処理なので身につけたい。
可変長引数はdef price(*i)で配列の要素を複数個取得できる、オプション引数はdef price(**i)で配列のキーと値をセットで取得できます。





取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com

Rubyのループ処理のキーの取り出し、スキップについて

Rubyのループ処理はキーで値を取り出したり、スキップができます。
今回はその処理をしましょう。

【コード】

#ハッシュのループ処理

arr = {key: "Ruby",key2:"PHP"}
arr.each do |key, value|
p "#{key}は#{value}です。"
end
# key1はrubyです
# key2はphpです

#ループのスキップ
arr = ["ruby", "php", "python"]
arr.each do |lang|
next if lang == "php"
p lang
end
#ruby
#python


【解説】

一つ目のコードはarr = {key: "Ruby",key2:"PHP"}からキーと値を取り出して文字列に表示させる処理です。

オブジェクト.each do |変数|
実行する処理1
実行する処理2
end

eachメソッドは配列オブジェクトから順に要素を取り出します。
パイプ|ないに |key, value|と記述するとkeyがキー、valueが要素であり、keyはkey1、key2で、valueRubyPHPです。

二つ目のコードは
arr.each do |lang|は要素をlang変数に入れて
next if lang == "php"はnext ifの処理は変数内の配列の指定した要素をスキップします。
phpが指定されてるのでそれを飛ばしたruby
pythonのみが出力されます。

【結論】

Rubyの配列の要素の取り出しは|key, value|、スキップはnext if 配列の変数== "配列内の要素"です。
よく使われますので覚えておきましょう。





取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com

Rubyの配列の基本

配列もとても良く使います。
その基礎をやっていきましょう。



#配列
#iインデックス
arr = ["a","b","c"]

#配列の要素取り出し
puts arr[0]

配列の事をインデックスといい、その中にある値を要素と言います。
ロッカーのようなもので指定した番号を取り出す感じです。

puts arr[0]で0番目なのでaが出力されます。
ちなみにプログラミング言語では1からでなく0から数えます。


#ハッシュ
arr = {"key1" => "Ruby" , "key2" => "PHP"}
puts arr["key1"] #>Ruby

ただ要素だけだと数個なら良いが何十個となれば分からなくなりますよね。

それを防ぐのがハッシュでダブルクォーテーション内にkey1など番号をつけます。
ロッカーに番号があるようなイメージです。

puts arr["key1"] でkey1なのでRubyが出力されます。


#シンボルを指定
arr = {:key1 => "Ruby" , :key2 => "PHP"}
puts arr[:key1]

結果は同じですがダブルクオーテーションでなくセミコロンでシンプルに書く事もできます。

#配列の中に配列
#[[1],[2]]

配列内にさらに配列も可能です。
処理が複雑になると書きます。

#配列の中にハッシュ
#[{"key1" >= 1}]

#ハッシュの中に配列
#{"key1" >= [1]}

配列の中にハッシュやハッシュの中に配列も入れられます。


#配列のループ処理
#配列.each do |変数|
#ennd

arr = ["a","b","c"]
arr.each do |lang|
puts lang
end
>a b c

配列のループ処理だと順番に要素を取り出す事ができます。
eachメソッドを使い配列から取り出したのを|パイプ内に変数を入れてa b cを順番に取り出します。

これは一周目に0番目のaを取り出し、二周目に1番目にbを取り出します。each doの処理をすると要素を順番に取り出せます。

配列の基礎的な部分をやりました。
是非とも身につけておきましょう。





取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com