SlideShare una empresa de Scribd logo
1 de 34
LL ばかりのエンジニアが
Xcode にチャレンジしました

     @kanayannet
LLとは
Lightweight Language
 ※和製英語だそうです。 by wikipedia


 例:
      Perl、Python、PHP
      Ruby Javascript
Xcode とは?
  ソフトウェアを開発するための
  アップルの統合開発環境
 例:
  IPhone IPad のアプリケーション
主に使われる言語
 objective-c
Objective-c とは?

 C言語をベースにSmalltalk型の
 オブジェクト指向機能を持たせた上位
 互換言語である。
 by wikipedia
解りづらい
自分なりに解釈してみる

C言語よりは便利に使えるのかな?
LL ではない -> 簡単ではなさそう?
自分が普段使ってる言語
 Perl、Ruby、Javascript...


  LLばっかりです!
今回、話す事
1.始めるキッカケ

2. Xcode + Objective-c を使って開発して...
苦戦した箇所


3. 苦戦しなかった箇所を話します
1.始めるキッカケ



 家庭菜園でブルーベリー作ってます
1.始めるキッカケ
    ブルーベリーの栽培記録を
  その場で残せるアプリが欲しかった
   (土壌PH や 農薬 や 肥料など)
        ↓↓↓↓↓
     作ればいいじゃない!?
1.始めるキッカケ

- どうせ作るなら、今までやった事がないもの

- ブラウザアプリは結構作った

- Xcode + objective-c は経験ない
よし!やろう!
アプリの構成



            HTTP

                   Web API
農作物や日記の入力
                   データの保存
    描画
                   呼び出し
ごめんなさい!

PhoneGapの事は話しません!

 ※話したい方は懇談会で話しましょう
苦戦した箇所

  1. コードの長さ
  2. HTML との違い
苦戦した箇所
1. コードの長さ

    HTTP の通信
苦戦した箇所
   javascript(Jquery) の場合


 $.ajax({
    type: "POST",
    url: "http://example.com",
    data: "xxx=yyy",
    success: function(msg){
      alert( "成功: " + msg );
    }
  });
苦戦した箇所
   objective-c の場合
みなさん使ってるライブラリあるのかな∼?
      っとググってみる....
       ↓↓↓↓↓
 自作ライブラリ配布してる人はいたけど...
    多くがコツコツ書いてる...
苦戦した箇所
          objective-c の場合
NSURL *nsurl = [NSURL URLWithString:@”http://example.com”];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:
nsurl];
[request setHTTPMethod: @"POST"];
[request setValue:@"application/x-www-form-urlencoded"
forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [sendData length]]
forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: sendData];

NSError *error;
NSURLResponse *response;
NSData *buffer = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response error:&error];
2. HTML との違い
   例: Table 表示

      HTML の場合
2. HTML との違い
  例: Table 表示
       HTML の場合
    <table width=100% border=1 width=100%>
                   <tr>
                         <td>セル1</td>
                   </tr>
                   <tr>
                         <td>セル2</td>
                   </tr>
                   <tr>
                         <td>セル3</td>
                   </tr>
    </table>
2. HTML との違い
  例: Table 表示
  Xcode + Objective-c の場合
//セルの数
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
  // table_list の中身は配列
    return [table_list count];
}

// セルの中身の設定
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"product_items";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    NSInteger row = [indexPath row];

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
    }
    cell.textLabel.font = [UIFont boldSystemFontOfSize:18];

    NSDictionary *table_row = [table_list objectAtIndex:row];

    cell.textLabel.text = [table_row objectForKey:@"subject"];
    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
    return cell;
}
//セルの高さ
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 42;
}
苦戦しなかった箇所

 1. JSON
 2. メモリ管理
苦戦しなかった箇所
     JSON ( javascript )


 var json_string = { status : ok } ;
 var json_obj = JSON.parse(json_string);
 console.log( json_obj.status ); // -> ok
苦戦しなかった箇所
   JSON
                           Objective-c

// json_string にjson文字列 json_string = ‘{”status”:”ok”}’
NSData *json_data = [json_string dataUsingEncoding:NSUTF8StringEncoding];

NSMutableArray *ret = [NSJSONSerialization JSONObjectWithData:json_data
options:NSJSONReadingAllowFragments error:nil];

[ret objectForKey:@"status"]; // -> ok
苦戦しなかった箇所

       JSON
は思ったよりもコーディングしやすかった
苦戦しなかった箇所
 メモリ管理(objective-c)
   ARC (Automatic Reference Counting)

       @autoreleasepool
       {
           // 自動的にメモリ解放してもらいたい処理
       }




    ※LL でいう GC のようなもの
