startalks

スマホアプリ(Android/iOS)、IoT、AI、データサイエンス

【Flask】環境設定からhelloWorldまで

・環境設定

 ・Pythonインストール(詳細は割愛)

 ・Flaskインストール

  pip install -U Flask

 

・hello, world!

helloWorld.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
return 'Hello, World!'

if __name__ == "__main__":
app.run()

以下コマンドで起動

python helloWorld.py

※Ctrl+Cで中止させる。

f:id:startalks:20181230120714p:plain

ブラウザから以下URLで表示確認する

http://localhost:5000

f:id:startalks:20181230120842p:plain

 

 

【Scala】環境設定からScala言語入門

・環境構築

 ・JDKインストール(詳しい説明は割愛)

 ・Scalaインストール

  https://www.scala-lang.org/download/

  f:id:startalks:20181229222203p:plain

 

IDE

 IntelliJScalaプラグインを入れる。

 Configure⇒Plugins⇒BrowseRepositoriesで「scala」を検索してInstallする。

f:id:startalks:20181230081256p:plain

IntelliJを再起動したらScalaの新規プロジェクトを作成できるようになる。

f:id:startalks:20181230081453p:plain

 

 ・Hello, World!

package scala

object HelloWorld{
def main(args: Array[String]): Unit ={
println("Hello, world!")
}
}

 右クリックしてRun

f:id:startalks:20181230085823p:plain

結果が出力される。

f:id:startalks:20181230085840p:plain

 

・基本文法

 ・ソースファイル名:*.scala

 ・小文字と大文字が区別される。

 ・クラスの頭文字が大文字。

 ・クラス名がファイル名と一致させる。(推奨)

 ・メソッドの頭文字が小文字。

 ・キーワード(50個)

abstract case catch class
def do else extends
false final finally for
forSome if implicit import
lazy match new null
object override package private
protected return sealed super
this throw trait try
true type val var
while with yield  
- : = =>
<- <: <% >:
# @

 

・データ型

 ・Byte

 ・Short

 ・Int

 ・Long

 ・Float

 ・Double

 ・Char

 ・String

 ・Boolean

 ・Unit:値無しを表す。voidと同等。

 ・Null

 ・Nothing:他クラスの子クラス。

 ・Any:他クラスの親クラス。

 ・AnyRef:レファレンスクラスの親クラス。

 

リテラル

 ・int型:数字、数字L

 ・float型:小数、小数f

 ・bool型:true/false

 ・Symbol:'シンボル

 ・Char:'文字

 ・String:"文字列

 

・変数

 var myVar : String = "Foo"

 

・定数

 val myVal : String = "Bar"

 

・アクセス修飾子

 ・private:同じパッケージ内でアクセス可能。

 ・protected:同じクラス(子クラス含む)からアクセス可能。

 ・public:他のパッケージからもアクセス可能。

 

・フローコントロール

 ・if...else

 ・while/do...while/for

 

・メソッド

 def functionName([refList]) : [return type] = {

        function body

        return[expression]

    }

 

クロージャ

 

・文字列

 

・配列

 

・コレクション

 

イテレータ

 

・クラス

 

・Trait(特徴)

 Javaのインターフェース+抽象クラスに相当する概念。

 例)

 trait Equal{

        def isEqual(x: Any): Boolean

        def isNotEqual(x: Any): Boolean = !isEqual(x)

    }

 

・match

    例)

 def matchTest(x: Any): Any = x match {

        case 1 => "one"

        case "two" => 2

        case y: Int => "scala.Int"

        case _ => "many"

    }

 

正規表現

 

・エラーハンドリング

 

・Extractor

 

 

 

【Go】環境設定からGo言語入門

・インストール

Getting Started - The Go Programming Language

インストールが完了すると、Pathが通っている状態になる為、別途個別設定は不要。

 

IDE設定

Jetbrainなど他にも色々あるけど、今回は一旦Vidual Studio Codeを使うことにする。

Go with Visual Studio Code

 

 ・Hello World!

package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

 

VSCODEから実行するとOUTPUTから実行結果が表示される。

f:id:startalks:20181229201921p:plain

補足)

Encodingを設定しないとOUTPUTでの出力が文字化けることがある為、

File⇒Preferences⇒Settingsにて設定をしておく。

f:id:startalks:20181229202158p:plain

 

・基本概念

 ・ソースファイル名:*.go

 ・パッケージ:package pkgName

 ・インポート:import "pkgName"

 ・アクセシビリティ

  頭文字が大文字⇒Public:他のパッケージから参照可能。

  頭文字が小文字⇒Private:他のパッケージから参照不可。

 ・定数:const

 ・変数:var

 ・型:type

  ・bool

  ・int/int8/int16/int32/int64

  ・uint/uint8/uint16/uint32/uint64

  ・float32/float64

  ・complex64/complex128

 

・フローコントロール

 ・if-else

 ・switch

 ・for

 ・goto

 

・関数

 ・基本

  func functionName(a typeA, b typeB) (rt1 typeRt1, rt2 typeRt2)

  init関数は、一つのpkgの中で最初に実行される。

 ・defer

 ・clousure

 

