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とは異なっているだろうか。
素人がふれて感じたそれぞれの嫌なところ (スコア:5, 参考になる)
obj-cの嫌なところ
1) nilにアクセスしても落ちなくて、nilになったりする。でも、落ちたりもする。
2) 配列に何が入ってるかわからない。定義もできない。
3) 文字列操作の構文が長大。
4) 名前空間がない。
swiftの嫌なところ
1) try~catchできない。
2) 配列が値型。
3) ライブラリがそろってなくてobj-cのクラスを使う必要があるときも。
4) ググると、スズキのスイフトや、国際銀行間通信協会の記事が混じる。
後者は通信周りの情報を探してるとよくぶつかってがっかりする。
obj-cもswiftも1か月くらいしか触ってないけど嫌だなと思ったことはこんなところでしょうか。
いいところもいっぱいあるんですけどね
Re: (スコア:0)
> 4) ググると、スズキのスイフトや、国際銀行間通信協会の記事が混じる。
> 後者は通信周りの情報を探してるとよくぶつかってがっかりする。
言語あるあるですね。
GoogleのGOとか、検索性を考慮してもうちょっと特殊な名前にしてくれと。
Re:素人がふれて感じたそれぞれの嫌なところ (スコア:1)
その点においてはFortranやCOBOLは素晴らしいと思う。
そういう所は新規の言語は見習って欲しい。
Re: (スコア:0)
何が嫌いかより、何が好きかで自分を語れよ!
Re: (スコア:0)
他人のオナニーネタで、良かった点を聞くのと、よくなかった点を聞くのは
どっちがいいんだろうねえ。
Cを熟知してるなら (スコア:4, すばらしい洞察)
言語仕様を確認すればいいんじゃ?
熟知するためには言語仕様を読まなきゃならんし、一つでも言語仕様を熟知することができてるなら
言語仕様を読むコストは言語を習得してルンルン開発できるようにするよりはるかに少ない。
言語仕様を読んで感触をつかんでから好みの方を、修練すればよい。
Re: (スコア:0)
言語よりもAPIだのフレームワークの方が重要な気がする。
Re: (スコア:0)
objcもswiftも対応するAPIやフレームワークは全く同じなのでこの場合比較する意味がないかと
Re: (スコア:0)
君は一度でも言語を熟知したことがあるのか?
両方って訳にはいかんのか (スコア:3, 興味深い)
ネイティブな機能をガンガン使わないなら (スコア:3)
HTMLやJSなんかでもお手軽にアプリは作れるのでそっちでもいい気がしないでもないけど
Cを熟知しているのならObjective-Cでいい気がする。
しばらくはObjective-CとSwift混在でもいけるだろうし、Swiftのみになったらその時にまた移行すればいいだけの話だと思う。
今からならSwift,といいたいところだが集合知はまだ少ない (スコア:3)
Apple様の胸三寸で風前の灯火とはいえ,
バッドノウハウを含めた集合知におきましては,
Obj-Cはそれなりに充実しているかと。
どんなアプリを作るのか知らないけど (スコア:2)
C言語を熟知している かつ Javaは避けて通ってきた ならば、Objective-Cの方が学習コストは低いでしょう。
書籍やネット上の学習資料などが豊富なので、はまることはないはず。
# 「移植は実質的に書き直し」ですけど。
notice : I ignore an anonymous contribution.
unity (スコア:1)
おっしゃられている二つの言語ではないが
unity(ゲームエンジン)なら対応言語3種あってその中から一つ選べばいい
このソフトは移植性がすごく高い
pcゲームもAndroidもiOSもPSVITAなどにも対応している
一候補として検討してみてはどうでしょうか?
Re: (スコア:0)
横から補足
Unityの実行基盤になってるのがMonoってやつで
これの開発環境にXamarin Studioってのがあります。
ゲーム以外の用途ならこっちでもいいかもしれませんね。
Re: (スコア:0)
別ACですが、さらに横から補足。
もしVisual Studioをお持ちであれば、UnityVSというUnityとVisual Studioを連携するツールが無償で公開されているので、それを使うと超はかどると思います。
ただし、Expressでは使えませんので、ご注意を。
他人に相談するほど新しい言語を習得するのが億劫なら (スコア:1)
今まで慣れ親しんだアセンブラでいんじゃね?
Re:他人に相談するほど新しい言語を習得するのが億劫なら (スコア:1)
純粋な興味としてなのですが、iOS、Android共に本当にアセンブラって使えるんですかね?
アセンブルするソフトウェアが公開されてるって話聞いた事ないですし。
特にAndroidはArmもx86もサポートしてますが、仮にアセンブラで書く場合、どう書けばいいんでしょうかねぇ。
Re:他人に相談するほど新しい言語を習得するのが億劫なら (スコア:1)
SwiftなりObjective-Cなりgccなり、アセンブリコードが出力できるコンパイラに教えてもらうのが早いかな。
Re:他人に相談するほど新しい言語を習得するのが億劫なら (スコア:1)
もしARM/x86両対応のアプリをアセンブリ言語で書くのであれば、多分ソースコードを2つ書いてビルド時のオプションで切り分けるんでしょうね。別々にできたバイナリを一つのapkにまとめることは可能なので、最終的なアプリは1本にできます。
Re:他人に相談するほど新しい言語を習得するのが億劫なら (スコア:1)
意外と知られてないけどよっぽどパフォーマンスが必要とかCPU固有の機能が必要じゃなければARM版だけ作ればx86で何事もなかったように動きます
Re: (スコア:0)
なるほど。
#2684472様、#2684478様、#2684512様、ご回答ありがとうございます。
すんごい参考になります。
好奇心が満たされてありがたいです。
仕事にしないなら (スコア:0)
仕事にしないならわざわざObjective-Cを使う必要なんてないと思うけど。
移植のしやすさは期待しない方がいいけど、少なくともObjective-CよりはSwiftの方がKotlin、C#と馴染みが良いよね。
ObjC (スコア:0)
当然だよね。
Re:ObjC (スコア:1)
私も Objective C に一票
GUI周りは Objective Cの構文・ライブラリをつかう必要があるけど
それ以外のところは C の構文・ライブラリがそのまま使えます
「Cを熟知」しているなら、Objective Cでとりあえずアプリを作りながら
GUIとかイベントとかメッセージ処理の概念を理解するのが近道だと思います
Re: (スコア:0)
swiftもCのライブラリ使えるよ
Re: (スコア:0)
(習熟している)C言語がそのまま使える、というのが重要だと思う。
C のライブラリが使えるっていっても、swift でconst char* に対して strlen を使う、とかはできんよね?
Re: (スコア:0)
C言語のライブラリが使える程度ならむしろできない言語を探すほうが難しいよね
Re: (スコア:0)
>swift でconst char* に対して strlen を使う、とかはできんよね?
できるんだよそれが。
http://ja.wikipedia.org/wiki/Swift_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%... [wikipedia.org]
Haxe (スコア:0)
iOS以外にもAndroid、WebでいえばHTMLやFlashにもアプリ出力できる。
こういう言語系の話題で見かけることないけど、結構使えると思うよ。
http://ja.wikipedia.org/wiki/Haxe [wikipedia.org]
Re:Haxe (スコア:1)
少なくとも、
な人にはあんまりオススメしない方がいいと思うけど。相当毛色が違うんじゃ?
Flash熟知していてiOSの開発もしてみたいってんなら結構アリだろうけど。
# 変化が結構速いからドキュメントまわりも結構大変かも
# 本当に細かいところまでわかるドキュメントって存在するのかな
Re: (スコア:0)
Haxeは別段Flashに熟知してなくても絵とテキストを出してポチポチするようなアプリなら手軽に作れますよ。多くの機能はライブラリとして実装されてるのでよっぽどニッチなことやろうとしない限り、詰まることも少ない印象です。
コスパでもうひと押しさせてもらうとするなら、
iOSとAndroidへのアプリつくろうと思ったら普通だったらObj-CかSwift+Java、さらにそれぞれの描画系について勉強しないといけないですが、
それらをHaxeとFlashを勉強するだけでカバー出来るのは結構なメリットだと思います!
#WinRTは今後の対応が期待されますが、現状出力できないようなので一応注意が必要ですね。
Re: (スコア:0)
ほぼ純粋なC一本でやってきてオブジェクト指向言語をほとんど避けてきた人に、ECMASriptやActionScriptの亜種みたいな言語をいきなりやらせるのはどうかってことでしょう。
Re: (スコア:0)
かえって「クラスがないからJSはクソ」みたいな先入観を抱かなくて済むかもしれない。
.NETはどうだろうか (スコア:0)
C#ならiPhone,andrioid,windows phoneで動かせるから流儀に従って移植するのは楽だと思う
学習コストは高そうだけど
Delphi (スコア:0)
手元資金があるなら、Delphi で iPhone, Android の両対応ほぼ同時リリースやりたいんだよねえ。
Re: (スコア:0)
そうねぇ、「手元資金がある」のなら、選択肢の一つかも知れませんね。
# 使っている人が少ないと、いくらググっても回答が得られず、
# 結局インシデント消費して質問しないとプロジェクトが進まなくなって、
# にっちもさっちも行かなくなる危険が無いですからね。
C#erの意見 (スコア:0)
C#使いの意見ですが、言語仕様を読んで比べてみた限り、swiftの方が良いかなぁ、と思います。
Objective-Cって、何か構文が気持ち悪いんですよね……。
それに、純粋な言語じゃなくてCに上っ面かぶせたものなので、中途半端に見えて仕方が無いです。
もう一つ理由を挙げるとすれば、パフォーマンスですかねぇ。
Appleの発表なのでどこまで信用出来るか全く不明ですが、一応swiftの方がパフォーマンスが高い、と発表されています。
HTML+JavaScript+サーバサイトの何か (スコア:0)
移植性とか考えるならWebアプリにすりゃいいよ。
オブジェクト指向言語を避けて通ってきた人なら、Objective-Cとか理解しようとしても無理だと思う。
さらにアンドロイド移植とか、不可能だと思った方がいいね。
Webベースなら、なんとかなるんじゃね? ネイティブな機能にはさわれないかもしれないが。
Objective-Cは木に竹を接いだような言語だから、Cしか知らないんじゃどうにもならないと思う。
オブジェクト指向わかってれば綺麗に分かれててすごく合理的と思うんだけどねぇ…。
個人的には、その変態的構文にさえ慣れれば、かなり使いやすい言語と思うけど、取っつきにくいよね。
Re: (スコア:0)
ところがどっこい、HTMLレンダリングやJavaScriptの挙動も結構違うんですなこれがw
iOSの独自仕様(そう言い切ってしまっていいだろう。AndroidとPCのブラウザで挙動が異なって困った事はあまり無かった)には苦労させられました……。
移植性考えたら (スコア:0)
obj-cなんかつかわずc/c++ 使ったほうがいい
Re: (スコア:0)
私もこれだけど、この人C++も避けて来たと言っているんだよね。
そのスキルセットで、書き直しレベルなの?なんて聞くていどなら、移植について考えるのはまだ早いと思う。
まるちぷらっとふぉーむ (スコア:0)
Openfl - win/Android/iOS/Mac/Linux/HTML/Flash
Qt - モバイル
OpenFramework - win/Android/iOS/Mac/Linux
TitaniumMobile - モバイル
Monaca - Android/iOS
さあ選べ
Re: (スコア:0)
Qtがベストだとは思うんだけど、iOSだとダイナミックリンクが許されなくて、スタティックリンクせざるを得ないので、
GPL/LGPLのために、ソースコード開示義務が発生するとなると、商用では採用できなくて困ってる。
Re: (スコア:0)
なんでこういうコメントに対しては「買えよ乞食」と言わないのか
いっぱい書いてるけどさー (スコア:0)
Swiftならrubymotionの方が良いわ
でも自分はObjective-Cの方が好きだ、元々smalltalk好きなせいでもあるけど。
バイナリへの落ち方が見えないとキモイんだよ
日米以外ではAndroidのほうが有利 (スコア:0)
日米以外ではAndroidのほうが優勢で、場所によってはWindowsPhoneのほうが売れてるようなところがある。
いまさら参入するぐらいなら、Androidにしとけ。
C++を避けてきた、とは (スコア:0)
どうやって避けて通れたのか。特にGUIはほぼC++の知識がいるのに。
(もしくはCOM)
言語云々よりオブジェクト指向の開発の習得が先では? (スコア:0)
オブジェクト指向設計/プログラミング(フレームワーク活用含む)を覚える方が重要だと思うが。
>>私はCとアセンブラーを使い、組み込み開発者として経験を積んできたが、
>>、C++やC#、Javaは避けて通ってきたし、
を見る限り、コテコテのC言語開発しかしてなさそうだし。
Core FoundationやCore GraphicsのようなC言語のオブジェクト指向風開発をしていたなら別だけど。
まあ、ノウハウとか資産を活用するならObjective-Cじゃない?