パスワードを忘れた? アカウント作成
11603114 story
プログラミング

iOSアプリの開発を始めるにあたって、SwiftとObjective-Cのどちらを最初に学ぶべき? 53

ストーリー by headless
国語 部門より
本家/.「Ask Slashdot: Swift Or Objective-C As New iOS Developer's 1st Language?」より

私はCとアセンブラーを使い、組み込み開発者として経験を積んできたが、iOSアプリのプロジェクトを始めようと思っている。しかし、Cは熟知しているものの、C++やC#、Javaは避けて通ってきたし、Objective-Cも少しかじった程度だ。iOS開発を始めるにあたって、Objective-CとSwiftのどちらを(少なくとも最初に)学ぶといいだろう。Swiftを中心にアプリ全体を開発するのは無理があるだろうか。私の目標はできるだけ速く簡単にアプリを公開することで、モバイル開発者として仕事を始めるつもりはない。また、もう一つ留意する点として、Android(やWindows Phone)への移植性がある。たとえば、作成したiOSアプリをAndroidに移植することにした場合、Objective-CとSwiftのどちらで書かれたものが移植しやすいだろうか。それとも、すべての「移植」は実質的に書き直しとなるほど、Dalvick+Android APIとSwift/Objective-C+Cocoa Touchとは異なっているだろうか。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2014年09月28日 21時27分 (#2684317)

    obj-cの嫌なところ
    1) nilにアクセスしても落ちなくて、nilになったりする。でも、落ちたりもする。

    2) 配列に何が入ってるかわからない。定義もできない。

    3) 文字列操作の構文が長大。

    4) 名前空間がない。

    swiftの嫌なところ
    1) try~catchできない。

    2) 配列が値型。

    3) ライブラリがそろってなくてobj-cのクラスを使う必要があるときも。

    4) ググると、スズキのスイフトや、国際銀行間通信協会の記事が混じる。
      後者は通信周りの情報を探してるとよくぶつかってがっかりする。

    obj-cもswiftも1か月くらいしか触ってないけど嫌だなと思ったことはこんなところでしょうか。
    いいところもいっぱいあるんですけどね

    • by Anonymous Coward

      > 4) ググると、スズキのスイフトや、国際銀行間通信協会の記事が混じる。
      >  後者は通信周りの情報を探してるとよくぶつかってがっかりする。

      言語あるあるですね。
      GoogleのGOとか、検索性を考慮してもうちょっと特殊な名前にしてくれと。

    • by Anonymous Coward

      何が嫌いかより、何が好きかで自分を語れよ!

      • by Anonymous Coward

        他人のオナニーネタで、良かった点を聞くのと、よくなかった点を聞くのは
        どっちがいいんだろうねえ。

  • Cを熟知してるなら (スコア:4, すばらしい洞察)

    by racco (37699) on 2014年09月28日 20時36分 (#2684286)

    言語仕様を確認すればいいんじゃ?

    熟知するためには言語仕様を読まなきゃならんし、一つでも言語仕様を熟知することができてるなら
    言語仕様を読むコストは言語を習得してルンルン開発できるようにするよりはるかに少ない。

    言語仕様を読んで感触をつかんでから好みの方を、修練すればよい。

    • by Anonymous Coward

      言語よりもAPIだのフレームワークの方が重要な気がする。

      • by Anonymous Coward

        objcもswiftも対応するAPIやフレームワークは全く同じなのでこの場合比較する意味がないかと

  • by shesee (27226) on 2014年09月28日 18時28分 (#2684231) 日記
    選べる状況というなら、なにか具体的な開発目標があるわけでも無い。
  • HTMLやJSなんかでもお手軽にアプリは作れるのでそっちでもいい気がしないでもないけど
    Cを熟知しているのならObjective-Cでいい気がする。
    しばらくはObjective-CとSwift混在でもいけるだろうし、Swiftのみになったらその時にまた移行すればいいだけの話だと思う。

  • Apple様の胸三寸で風前の灯火とはいえ,
    バッドノウハウを含めた集合知におきましては,
    Obj-Cはそれなりに充実しているかと。

  • C言語を熟知している かつ Javaは避けて通ってきた ならば、Objective-Cの方が学習コストは低いでしょう。
    書籍やネット上の学習資料などが豊富なので、はまることはないはず。

    # 「移植は実質的に書き直し」ですけど。

    --
    notice : I ignore an anonymous contribution.
  • by Anonymous Coward on 2014年09月28日 21時00分 (#2684302)

    おっしゃられている二つの言語ではないが
    unity(ゲームエンジン)なら対応言語3種あってその中から一つ選べばいい
    このソフトは移植性がすごく高い
    pcゲームもAndroidもiOSもPSVITAなどにも対応している
    一候補として検討してみてはどうでしょうか?

    • by Anonymous Coward

      横から補足
      Unityの実行基盤になってるのがMonoってやつで
      これの開発環境にXamarin Studioってのがあります。

      ゲーム以外の用途ならこっちでもいいかもしれませんね。

    • by Anonymous Coward

      別ACですが、さらに横から補足。

      もしVisual Studioをお持ちであれば、UnityVSというUnityとVisual Studioを連携するツールが無償で公開されているので、それを使うと超はかどると思います。

      ただし、Expressでは使えませんので、ご注意を。

  • 今まで慣れ親しんだアセンブラでいんじゃね?

  • by Anonymous Coward on 2014年09月28日 17時50分 (#2684213)

    仕事にしないならわざわざObjective-Cを使う必要なんてないと思うけど。
    移植のしやすさは期待しない方がいいけど、少なくともObjective-CよりはSwiftの方がKotlin、C#と馴染みが良いよね。

  • by Anonymous Coward on 2014年09月28日 17時54分 (#2684218)

    当然だよね。

    • by annoymouse coward (11178) on 2014年09月28日 18時23分 (#2684228) 日記

      私も Objective C に一票

      GUI周りは Objective Cの構文・ライブラリをつかう必要があるけど
      それ以外のところは C の構文・ライブラリがそのまま使えます

      「Cを熟知」しているなら、Objective Cでとりあえずアプリを作りながら
      GUIとかイベントとかメッセージ処理の概念を理解するのが近道だと思います

      親コメント
      • by Anonymous Coward

        swiftもCのライブラリ使えるよ

        • by Anonymous Coward

          (習熟している)C言語がそのまま使える、というのが重要だと思う。
          C のライブラリが使えるっていっても、swift でconst char* に対して strlen を使う、とかはできんよね?

  • by Anonymous Coward on 2014年09月28日 18時21分 (#2684225)

    iOS以外にもAndroid、WebでいえばHTMLやFlashにもアプリ出力できる。
    こういう言語系の話題で見かけることないけど、結構使えると思うよ。

    http://ja.wikipedia.org/wiki/Haxe [wikipedia.org]

    • by tamanegi (38323) on 2014年09月28日 21時12分 (#2684311) 日記

      少なくとも、

      Cは熟知しているものの、C++やC#、Javaは避けて通ってきたし、Objective-Cも少しかじった程度

      な人にはあんまりオススメしない方がいいと思うけど。相当毛色が違うんじゃ?
      Flash熟知していてiOSの開発もしてみたいってんなら結構アリだろうけど。

      # 変化が結構速いからドキュメントまわりも結構大変かも
      # 本当に細かいところまでわかるドキュメントって存在するのかな

      親コメント
      • by Anonymous Coward

        Haxeは別段Flashに熟知してなくても絵とテキストを出してポチポチするようなアプリなら手軽に作れますよ。多くの機能はライブラリとして実装されてるのでよっぽどニッチなことやろうとしない限り、詰まることも少ない印象です。

        コスパでもうひと押しさせてもらうとするなら、
        iOSとAndroidへのアプリつくろうと思ったら普通だったらObj-CかSwift+Java、さらにそれぞれの描画系について勉強しないといけないですが、
        それらをHaxeとFlashを勉強するだけでカバー出来るのは結構なメリットだと思います!

        #WinRTは今後の対応が期待されますが、現状出力できないようなので一応注意が必要ですね。

        • by Anonymous Coward

          ほぼ純粋なC一本でやってきてオブジェクト指向言語をほとんど避けてきた人に、ECMASriptやActionScriptの亜種みたいな言語をいきなりやらせるのはどうかってことでしょう。

          • by Anonymous Coward

            かえって「クラスがないからJSはクソ」みたいな先入観を抱かなくて済むかもしれない。

  • by Anonymous Coward on 2014年09月28日 19時11分 (#2684247)

    C#ならiPhone,andrioid,windows phoneで動かせるから流儀に従って移植するのは楽だと思う
    学習コストは高そうだけど

  • by Anonymous Coward on 2014年09月28日 19時30分 (#2684257)

    手元資金があるなら、Delphi で iPhone, Android の両対応ほぼ同時リリースやりたいんだよねえ。

    • by Anonymous Coward

      そうねぇ、「手元資金がある」のなら、選択肢の一つかも知れませんね。

      # 使っている人が少ないと、いくらググっても回答が得られず、
      # 結局インシデント消費して質問しないとプロジェクトが進まなくなって、
      # にっちもさっちも行かなくなる危険が無いですからね。

  • by Anonymous Coward on 2014年09月28日 20時26分 (#2684279)

    C#使いの意見ですが、言語仕様を読んで比べてみた限り、swiftの方が良いかなぁ、と思います。

    Objective-Cって、何か構文が気持ち悪いんですよね……。
    それに、純粋な言語じゃなくてCに上っ面かぶせたものなので、中途半端に見えて仕方が無いです。

    もう一つ理由を挙げるとすれば、パフォーマンスですかねぇ。
    Appleの発表なのでどこまで信用出来るか全く不明ですが、一応swiftの方がパフォーマンスが高い、と発表されています。

  • by Anonymous Coward on 2014年09月28日 22時27分 (#2684328)

    移植性とか考えるならWebアプリにすりゃいいよ。
    オブジェクト指向言語を避けて通ってきた人なら、Objective-Cとか理解しようとしても無理だと思う。
    さらにアンドロイド移植とか、不可能だと思った方がいいね。
    Webベースなら、なんとかなるんじゃね? ネイティブな機能にはさわれないかもしれないが。

    Objective-Cは木に竹を接いだような言語だから、Cしか知らないんじゃどうにもならないと思う。
    オブジェクト指向わかってれば綺麗に分かれててすごく合理的と思うんだけどねぇ…。
    個人的には、その変態的構文にさえ慣れれば、かなり使いやすい言語と思うけど、取っつきにくいよね。

    • by Anonymous Coward

      ところがどっこい、HTMLレンダリングやJavaScriptの挙動も結構違うんですなこれがw

      iOSの独自仕様(そう言い切ってしまっていいだろう。AndroidとPCのブラウザで挙動が異なって困った事はあまり無かった)には苦労させられました……。

  • by Anonymous Coward on 2014年09月28日 23時17分 (#2684344)

    obj-cなんかつかわずc/c++ 使ったほうがいい

    • by Anonymous Coward

      私もこれだけど、この人C++も避けて来たと言っているんだよね。
      そのスキルセットで、書き直しレベルなの?なんて聞くていどなら、移植について考えるのはまだ早いと思う。

  • by Anonymous Coward on 2014年09月29日 1時07分 (#2684378)

    Openfl - win/Android/iOS/Mac/Linux/HTML/Flash
    Qt - モバイル
    OpenFramework - win/Android/iOS/Mac/Linux
    TitaniumMobile - モバイル
    Monaca - Android/iOS

    さあ選べ

    • by Anonymous Coward

      Qtがベストだとは思うんだけど、iOSだとダイナミックリンクが許されなくて、スタティックリンクせざるを得ないので、
      GPL/LGPLのために、ソースコード開示義務が発生するとなると、商用では採用できなくて困ってる。

      • by Anonymous Coward

        なんでこういうコメントに対しては「買えよ乞食」と言わないのか

  • by Anonymous Coward on 2014年09月29日 18時37分 (#2684760)

    Swiftならrubymotionの方が良いわ

    でも自分はObjective-Cの方が好きだ、元々smalltalk好きなせいでもあるけど。
    バイナリへの落ち方が見えないとキモイんだよ

  • by Anonymous Coward on 2014年09月30日 10時17分 (#2685021)

    日米以外ではAndroidのほうが優勢で、場所によってはWindowsPhoneのほうが売れてるようなところがある。
    いまさら参入するぐらいなら、Androidにしとけ。

  • by Anonymous Coward on 2014年10月30日 19時14分 (#2703330)

    どうやって避けて通れたのか。特にGUIはほぼC++の知識がいるのに。
    (もしくはCOM)

  • オブジェクト指向設計/プログラミング(フレームワーク活用含む)を覚える方が重要だと思うが。

    >>私はCとアセンブラーを使い、組み込み開発者として経験を積んできたが、
    >>、C++やC#、Javaは避けて通ってきたし、
    を見る限り、コテコテのC言語開発しかしてなさそうだし。

      Core FoundationやCore GraphicsのようなC言語のオブジェクト指向風開発をしていたなら別だけど。

    まあ、ノウハウとか資産を活用するならObjective-Cじゃない?

typodupeerror

アレゲはアレゲを呼ぶ -- ある傍観者

読み込み中...