SlideShare a Scribd company logo
Perlでの”⼩小規模”アプリ
      制作事例例
   2013.03.29(⾦金金)
       @ruik



                     1
本Talkの⽬目的

     Perl  Casualは
「カジュアルにPerlを楽しみたい
 “初⼼心者”向けのイベント」




      “初⼼心者”でも
 “⼩小規模”アプリをCasualに
作っちゃえるんだという勇気を!
                     2
⾃自⼰己紹介




         3
⽊木村  塁             今年年の6⽉月から
                  年年末まで育児休業
    @ruik
                     を取得予定
年年齢: 30歳
職業: 会社員@KDDI
    ヒカリエ33〜~34階で過ごしています
    主にauユーザー向けのサービス企画
    ≠エンジニア
    「Googleの20%ルール」のような形で
    20%のリソースで新規サービスの企画&開発
    ⼤大学の頃Perlでコード書いたことある、って事で
    サーバサイドの実装を主に担当              4
Perlレベル




          5
6
いわゆる
「ライブラリの
  利利⽤用者」




           7
“⼩小規模”アプリ制作事例例




                 8
みんなでつくる
旅のしおり



      2010/12          開発開始
      2011/7              サービスリリース
      2013/5/31    サービス終了了予定
旅の経験をもっと⼤大切切に

         経験の記録




         旅のしおり

プランニング           経験の共有
Mash  Up

   ⼀一緒に⾏行行く⼈人皆で

   -‐‑‒    予定の追加
   -‐‑‒    写真などの思い出
   -‐‑‒    ⾏行行った場所(Check-‐‑‒in)

   ができる。
Real-‐‑‒Time



    旅のしおり画⾯面から、
    写真投稿やCheck-‐‑‒in、予定
    の追加などをすると・・・
Real-‐‑‒Time


        Facebookでも旅
         の情報をシェア
構成


         iPhoneアプリ
バックエンド
  サーバ



 やり取りは
  JSON   Androidアプリ
構成(当初)
アプリからのアクセス


   apache
     +
  mod_̲perl
130329 perl casual_ruik
構成(⾒見見直し後)
              外部からのアクセス


                apache

daemontools
でプロセス監視         starman
なんでMojolicious?
       Mojoliciousは
Catalystの作者が新たに作った
 Webフレームワークらしい

Catalystってのは俺でも知ってる

          じゃあ、
  Mojolicious  >  Catalyst
    ってことで、使おう
Mojoliciousでアプリを作る
  $  mojo  generate  app  sojorsojor

  ./
  ├──  lib
  │      ├──  Sojorsojor
  │      │      └──  Example.pm
  │      └──  Sojorsojor.pm              ディスパッチャ
  ├──  log
  ├──  public
  │      └──  index.html
  ├──  script
  │      └──  sojorsojor
  ├──  t
  │      └──  basic.t
  └──  templates
          ├──  example
          │      └──  welcome.html.ep
          └──  layouts
                  └──  default.html.ep