※ ARC の注意点
これ使うと手動で解放する release method が
使えなくなります
まとめ
Objective-c 自体は思っていたよりも、難しくな
かった。
(むしろ、C言語より、やりやすかった)


View(描画)処理が絡むとmethod名の長いものが
出てきて、結構面倒くさい...
最後に モック版(デザインはまだ、適当)
 ですが、ここまで作れたものをデモします

http://www.youtube.com/watch?v=ivQdj8KOz9Y
このモック版作れるようになるまで、
   どんなもん学習したの?


     30時間

 ※30 x 1時間
 (1日1時間 を 30日しました)
- 30時間続けて勉強した訳ではない


- 無理に続けて勉強しても身に付かない


- 睡眠時間と適切な休憩時間は必要


- 睡眠すると頭が整理されて、解らなかった
箇所が解るようになったりする
ご清聴ありがとうございました

Más contenido relacionado

La actualidad más candente

Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in TokyoGrails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in TokyoTsuyoshi Yamamoto
 
Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能hitode909
 
Marionettejs getting started
Marionettejs getting startedMarionettejs getting started
Marionettejs getting startedKyohei Morimoto
 
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発Shinzo SAITO
 
Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2Akio Ishida
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみようKentaro Matsui
 
テーマ「最適化」
テーマ「最適化」テーマ「最適化」
テーマ「最適化」technocat
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会Yukihiro Kitazawa
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック良太 増子
 
Backbone model collection (jscafe 8)
Backbone model collection (jscafe 8)Backbone model collection (jscafe 8)
Backbone model collection (jscafe 8)Ryuma Tsukano
 
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesasm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesNoritada Shimizu
 
CakeRequest::onlyAllow() について
CakeRequest::onlyAllow() についてCakeRequest::onlyAllow() について
CakeRequest::onlyAllow() についてYuya Takahashi
 
第3回Webkit/HTML5勉強会 - File APIと加速度センサー
第3回Webkit/HTML5勉強会 - File APIと加速度センサー第3回Webkit/HTML5勉強会 - File APIと加速度センサー
第3回Webkit/HTML5勉強会 - File APIと加速度センサーnakamura001
 
Yapc -asia 2012 lt @studio3104
Yapc -asia 2012 lt @studio3104Yapc -asia 2012 lt @studio3104
Yapc -asia 2012 lt @studio3104Satoshi Suzuki
 
Chiba.pm #1 lt @studio3104
Chiba.pm #1 lt @studio3104Chiba.pm #1 lt @studio3104
Chiba.pm #1 lt @studio3104Satoshi Suzuki
 

La actualidad más candente (20)

mishimasyk#4
mishimasyk#4mishimasyk#4
mishimasyk#4
 
MongoDBの使い方
MongoDBの使い方MongoDBの使い方
MongoDBの使い方
 
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in TokyoGrails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
 
Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能
 
Marionettejs getting started
Marionettejs getting startedMarionettejs getting started
Marionettejs getting started
 
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発
 
Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
 
テーマ「最適化」
テーマ「最適化」テーマ「最適化」
テーマ「最適化」
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック
 
Backbone model collection (jscafe 8)
Backbone model collection (jscafe 8)Backbone model collection (jscafe 8)
Backbone model collection (jscafe 8)
 
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesasm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web games
 
CakeRequest::onlyAllow() について
CakeRequest::onlyAllow() についてCakeRequest::onlyAllow() について
CakeRequest::onlyAllow() について
 
Emscripten使ってみた
Emscripten使ってみたEmscripten使ってみた
Emscripten使ってみた
 
第3回Webkit/HTML5勉強会 - File APIと加速度センサー
第3回Webkit/HTML5勉強会 - File APIと加速度センサー第3回Webkit/HTML5勉強会 - File APIと加速度センサー
第3回Webkit/HTML5勉強会 - File APIと加速度センサー
 
Yapc -asia 2012 lt @studio3104
Yapc -asia 2012 lt @studio3104Yapc -asia 2012 lt @studio3104
Yapc -asia 2012 lt @studio3104
 
Chiba.pm #1 lt @studio3104
Chiba.pm #1 lt @studio3104Chiba.pm #1 lt @studio3104
Chiba.pm #1 lt @studio3104
 
OSC京都2011
OSC京都2011OSC京都2011
OSC京都2011
 
Synthesijer hls 20150116
Synthesijer hls 20150116Synthesijer hls 20150116
Synthesijer hls 20150116
 

Destacado

Destacado (7)

Fxos lt
Fxos ltFxos lt
Fxos lt
 
J S Smartphone
J S SmartphoneJ S Smartphone
J S Smartphone
 
Blueberrypi
BlueberrypiBlueberrypi
Blueberrypi
 