・Array/Slice

 

・Map

 

・package

 

・struct/method

 

・interface/reflection

 

・ファイルアクセス

 

・エラーハンドリング

 

・goroutine/channel

 

 

【Kotlin】5回目 言語基礎(フローコントロール)

目次

①if文

②when文

③forループ

④whileループ

①if文

// Traditional usage 
var max = a 
if (a < b) max = b

// With else 
var max: Int
if (a > b) {
    max = a
} else {
    max = b
}
 
// 式として利用できる。
val max = if (a > b) a else b

②when文

JavaのSwitch-case文と同じ様な使い方。

when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> { // Note the block
        print("x is neither 1 nor 2")
    }
}

③forループ

式として使える。

for (item in collection) print(item)

通常はブロックで書く。

for (item: Int in ints) {
    // ...
}

④whileループ

Javaと一緒。

while (x > 0) {
    x--
}

do {
    val y = retrieveData()
} while (y != null) // y is visible here!

【Kotlin】4回目 言語基礎(パッケージ)

目次

①デフォルトインポート

②インポート

①デフォルトインポート

以下パッケージはKotlinでデフォルトでインポートされる。
kotlin.*
kotlin.annotation.*
kotlin.collections.*
kotlin.comparisons.* (since 1.1)
kotlin.io.*
kotlin.ranges.*
kotlin.sequences.*
kotlin.text.*

②インポート

Javaと同じ。

    import foo.Bar // Bar is now accessible without qualification
    import foo.* // everything in 'foo' becomes accessible
    import bar.Bar as bBar // bBar stands for 'bar.Bar'

【Kotlin】3回目 言語基礎(データ型)

目次
①number
②character
③boolean
④String
⑤Array

①数字型(number)
以下数字型がサポートされる。
・Double 64
・Float 32
・Long 64
・Int 32
・Short 16
・Byte 8

アンダースコアで可読性を向上させることができる。

val oneMillion = 1_000_000
val creditCardNumber = 1234_5678_9012_3456L
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010

②文字型(char)
シングルクォーテーションで囲む。

③真偽値(boolean)
trueまたはfalseの2つの値がある。

④文字列(String)
・改行を含む文字列はトリプルクォーテーション(""")で定義できる。
 例)

val text = """
    for (c in "foo")
        print(c)
"""

⑤配列(Array)
Arrayクラスを使って配列を扱う。

【Kotlin】2回目 言語基礎(基本文法)

目次
①定義
②特徴
③基本文法
④参考

①定義

Kotlin(コトリン)は、ジェットブレインズ社が開発した、静的型付けのオブジェクト指向プログラミング言語

②特徴

 ・簡潔
  POJOクラスを一行で書いちゃう。
  例)

  data class Customer(val name: String, val email: String, val company: String)

 ・Null安全
  NullPointerExceptionを排除すべく、変数にタイプアノテーションを付けるか、初期化する必要がある。
  例)

  var output: String
  output = null   // Compilation error:This variable must either have a type annotation or be initialized

 ・操作可換性ある
  JavaまたはJavaScriptで書いたコードを実行可能。
  例)Java

  import io.reactivex.Flowable
  import io.reactivex.schedulers.Schedulers
  
  Flowable
      .fromCallable {
          Thread.sleep(1000) //  imitate expensive computation
          "Done"
      }
      .subscribeOn(Schedulers.io())
      .observeOn(Schedulers.single())
      .subscribe(::println, Throwable::printStackTrace)

  例)JavaScript

  import kotlin.browser.window
  
  fun onLoad() {
      window.document.body!!.innerHTML += "<br/>Hello, Kotlin!"
  }

③基本文法

・パッケージ

 package my.demo
 import java.util.*

・関数

 //Int型パラメータ、Int型戻り値
 fun sum(a: Int, b: Int): Int {
    return a + b
 }
 //Unit型戻り値(voidと同じ)。省略してもOK。
 fun sum(a: Int, b: Int): Unit {
    println("sum of $a and $b is ${a + b}")
 }

・変数

 read-onlyのローカル変数。

 val a: Int = 1  // immediate assignment
 val b = 2   // `Int` type is inferred
 val c: Int  // Type required when no initializer is provided
 c = 3       // deferred assignment

 ミュータブルな変数。

 var x = 5 // `Int` type is inferred
 x += 1

・コメント(Javaと一緒)

・String templates

 var a = 1
 // simple name in template:
 val s1 = "a is $a" 

 a = 2
 // arbitrary expression in template:
 val s2 = "${s1.replace("is", "was")}, but now is $a"

・条件式

・ループ(Javaと一緒)

・レンジ

 val x = 10
 val y = 9
 if (x in 1..y+1) {
     println("fits in range")
 }

・コレクション(Javaと一緒)

・クラス

 val rectangle = Rectangle(5.0, 2.0) //'new'キーワードは不要
 val triangle = Triangle(3.0, 4.0, 5.0)

④参考

・コーディング規約
Coding Conventions - Kotlin Programming Language

まとめ
次回はデータ型について見ていきます~