Mojoliciousでアプリを作る
                      lib/Sojorsojor.pm
  package  Sojorsojor;
  use  Mojo::Base  'Mojolicious';
    
  #  This  method  will  run  once  at  server  start
  sub  startup  {                                                lib/Sojorsojor/Api/
          my  $self  =  shift;                                        Friend.pm
                                                                           の
  #  Router                                                               list
          my  $r  =  $self-‐‑‒>routes;                                を実⾏行行する
    
  #  Normal  route  to  controller
          $r-‐‑‒>get('/api/friend')-‐‑‒>to(ʼ’api-‐‑‒friend#list');
  }

  1;
Mojoliciousでアプリを作る
  ./
  ├──  lib
  │      ├──  Sojorsojor            Controller
  │      │      └──  Api
  │      │      │  └──  Friend.pm
  │      │      │  └──  Search.pm
  │      │      │          ・
  │      │      │          ・
  〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~
  │      │      └──  Model           Model
  │      │      │  └──  Friend.pm
  │      │      │  └──  Search.pm
  │      │      │          ・
  │      │      │          ・
  〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~
  │      └──  Sojorsojor.pm
  ├──  log
  ├──  public
  │      └──  index.html
Mojoliciousでアプリを作る

   最終的に40個超のAPIを
     アプリ向けに⽤用意

    コピペコードが満載

    次こそはこの反省省を
      活かそう。。。
2つ⽬目の”⼩小規模”アプリ制作事例例




                      23
毎⽇日の買い物を楽しく




ソージャ!ソージャ!の
経験とコードを活かし    2011/4	
  	
  	
  	
  	
  	
  開発開始	
  
  て⼯工期短縮      2011/7	
  	
  	
  	
  	
  	
  	
  サービスリリース	
  
              2013/5/31	
  サービス終了予定
毎⽇日の買い物を楽しく




バーコードをスキャン   コメントや☆を共有
                         皆のコメントを⾒見見て、
                         ⼈人気商品をチェック!
ランキング   クエスト




        バッジ
構成


         iPhoneアプリ
バックエンド
  サーバ



 やり取りは
  JSON   Androidアプリ
Mojoliciousでアプリを作る
  ./
  ├──  lib
  │      ├──  Itemloupe
  │      │      └──  Api
  │      │      │  └──  Base.pm
                                      反省省を活かして、
                                    ソージャ!ソージャ!の
  │      │      │  └──  Friend.pm       Base.pm
                                    経験とコードを活かし
  │      │      │  └──  Search.pm    をちゃんと作成して、
                                       て⼯工期短縮
  │      │      │          ・
  │      │      │          ・
                                       処理理を共通化
  〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~
  │      │      └──  Model
  │      │      │  └──  Base.pm
  │      │      │  └──  Friend.pm
  │      │      │  └──  Search.pm
  │      │      │          ・
  │      │      │          ・
  〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~
  │      └──  Itemloupe.pm
  ├──  log
Mojoliciousでアプリを作る
                    lib/Api/Base.pm
  package  Itemloupe::Api::Base;

  use  strict;
  use  warnings;

  use  base  'Mojolicious::Controller';
  use  Itemloupe::Session;

  #  APIのアウトプットとなるJSONのパターンを定義
  sub  api_̲output  {
          my  ($self,  $data,  $error,  $type)  =  @_̲;
  〜~〜~処理理を書く〜~〜~
          $self-‐‑‒>render('json'  =>  $output);
  }

  1;
Mojoliciousでアプリを作る
                      lib/Api/Activity.pm
  package  Itemloupe::Api::Activity;

  use  strict;
  use  warnings;
                                                              コピペが減って
  use  base  'Itemloupe::Api::Base';
  use  Itemloupe::Model::Activity;                              すっきり

  sub  get  {
  〜~〜~〜~〜~〜~中略略〜~〜~〜~〜~〜~
  #  activity  get
          my  $activity  =  new  Itemloupe::Model::Activity;
          my  $result  =  $activity-‐‑‒>get($self-‐‑‒>uid,  $uid,  $p-‐‑‒
  >{'type'});
  #  output
          $self-‐‑‒>api_̲output($result,  $activity-‐‑‒>get_̲error);
  }
3つ⽬目の”⼩小規模”アプリ制作事例例




                      31
ランチガチャ
 コミュニ
ケーション
活性化の仕
          Lunch  Gacha!
組みづくり     http://lunch.7hongi.com


        ヒカリエで働く⼈人のためのランチスポットのリコメンドサービス
         社内のヒカリエ引越しPJと7hongiPJ(内製PJ)でコラボ




                                2012/8	
  	
  	
  	
  	
  	
  開発開始	
  
                                2012/10	
  	
  	
  	
  サービスリリース	
  
                                                                         32
構成


         HTML5+JS
バックエンド   のWebアプリ
  サーバ



 やり取りは
  JSON
さいごに  –  今⽇日伝えたいこと




                     34
何個か作っていれば、慣れる!




                 35

More Related Content

PDF
みんなでおばけになる #mlkcca
PDF
TestFlight自動化でらくらくチームテスト
PDF
モジュール開発におけるぼくの試行錯誤
PPTX
Milkcocoa meetup #2 Unityでmilkcocoaを使ってみる
PDF
YAPC::Nagoya::Tiny 2019 | Makefile生活
PDF
Djangoによるスマホアプリバックエンドの実装
PDF
Goを知る
PDF
2015/11/15 Javaでwebアプリケーション入門
みんなでおばけになる #mlkcca
TestFlight自動化でらくらくチームテスト
モジュール開発におけるぼくの試行錯誤
Milkcocoa meetup #2 Unityでmilkcocoaを使ってみる
YAPC::Nagoya::Tiny 2019 | Makefile生活
Djangoによるスマホアプリバックエンドの実装
Goを知る
2015/11/15 Javaでwebアプリケーション入門

Similar to 130329 perl casual_ruik (20)

PDF
Mojoliciousでつくる! Webアプリ入門
PDF
Mojolicious::Liteを使ってみよう
KEY
Mojoliciousをウェブ制作現場で使ってみてる
PDF
「Webサービスのつくり方」 のつくり方
PDF
「新しい」を生み出すためのWebアプリ開発とその周辺
PDF
Movable TypeのWebアプリケーションフレームワークの基本
PDF
Osc2008 Opensuse Moonlinx
PDF
The master plan of scaling a web application
PDF
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
PDF
iPhone、Android両対応アプリ開発講座 概論
PDF
PhoneGapでWebアプリをスマホアプリ化
PPTX
UnicastWS vol.2
PDF
20130412 titanium meetupvol7
PDF
Mojoliciousのログ出力を改造する in chiba.pm #3
PPTX
趣味でやるSmalltalk Webアプリ開発
PDF
実践スクレイピング
PDF
WordPressAPI
PDF
Cakephp
PPT
Web事例からみたセマンティックウェブ/野田 健夫
PDF
僕が作ってきたWebサービス追悼式 #NGK2012B
Mojoliciousでつくる! Webアプリ入門
Mojolicious::Liteを使ってみよう
Mojoliciousをウェブ制作現場で使ってみてる
「Webサービスのつくり方」 のつくり方
「新しい」を生み出すためのWebアプリ開発とその周辺
Movable TypeのWebアプリケーションフレームワークの基本
Osc2008 Opensuse Moonlinx
The master plan of scaling a web application
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
iPhone、Android両対応アプリ開発講座 概論
PhoneGapでWebアプリをスマホアプリ化
UnicastWS vol.2
20130412 titanium meetupvol7
Mojoliciousのログ出力を改造する in chiba.pm #3
趣味でやるSmalltalk Webアプリ開発
実践スクレイピング
WordPressAPI
Cakephp
Web事例からみたセマンティックウェブ/野田 健夫
僕が作ってきたWebサービス追悼式 #NGK2012B
Ad

130329 perl casual_ruik

  • 1. Perlでの”⼩小規模”アプリ 制作事例例 2013.03.29(⾦金金) @ruik 1
  • 2. 本Talkの⽬目的 Perl  Casualは 「カジュアルにPerlを楽しみたい “初⼼心者”向けのイベント」 “初⼼心者”でも “⼩小規模”アプリをCasualに 作っちゃえるんだという勇気を! 2
  • 4. ⽊木村  塁 今年年の6⽉月から 年年末まで育児休業 @ruik を取得予定 年年齢: 30歳 職業: 会社員@KDDI ヒカリエ33〜~34階で過ごしています 主にauユーザー向けのサービス企画 ≠エンジニア 「Googleの20%ルール」のような形で 20%のリソースで新規サービスの企画&開発 ⼤大学の頃Perlでコード書いたことある、って事で サーバサイドの実装を主に担当 4
  • 6. 6
  • 9. みんなでつくる 旅のしおり 2010/12          開発開始 2011/7              サービスリリース 2013/5/31    サービス終了了予定
  • 10. 旅の経験をもっと⼤大切切に 経験の記録 旅のしおり プランニング 経験の共有
  • 11. Mash  Up ⼀一緒に⾏行行く⼈人皆で -‐‑‒  予定の追加 -‐‑‒  写真などの思い出 -‐‑‒  ⾏行行った場所(Check-‐‑‒in) ができる。
  • 12. Real-‐‑‒Time 旅のしおり画⾯面から、 写真投稿やCheck-‐‑‒in、予定 の追加などをすると・・・
  • 13. Real-‐‑‒Time Facebookでも旅 の情報をシェア
  • 14. 構成 iPhoneアプリ バックエンド サーバ やり取りは JSON Androidアプリ
  • 17. 構成(⾒見見直し後) 外部からのアクセス apache daemontools でプロセス監視 starman
  • 18. なんでMojolicious? Mojoliciousは Catalystの作者が新たに作った Webフレームワークらしい Catalystってのは俺でも知ってる じゃあ、 Mojolicious  >  Catalyst ってことで、使おう
  • 19. Mojoliciousでアプリを作る $  mojo  generate  app  sojorsojor ./ ├──  lib │      ├──  Sojorsojor │      │      └──  Example.pm │      └──  Sojorsojor.pm ディスパッチャ ├──  log ├──  public │      └──  index.html ├──  script │      └──  sojorsojor ├──  t │      └──  basic.t └──  templates        ├──  example        │      └──  welcome.html.ep        └──  layouts                └──  default.html.ep
  • 20. Mojoliciousでアプリを作る lib/Sojorsojor.pm package  Sojorsojor; use  Mojo::Base  'Mojolicious';   #  This  method  will  run  once  at  server  start sub  startup  { lib/Sojorsojor/Api/        my  $self  =  shift; Friend.pm   の #  Router list        my  $r  =  $self-‐‑‒>routes; を実⾏行行する   #  Normal  route  to  controller        $r-‐‑‒>get('/api/friend')-‐‑‒>to(ʼ’api-‐‑‒friend#list'); } 1;
  • 21. Mojoliciousでアプリを作る ./ ├──  lib │      ├──  Sojorsojor Controller │      │      └──  Api │      │      │  └──  Friend.pm │      │      │  └──  Search.pm │      │      │          ・ │      │      │          ・ 〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~ │      │      └──  Model Model │      │      │  └──  Friend.pm │      │      │  └──  Search.pm │      │      │          ・ │      │      │          ・ 〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~ │      └──  Sojorsojor.pm ├──  log ├──  public │      └──  index.html
  • 22. Mojoliciousでアプリを作る 最終的に40個超のAPIを アプリ向けに⽤用意 コピペコードが満載 次こそはこの反省省を 活かそう。。。
  • 24. 毎⽇日の買い物を楽しく ソージャ!ソージャ!の 経験とコードを活かし 2011/4            開発開始   て⼯工期短縮 2011/7              サービスリリース   2013/5/31  サービス終了予定
  • 25. 毎⽇日の買い物を楽しく バーコードをスキャン コメントや☆を共有 皆のコメントを⾒見見て、 ⼈人気商品をチェック!
  • 26. ランキング クエスト バッジ
  • 27. 構成 iPhoneアプリ バックエンド サーバ やり取りは JSON Androidアプリ
  • 28. Mojoliciousでアプリを作る ./ ├──  lib │      ├──  Itemloupe │      │      └──  Api │      │      │  └──  Base.pm 反省省を活かして、 ソージャ!ソージャ!の │      │      │  └──  Friend.pm Base.pm 経験とコードを活かし │      │      │  └──  Search.pm をちゃんと作成して、 て⼯工期短縮 │      │      │          ・ │      │      │          ・ 処理理を共通化 〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~ │      │      └──  Model │      │      │  └──  Base.pm │      │      │  └──  Friend.pm │      │      │  └──  Search.pm │      │      │          ・ │      │      │          ・ 〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~〜~ │      └──  Itemloupe.pm ├──  log
  • 29. Mojoliciousでアプリを作る lib/Api/Base.pm package  Itemloupe::Api::Base; use  strict; use  warnings; use  base  'Mojolicious::Controller'; use  Itemloupe::Session; #  APIのアウトプットとなるJSONのパターンを定義 sub  api_̲output  {        my  ($self,  $data,  $error,  $type)  =  @_̲; 〜~〜~処理理を書く〜~〜~        $self-‐‑‒>render('json'  =>  $output); } 1;
  • 30. Mojoliciousでアプリを作る lib/Api/Activity.pm package  Itemloupe::Api::Activity; use  strict; use  warnings; コピペが減って use  base  'Itemloupe::Api::Base'; use  Itemloupe::Model::Activity; すっきり sub  get  { 〜~〜~〜~〜~〜~中略略〜~〜~〜~〜~〜~ #  activity  get        my  $activity  =  new  Itemloupe::Model::Activity;        my  $result  =  $activity-‐‑‒>get($self-‐‑‒>uid,  $uid,  $p-‐‑‒ >{'type'}); #  output        $self-‐‑‒>api_̲output($result,  $activity-‐‑‒>get_̲error); }
  • 32. ランチガチャ コミュニ ケーション 活性化の仕 Lunch  Gacha! 組みづくり http://lunch.7hongi.com ヒカリエで働く⼈人のためのランチスポットのリコメンドサービス 社内のヒカリエ引越しPJと7hongiPJ(内製PJ)でコラボ 2012/8            開発開始   2012/10        サービスリリース   32
  • 33. 構成 HTML5+JS バックエンド のWebアプリ サーバ やり取りは JSON