2010 12gunmaweb
2010 12gunmaweb2010 12gunmaweb
2010 12gunmaweb
 
Smart phone gunma.web
Smart phone gunma.webSmart phone gunma.web
Smart phone gunma.web
 
Ssl
SslSsl
Ssl
 
FileReader and canvas and server silde
FileReader and canvas and server sildeFileReader and canvas and server silde
FileReader and canvas and server silde
 

Similar a Ll xcode

基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~normalian
 
ScaLa+Liftとか
ScaLa+LiftとかScaLa+Liftとか
ScaLa+Liftとかyouku
 
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題Makoto Setoh
 
FMDBの利用方法
FMDBの利用方法FMDBの利用方法
FMDBの利用方法uske7i
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについてtako pons
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8y_taka_23
 
Parse.comと始めるBackbone.js入門(jscafe7)
Parse.comと始めるBackbone.js入門(jscafe7)Parse.comと始めるBackbone.js入門(jscafe7)
Parse.comと始めるBackbone.js入門(jscafe7)Ryuma Tsukano
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2Atsuo Yamasaki
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門spring_raining
 
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-uedayou
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)Takuya Azumi
 
Deep dive into oss written in swift
Deep dive into oss written in swiftDeep dive into oss written in swift
Deep dive into oss written in swiftYuki Asai
 
Deep dive into oss written in swift
Deep dive into oss written in swiftDeep dive into oss written in swift
Deep dive into oss written in swiftYuki Asai
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューAkira Inoue
 
Nodejuku01 ohtsu
Nodejuku01 ohtsuNodejuku01 ohtsu
Nodejuku01 ohtsuNanha Park
 

Similar a Ll xcode (20)

基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
 
Blocksの活用法
Blocksの活用法Blocksの活用法
Blocksの活用法
 
ScaLa+Liftとか
ScaLa+LiftとかScaLa+Liftとか
ScaLa+Liftとか
 
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
 
FMDBの利用方法
FMDBの利用方法FMDBの利用方法
FMDBの利用方法
 
jQuery超入門編
jQuery超入門編jQuery超入門編
jQuery超入門編
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについて
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
 
Parse.comと始めるBackbone.js入門(jscafe7)
Parse.comと始めるBackbone.js入門(jscafe7)Parse.comと始めるBackbone.js入門(jscafe7)
Parse.comと始めるBackbone.js入門(jscafe7)
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
 
20141129-dotNet2015
20141129-dotNet201520141129-dotNet2015
20141129-dotNet2015
 
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
 
Deep dive into oss written in swift
Deep dive into oss written in swiftDeep dive into oss written in swift
Deep dive into oss written in swift
 
Deep dive into oss written in swift
Deep dive into oss written in swiftDeep dive into oss written in swift
Deep dive into oss written in swift
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
 
VerilatorとSystemC
VerilatorとSystemCVerilatorとSystemC
VerilatorとSystemC
 
Nodejuku01 ohtsu
Nodejuku01 ohtsuNodejuku01 ohtsu
Nodejuku01 ohtsu
 

Más de Net Kanayan

Más de Net Kanayan (20)

Osc16gm
Osc16gmOsc16gm
Osc16gm
 
Open source
Open sourceOpen source
Open source
 
Http2入門の入門
Http2入門の入門Http2入門の入門
Http2入門の入門
 
Es6 cognition
Es6 cognitionEs6 cognition
Es6 cognition
 
ES6 はじめました
ES6 はじめましたES6 はじめました
ES6 はじめました
 
Image convert
Image convertImage convert
Image convert
 
Browser push notifications
Browser push notificationsBrowser push notifications
Browser push notifications
 
Http
HttpHttp
Http
 
Basic vulnerability
Basic vulnerabilityBasic vulnerability
Basic vulnerability
 
Windows store app html
Windows store app htmlWindows store app html
Windows store app html
 
Js kusen
Js kusenJs kusen
Js kusen
 
Sass less
Sass lessSass less
Sass less
 
Web creed
Web creedWeb creed
Web creed
 
Js mvc
Js mvcJs mvc
Js mvc
 
Tdd&peapro
Tdd&peaproTdd&peapro
Tdd&peapro
 
Nseg jquery mobile
Nseg jquery mobileNseg jquery mobile
Nseg jquery mobile
 
Smart phone
Smart phoneSmart phone
Smart phone
 
Html5 css3 websocket
Html5 css3 websocketHtml5 css3 websocket
Html5 css3 websocket
 
Gunma ruby
Gunma rubyGunma ruby
Gunma ruby
 
Gunmaweb
GunmawebGunmaweb
Gunmaweb
 

Ll xcode

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n