Java
Android
iOS
入門
Swift

[Java][入門]swiftとjavaの書き方の違い

はじめに

普段はiOSをメインに開発をしていますが、つい最近Androidの開発を勉強する機会があり、swiftとjavaの書き方の違いが面白いと思ったのでメモとして記事を書きます

※Kotlinは一切出て来ません

勉強で学んだこと

今回は勉強で学んだことをSwiftと比較してみたいと思います

  • PRJ作成時に気をつけること
  • 画面の名称
  • ViewとControllerに紐づける方法
  • 変数の定義
  • メソッドの定義

PRJ作成時に気をつけること

PRJ作成時の手順

Android
以下の画面で入力する3つの項目ですが、Company nameはPRJを作成するときに注意が必要とのことです。
Company nameはGoogle Playでアプリを検索するときのエンドポイントになるのですが、Android Studioの標準ですと「name.example.com」となっています。しかし、exampleが入ったままだとアプリをリリースするときにリジェクトされてしまうらしいです。
なので、リリースを目的にAndroid開発をする際はまず、Company nameのexampleを削除しましょう。

Screenshot 2018-09-23_16-36-21.png

iOS
iOSは以下の形式でアプリへのリンクが決まるので、画像でいう「Project Name」と「Organization Name」が重要になります
詳細は参考記事をご覧くださいorz
https: //itunes.apple.com/(国別コード)/app/(アプリ名)/(アプリ ID)

Screenshot 2018-09-23_16-50-11.png

画面の名称

Android
- UIを実装するクラス: activity_画面名.xml
- Controllerを実装するクラス: 画面名+Activity.java

Androidでは画面に関係するクラスファイルに「Activity」という言葉が付いているそうです
Android StudioでもGUIでUIを実装できる機能が最近流行り始めているようですが、まだバグが多かったりするので、コードで書いた方が安全かつ確実らしです

iOS
- UIを実装するクラス: 画面名.storyboard
- Controllerを実装するクラス: 画面名+ViewController.swift

iOSのstoryboardはxmlと同じもので呼び方とファイルの見え方が違うだけです
UIの実装方法はiOSの場合はGUIで実装する人の方が多い印象です
レイアウト組むのめっちゃ楽なのでw

ViewとControllerに紐づける方法

java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // ここで.xmlファイルを呼び出すと紐付けができる
        setContentView(R.layout.activity_main);
    }

swift
swiftはstoryboardを使用している場合は画像のようにコードは一切書かずにViewとControllerを紐付けできます

Screenshot 2018-09-23_17-06-57.png

変数の定義

java

    String str = "hoge";
    int num = 1;
    String[] strs = { "文字", "文字", "くん" };

Point

  • コードの末尾に「;」が必要
  • int型は先頭が小文字でいい
  • 配列に値を代入するときの括弧を変更しなければいけない

swift比べる前に配列に値を代入するときの括弧を変更しなければいけないのは驚きでしたw
[ ]のままじゃダメなんですね
あとは「;」この人です
swiftはコードの末尾に「;」とか付けないので、ちょいちょい付け忘れて怒られますw

iOS

    let str: String = "hoge"
    let num: Int = 1
    var strs: [String] = [ "文字", "文字", "くん" ]

Point

  • そもそも型推論があるので、型を定義しなくてもいい
  • コードの末尾に「;」が不要
  • Int型は先頭が大文字
  • 配列に値を代入するときの括弧を変更しなくていい

メソッドの定義

java

    private String testReturnStr(int num, String str) {

        // ログ出力
        System.out.println(num);
        System.out.println(str);

        return  str;
    }

Point

  • 戻り値は先頭に定義する
  • 引数は( )の中に定義する → (int num, String str)
  • 引数の型と変数名の間に「:」がいらない

iOS

    func testReturnStr(num: Int, str: String) -> String {

        // ログ出力
        print(num)
        print(str)

        return str
    }

Point

  • メソッドの先頭に「func」が必要
  • 戻り値は引数を定義した後
  • 引数には型を指定する
  • 配列に値を代入するときの括弧を変更しなくていい

まとめ

いかがでしたでしょうか?
同じプログラミング言語でも、画面の呼び方や変数の定義からかなり違うんだなと思いました
私自身、javaに触れる前にFlutterでDartを書いたことがありますが、javaに触れて始めて「Dartがjavaに似ている」ということを実感できましたw

参考記事

iOS/Androidアプリの公開前にリンクを取得!App Store/Google Play のダウンロード用 URL の調べ方