SlideShare a Scribd company logo
1 of 56
Download to read offline
GoogleMap	  
         モジュール
                の紹介
2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
自己紹介
 @ohwada
 大和田 健一
 横浜市戸塚区 在住
 ITコンサルタント
  NetCommons
  XOOPS / WordPress / Android
2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
XOOPS
                         2011年4月
                          2.2 リリース


                        2012年4月
                         リンク集モジュール
                         ロシア語版

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
WordPress
       2012年4月 3.3.2 リリース

  ワードプレス勉強会 @ 横浜・関内




2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
Android
           2012年4月 SDK r19 リリース

         日本Androidの会 横浜支部




2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
Android によるロボット制御




2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
NetCommons


2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
YN150プロジェクト

                  構築運営支援
        無償 レンタルサーバー
            ネットコモンズ
            インストール済
          (協力:東京都市大学 )
                     http://yn150.jp/

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
開発したモジュール

 1.Google Map 
 2.Twitter / Facebook
 3.ヘッダ・チェンジャー 
 4.Facebook風掲示板
              http://ohwada.yn150.jp/


2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
Google Map




2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
Twitter / Facebook
    1.標準のログインの代わりに
      Twitter (Facebook) で
      ログイン出来ます
    2.ログインユーザの
      Twitter (Facebook) の
      タイムラインを表示する
             http://ohwada.yn150.jp/

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
ヘッダ・チェンジャー
                 標準
                 ヘッダカラム、左カラム、右カラム
                  (青色)
                 全てのページで共通

                 ヘッダカラム(桃色)
                 左カラム(緑色)
                 右カラム(黄色)
                 ページ毎に異なるものに

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
Facebook風掲示板
  汎用データベース・モジュールをカスタマイズ




2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
NetCommons
     モジュール開発

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
必要な知識

1.HTML + CSS
2.PHP / Smarty
3.MySQL
4.JavaScript / prototype.js

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
3つのポイント

      Maple ベース
       1. DIコンテナ
       2. フィルタチェイン
       3. GUI / WYSIWYG
        http://ohwada.yn150.jp/explain/di-container/



2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
DIコンテナ
             Dependency Injection
                 依存性の注入




Java Spring
http://www.atmarkit.co.jp/fjava/rensai3/springdi01/springdi01_1.html


2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
フィルタチェイン




PHP Ethna
http://ethna.jp/ethna-document-dev_guide-app-filterchain.html

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
GUI / WYSIWYG
   What You See Is What You Get
        見たままが得られる
     => JavaScript で実現




2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
NetCommons
      GoogleMap
      モジュール

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
お知らせ

新バージョン リリース
1. GoogleMaps API V3 対応
 API Key 不要
2. 住所検索 追加
           http://ohwada.yn150.jp/googlemap/



2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
マニュアル                   http://bit.ly/ITuwAz




2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
モジュール開発
                    ベースは
                   ブログパーツ モジュール
                   公式サイト 拡張モジュール
                   機能がシンプル
                   初心者にお勧め
       http://www.netcommons.org/mudl5vlri-167/#_167



2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
API : JavaScript
   https://developers.google.com/maps/documentation/javascript/
   <script type="text/javascript"
     src="http://maps.googleapis.com/maps/api/js">
   </script>
   <script type="text/javascript">
   function initialize() {
     var myOptions = {
        center: new google.maps.LatLng(-34.397, 150.644),
        zoom: 8,
        mapTypeId: google.maps.MapTypeId.ROADMAP
     };
     var map = new google.maps.Map(
        document.getElementById("map_canvas"), myOptions );
   }
   </script>
   <body onload="initialize()">

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
実装上の工夫
理由
 NetCommons の GUI と衝突

実装の例
 1. 地図を表示する
 2. 参照で地図を表示する
 3. 地図の緯度経度を選択する

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
1. 地図を表示する




2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
地図を表示する
            googlemap_view_main_init.html
 function googlemap_load<{$id}>() {            API そのまま
    var latlng = new
google.maps.LatLng( parseFloat(<{$action.parts_data.parts_latitude}>),
parseFloat(<{$action.parts_data.parts_longitude}>) );
    var zoom = Math.floor( <{$action.parts_data.parts_zoom}> );
    var ele = document.getElementById( "googlemap_canvas<{$id}>" );
    var map_options = {
        zoom: zoom,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    … 中略
}
 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
地図を表示する
        googlemap_view_main_init.html

    <{if $action.load_script}>
         <script src="http://maps.google.com/maps/api/js"
             type="text/javascript" charset="utf-8">
         </script>
    <{/if}>
    <script type="text/javascript">
    function googlemap_load<{$id}>() {
         … 中略                                複数表示する
    }
    setTimeout( 'googlemap_load<{$id}>()' , 1000):
    </script>


2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
地図を表示する
                複数表示する
       チュートリアル
        <body onload="initialize()">
        
       同等
        window.onload =initialize;
        

       複数表示
        setTimeout( "initialize_1() , 1000):
        setTimeout( initialize_2() , 1000):

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
2. 参照で地図を表示する




2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
参照で地図を表示する
          「参照」の仕組み

「参照」ボタンを押すと
1. referGooglemap (JavaScript)
2. popup 形式で
3. googlemap_view_edit_preview 実行


2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
参照で地図を表示する
      googlemap_view_edit_preview.html

 課題
  API を記述しても表示しない。
 対応
  iframe にて、
  googlemap_view_main_preview
  を呼出す
2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
参照で地図を表示する
       googlemap_view_main_preview.html

 <html><head>
 <script src="http://maps.google.com/maps/api/js?sensor=false"
  type="text/javascript" charset="utf-8"></script>
 </head>
 <body>
 <script type="text/javascript">               html フル記述
 function googlemap_preview_load<{$id}>() {
  省略 ...
 }
 </script>
 </body></html>


2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
参照で地図を表示する

                  iframe

                           ←

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
3. 地図の緯度経度を選択する




2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
地図の緯度経度を選択する

googlemap.jp

     GoogleMaps API で動作を記述した
     JavaScript 900行




2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
地図の緯度経度を選択する
    配置場所の課題
     files/default/js/ 配下
      DBに格納される
   対応 (トリッキー)
    files/default/images/ 配下 
     htdocs 領域のコピー
     URLとして指定できる
2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
地図の緯度経度を選択する
       googlemap_view_edit_entry.html

 課題
  API を記述しても表示しない
 対応 (参照と同じ)
  iframe にて、
  googlemap_view_main_preview
  を呼出す
2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
地図の緯度経度を選択する
      googlemap_view_main_location.html
  <html><head>
  <script src="http://maps.google.com/maps/api/js"
   type="text/javascript" charset="utf-8"></script>
  <script src="<{$smarty.const.CORE_BASE_URL}>
   /images/googlemap/googlemap_location.js"
   type="text/javascript"></script>
                                                      URL指定
  </head>
  <body>                                       html フル記述
  <script type="text/javascript">
  function googlemap_load_get_location() {
   省略 ...
  }
  </script>
  </body></html>
2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
NetCommons
       デバック
       ノウハウ

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
デバックノウハウ
              通常の画面遷移
                                      URL2
   URL1



                 GET/POST

  ボタン                 →               描画



2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
デバックノウハウ
       NetCommonsの画面遷移
                                 URL1 (変わらず)
   URL1


                 GET/POST

                   Java              部分的
  ボタン           →            →
                  Script             再描画


2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
デバックノウハウ
遷移後の画面が表示できないだろうか?
                                 URL1 (変わらず)
   URL1


                 GET/POST

                   Java              部分的
  ボタン           →            →
                  Script             再描画


2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
デバックノウハウ
     index.php?action=login_view_main_init
             ログイン画面表示




2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
デバックノウハウ
  index.php?action=googlemap_view_main_init


              何も表示しない
                       ➡

           Smarty error:
      unable to read resource:
            "block.html"
2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
デバックノウハウ
     index.php?action=login_view_main_init



                  特別扱い
  webapp/components/common/Main.class.php

   if ($action_name == "login_view_main_init"
                && $block_id == 0)



2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
デバックノウハウ
 index.php?action=googlelmap_view_main_init
                &_header=0

         地図が選択されてません
                       ➡

              地図が選択すれば

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
デバックノウハウ
index.php?action=googlemap_view_main_init
         &_header=0&block_id=56




 http://ohwada.yn150.jp/index.php?action=googlemap_view_main_init&_header=0&block_id=56



2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
GoogleMap
           API

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
API V2 -> V3
1. より部品化が進んだ
 バルーン (吹き出し)
 V2: マーカーの1つの機能
 V3: 独立した機能 イベントで結びつける
2. 無くなった機能
 マーカーをまとめて消す

 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
API 住所検索
初期のころは、
期待した結果が得られなかった。
今は、ほぼ期待とおり。
こういうサービスは、
公共機関がやって欲しいな。
 東京大学 ジオコーディング実験
 http://newspat.csis.u-tokyo.ac.jp/geocode/modules/geocode/index.php?content_id=1



2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
API 利用許諾

1. 回数制限が厳しくなった
 以前は、実質 制限なし
 最近は、人気サイトでは制限に該当




2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
GoogleMap 離れ
   Foursquare / Apple / Wikipedia
         OpenStreetMap への移行

             2012年3月
             米foursquare
             Google Mapsから 地図版Wikipedia に移行

http://internet.watch.impress.co.jp/docs/news/20120302_516130.html


2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
OpenStreetMap
            自由な地図を作る
             プロジェクト




2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
OpenStreetMap
               6月24日 横浜 勉強会
        http://connpass.com/event/499/?disp_content=presentation




                                     4月15日
                                     「OpenStreetMap」
                                     を作る人の会合で
                                     地図編集の心得を学んできた

http://internet.watch.impress.co.jp/docs/column/chizu/20120419_527533.html


   2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
質疑応答


2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

More Related Content

Similar to 20120516 NetCommons GoogleMap

配布用Supervisordによるnode.jsの運用
配布用Supervisordによるnode.jsの運用配布用Supervisordによるnode.jsの運用
配布用Supervisordによるnode.jsの運用yut148atgmaildotcom
 
20120215 jquery in wordpress cafe
20120215 jquery in wordpress cafe20120215 jquery in wordpress cafe
20120215 jquery in wordpress cafeKenichi Ohwada
 
UnityとBlenderハンズオン第7章
UnityとBlenderハンズオン第7章UnityとBlenderハンズオン第7章
UnityとBlenderハンズオン第7章yaju88
 
Windowsストアアプリ開発ハンズオントレーニングに行ってきました 2012-09-22-lt
Windowsストアアプリ開発ハンズオントレーニングに行ってきました 2012-09-22-ltWindowsストアアプリ開発ハンズオントレーニングに行ってきました 2012-09-22-lt
Windowsストアアプリ開発ハンズオントレーニングに行ってきました 2012-09-22-ltTomokazu Kizawa
 
120315 cloud founry_java_ironfoundry
120315 cloud founry_java_ironfoundry120315 cloud founry_java_ironfoundry
120315 cloud founry_java_ironfoundryTakayoshi Tanaka
 
Nseg第32回勉強会
Nseg第32回勉強会Nseg第32回勉強会
Nseg第32回勉強会ko ty
 
Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )Masayuki Abe
 
PhoneGapで作るハイブリッドアプリケーション
PhoneGapで作るハイブリッドアプリケーションPhoneGapで作るハイブリッドアプリケーション
PhoneGapで作るハイブリッドアプリケーションMasahiko Tachizono
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールAtsuo Ishimoto
 
2012年4月22日 カーネル/VM探検隊
2012年4月22日 カーネル/VM探検隊2012年4月22日 カーネル/VM探検隊
2012年4月22日 カーネル/VM探検隊Ryuichi Ueda
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#Yuta Matsumura
 
smartphone test (know how & tools)
smartphone test (know how & tools)smartphone test (know how & tools)
smartphone test (know how & tools)Yukio Andoh
 
Monacaでつくるハイブリッドアプリ
MonacaでつくるハイブリッドアプリMonacaでつくるハイブリッドアプリ
MonacaでつくるハイブリッドアプリMonaca
 
OSC2012 Tokyo Spring, USP lab. presentation
OSC2012 Tokyo Spring, USP lab. presentationOSC2012 Tokyo Spring, USP lab. presentation
OSC2012 Tokyo Spring, USP lab. presentationRyuichi Ueda
 
組込み技術とモバイル技術
組込み技術とモバイル技術組込み技術とモバイル技術
組込み技術とモバイル技術Tomo Watanabe
 
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
「Windows 8 ストア アプリ開発 tips」  vsug day 2012 winter (2012年12月15日)「Windows 8 ストア アプリ開発 tips」  vsug day 2012 winter (2012年12月15日)
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)vsug_jim
 
2012年8月10日 勉強会
2012年8月10日 勉強会2012年8月10日 勉強会
2012年8月10日 勉強会Rin Yano
 
WordPress のいま
WordPress のいまWordPress のいま
WordPress のいまNaoko Takano
 
チームではじめるJetpack compose
チームではじめるJetpack composeチームではじめるJetpack compose
チームではじめるJetpack composeyoshida261 default
 

Similar to 20120516 NetCommons GoogleMap (20)

配布用Supervisordによるnode.jsの運用
配布用Supervisordによるnode.jsの運用配布用Supervisordによるnode.jsの運用
配布用Supervisordによるnode.jsの運用
 
20120215 jquery in wordpress cafe
20120215 jquery in wordpress cafe20120215 jquery in wordpress cafe
20120215 jquery in wordpress cafe
 
UnityとBlenderハンズオン第7章
UnityとBlenderハンズオン第7章UnityとBlenderハンズオン第7章
UnityとBlenderハンズオン第7章
 
Windowsストアアプリ開発ハンズオントレーニングに行ってきました 2012-09-22-lt
Windowsストアアプリ開発ハンズオントレーニングに行ってきました 2012-09-22-ltWindowsストアアプリ開発ハンズオントレーニングに行ってきました 2012-09-22-lt
Windowsストアアプリ開発ハンズオントレーニングに行ってきました 2012-09-22-lt
 
120315 cloud founry_java_ironfoundry
120315 cloud founry_java_ironfoundry120315 cloud founry_java_ironfoundry
120315 cloud founry_java_ironfoundry
 
Nseg第32回勉強会
Nseg第32回勉強会Nseg第32回勉強会
Nseg第32回勉強会
 
Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )
 
PhoneGapで作るハイブリッドアプリケーション
PhoneGapで作るハイブリッドアプリケーションPhoneGapで作るハイブリッドアプリケーション
PhoneGapで作るハイブリッドアプリケーション
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
 
2012年4月22日 カーネル/VM探検隊
2012年4月22日 カーネル/VM探検隊2012年4月22日 カーネル/VM探検隊
2012年4月22日 カーネル/VM探検隊
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
smartphone test (know how & tools)
smartphone test (know how & tools)smartphone test (know how & tools)
smartphone test (know how & tools)
 
Monacaでつくるハイブリッドアプリ
MonacaでつくるハイブリッドアプリMonacaでつくるハイブリッドアプリ
Monacaでつくるハイブリッドアプリ
 
OSC2012 Tokyo Spring, USP lab. presentation
OSC2012 Tokyo Spring, USP lab. presentationOSC2012 Tokyo Spring, USP lab. presentation
OSC2012 Tokyo Spring, USP lab. presentation
 
組込み技術とモバイル技術
組込み技術とモバイル技術組込み技術とモバイル技術
組込み技術とモバイル技術
 
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
「Windows 8 ストア アプリ開発 tips」  vsug day 2012 winter (2012年12月15日)「Windows 8 ストア アプリ開発 tips」  vsug day 2012 winter (2012年12月15日)
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
 
2012年8月10日 勉強会
2012年8月10日 勉強会2012年8月10日 勉強会
2012年8月10日 勉強会
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
WordPress のいま
WordPress のいまWordPress のいま
WordPress のいま
 
チームではじめるJetpack compose
チームではじめるJetpack composeチームではじめるJetpack compose
チームではじめるJetpack compose
 

More from Kenichi Ohwada

20161008 Pepper with Android
20161008 Pepper with Android20161008 Pepper with Android
20161008 Pepper with AndroidKenichi Ohwada
 
20161001 Sakura IoT Platform Alpha
20161001 Sakura IoT Platform Alpha20161001 Sakura IoT Platform Alpha
20161001 Sakura IoT Platform AlphaKenichi Ohwada
 
20160717 Raspberry Pi in Yokohama
20160717 Raspberry Pi in Yokohama20160717 Raspberry Pi in Yokohama
20160717 Raspberry Pi in YokohamaKenichi Ohwada
 
20160529 Pepper SDK for Android Studio
20160529 Pepper SDK for Android Studio 20160529 Pepper SDK for Android Studio
20160529 Pepper SDK for Android Studio Kenichi Ohwada
 
20160224_I_love_robots
20160224_I_love_robots20160224_I_love_robots
20160224_I_love_robotsKenichi Ohwada
 
20151002 Android app for Pepper
20151002 Android app for Pepper 20151002 Android app for Pepper
20151002 Android app for Pepper Kenichi Ohwada
 
20150805 MFT2015 & Pepper Speaker
20150805 MFT2015 & Pepper Speaker20150805 MFT2015 & Pepper Speaker
20150805 MFT2015 & Pepper SpeakerKenichi Ohwada
 
20150329 Make PCB with Eagle and Modela
20150329 Make PCB with Eagle and Modela20150329 Make PCB with Eagle and Modela
20150329 Make PCB with Eagle and ModelaKenichi Ohwada
 
20150327 History of Micro Computer in YRP
20150327 History of Micro Computer in YRP20150327 History of Micro Computer in YRP
20150327 History of Micro Computer in YRPKenichi Ohwada
 
20141005 Sensor Project in FabLab Kannai Vol,.2
20141005 Sensor Project in FabLab Kannai Vol,.220141005 Sensor Project in FabLab Kannai Vol,.2
20141005 Sensor Project in FabLab Kannai Vol,.2Kenichi Ohwada
 
20141129 Make PCB with Eagle and Modela
20141129 Make PCB with Eagle and Modela20141129 Make PCB with Eagle and Modela
20141129 Make PCB with Eagle and ModelaKenichi Ohwada
 
20141105 FabLab in Fab Kura
20141105 FabLab in Fab Kura20141105 FabLab in Fab Kura
20141105 FabLab in Fab KuraKenichi Ohwada
 
20140910 Arduino for beginners
20140910 Arduino for beginners20140910 Arduino for beginners
20140910 Arduino for beginnersKenichi Ohwada
 
20140820 Google Cardboard in Wearable Meeting
20140820 Google Cardboard in Wearable Meeting20140820 Google Cardboard in Wearable Meeting
20140820 Google Cardboard in Wearable MeetingKenichi Ohwada
 
20140802 Wearable Devices in JAG Yokosuka
20140802 Wearable Devices in JAG Yokosuka 20140802 Wearable Devices in JAG Yokosuka
20140802 Wearable Devices in JAG Yokosuka Kenichi Ohwada
 
20140629 Sensor Project in FabLab Kannai
20140629 Sensor Project in FabLab Kannai20140629 Sensor Project in FabLab Kannai
20140629 Sensor Project in FabLab KannaiKenichi Ohwada
 
20140115 android controll evy1
20140115 android controll evy120140115 android controll evy1
20140115 android controll evy1Kenichi Ohwada
 
20131216 Android App Inventor and LEGO Robot Mindstorms
20131216 Android App Inventor and LEGO Robot Mindstorms20131216 Android App Inventor and LEGO Robot Mindstorms
20131216 Android App Inventor and LEGO Robot MindstormsKenichi Ohwada
 
20131116 ABC2013 Report in Android Yokohama
20131116 ABC2013 Report in Android Yokohama20131116 ABC2013 Report in Android Yokohama
20131116 ABC2013 Report in Android YokohamaKenichi Ohwada
 

More from Kenichi Ohwada (20)

20161008 Pepper with Android
20161008 Pepper with Android20161008 Pepper with Android
20161008 Pepper with Android
 
20161001 Sakura IoT Platform Alpha
20161001 Sakura IoT Platform Alpha20161001 Sakura IoT Platform Alpha
20161001 Sakura IoT Platform Alpha
 
20160717 Raspberry Pi in Yokohama
20160717 Raspberry Pi in Yokohama20160717 Raspberry Pi in Yokohama
20160717 Raspberry Pi in Yokohama
 
20160529 Pepper SDK for Android Studio
20160529 Pepper SDK for Android Studio 20160529 Pepper SDK for Android Studio
20160529 Pepper SDK for Android Studio
 
20160224_I_love_robots
20160224_I_love_robots20160224_I_love_robots
20160224_I_love_robots
 
20151002 Android app for Pepper
20151002 Android app for Pepper 20151002 Android app for Pepper
20151002 Android app for Pepper
 
20150805 MFT2015 & Pepper Speaker
20150805 MFT2015 & Pepper Speaker20150805 MFT2015 & Pepper Speaker
20150805 MFT2015 & Pepper Speaker
 
20150329 Make PCB with Eagle and Modela
20150329 Make PCB with Eagle and Modela20150329 Make PCB with Eagle and Modela
20150329 Make PCB with Eagle and Modela
 
20150327 History of Micro Computer in YRP
20150327 History of Micro Computer in YRP20150327 History of Micro Computer in YRP
20150327 History of Micro Computer in YRP
 
20141005 Sensor Project in FabLab Kannai Vol,.2
20141005 Sensor Project in FabLab Kannai Vol,.220141005 Sensor Project in FabLab Kannai Vol,.2
20141005 Sensor Project in FabLab Kannai Vol,.2
 
20141129 Make PCB with Eagle and Modela
20141129 Make PCB with Eagle and Modela20141129 Make PCB with Eagle and Modela
20141129 Make PCB with Eagle and Modela
 
20141105 FabLab in Fab Kura
20141105 FabLab in Fab Kura20141105 FabLab in Fab Kura
20141105 FabLab in Fab Kura
 
20140910 Arduino for beginners
20140910 Arduino for beginners20140910 Arduino for beginners
20140910 Arduino for beginners
 
20140820 Google Cardboard in Wearable Meeting
20140820 Google Cardboard in Wearable Meeting20140820 Google Cardboard in Wearable Meeting
20140820 Google Cardboard in Wearable Meeting
 
20140802 Wearable Devices in JAG Yokosuka
20140802 Wearable Devices in JAG Yokosuka 20140802 Wearable Devices in JAG Yokosuka
20140802 Wearable Devices in JAG Yokosuka
 
20140629 Sensor Project in FabLab Kannai
20140629 Sensor Project in FabLab Kannai20140629 Sensor Project in FabLab Kannai
20140629 Sensor Project in FabLab Kannai
 
20140115 android controll evy1
20140115 android controll evy120140115 android controll evy1
20140115 android controll evy1
 
20131221adk
20131221adk20131221adk
20131221adk
 
20131216 Android App Inventor and LEGO Robot Mindstorms
20131216 Android App Inventor and LEGO Robot Mindstorms20131216 Android App Inventor and LEGO Robot Mindstorms
20131216 Android App Inventor and LEGO Robot Mindstorms
 
20131116 ABC2013 Report in Android Yokohama
20131116 ABC2013 Report in Android Yokohama20131116 ABC2013 Report in Android Yokohama
20131116 ABC2013 Report in Android Yokohama
 

Recently uploaded

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Recently uploaded (9)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

20120516 NetCommons GoogleMap

  • 1. GoogleMap   モジュール の紹介 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 2. 自己紹介 @ohwada 大和田 健一 横浜市戸塚区 在住 ITコンサルタント  NetCommons  XOOPS / WordPress / Android 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 3. XOOPS 2011年4月  2.2 リリース 2012年4月  リンク集モジュール  ロシア語版 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 4. WordPress 2012年4月 3.3.2 リリース ワードプレス勉強会 @ 横浜・関内 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 5. Android 2012年4月 SDK r19 リリース 日本Androidの会 横浜支部 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 8. YN150プロジェクト 構築運営支援 無償 レンタルサーバー ネットコモンズ インストール済 (協力:東京都市大学 ) http://yn150.jp/ 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 9. 開発したモジュール 1.Google Map  2.Twitter / Facebook 3.ヘッダ・チェンジャー  4.Facebook風掲示板 http://ohwada.yn150.jp/ 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 11. Twitter / Facebook 1.標準のログインの代わりに   Twitter (Facebook) で   ログイン出来ます 2.ログインユーザの   Twitter (Facebook) の   タイムラインを表示する http://ohwada.yn150.jp/ 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 12. ヘッダ・チェンジャー 標準 ヘッダカラム、左カラム、右カラム  (青色) 全てのページで共通 ヘッダカラム(桃色) 左カラム(緑色) 右カラム(黄色) ページ毎に異なるものに 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 13. Facebook風掲示板 汎用データベース・モジュールをカスタマイズ 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 14. NetCommons モジュール開発 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 15. 必要な知識 1.HTML + CSS 2.PHP / Smarty 3.MySQL 4.JavaScript / prototype.js 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 16. 3つのポイント Maple ベース  1. DIコンテナ  2. フィルタチェイン  3. GUI / WYSIWYG http://ohwada.yn150.jp/explain/di-container/ 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 17. DIコンテナ Dependency Injection 依存性の注入 Java Spring http://www.atmarkit.co.jp/fjava/rensai3/springdi01/springdi01_1.html 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 19. GUI / WYSIWYG What You See Is What You Get 見たままが得られる => JavaScript で実現 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 20. NetCommons GoogleMap モジュール 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 21. お知らせ 新バージョン リリース 1. GoogleMaps API V3 対応  API Key 不要 2. 住所検索 追加 http://ohwada.yn150.jp/googlemap/ 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 22. マニュアル http://bit.ly/ITuwAz 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 23. モジュール開発 ベースは ブログパーツ モジュール 公式サイト 拡張モジュール 機能がシンプル 初心者にお勧め http://www.netcommons.org/mudl5vlri-167/#_167 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 24. API : JavaScript https://developers.google.com/maps/documentation/javascript/ <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js"> </script> <script type="text/javascript"> function initialize() { var myOptions = { center: new google.maps.LatLng(-34.397, 150.644), zoom: 8, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map( document.getElementById("map_canvas"), myOptions ); } </script> <body onload="initialize()"> 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 25. 実装上の工夫 理由  NetCommons の GUI と衝突 実装の例  1. 地図を表示する  2. 参照で地図を表示する  3. 地図の緯度経度を選択する 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 27. 地図を表示する googlemap_view_main_init.html function googlemap_load<{$id}>() { API そのまま var latlng = new google.maps.LatLng( parseFloat(<{$action.parts_data.parts_latitude}>), parseFloat(<{$action.parts_data.parts_longitude}>) ); var zoom = Math.floor( <{$action.parts_data.parts_zoom}> ); var ele = document.getElementById( "googlemap_canvas<{$id}>" ); var map_options = { zoom: zoom, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; … 中略 } 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 28. 地図を表示する googlemap_view_main_init.html <{if $action.load_script}> <script src="http://maps.google.com/maps/api/js" type="text/javascript" charset="utf-8"> </script> <{/if}> <script type="text/javascript"> function googlemap_load<{$id}>() { … 中略 複数表示する } setTimeout( 'googlemap_load<{$id}>()' , 1000): </script> 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 29. 地図を表示する 複数表示する チュートリアル  <body onload="initialize()">   同等  window.onload =initialize;   複数表示  setTimeout( "initialize_1() , 1000):  setTimeout( initialize_2() , 1000): 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 31. 参照で地図を表示する 「参照」の仕組み 「参照」ボタンを押すと 1. referGooglemap (JavaScript) 2. popup 形式で 3. googlemap_view_edit_preview 実行 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 32. 参照で地図を表示する googlemap_view_edit_preview.html 課題  API を記述しても表示しない。 対応  iframe にて、  googlemap_view_main_preview  を呼出す 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 33. 参照で地図を表示する googlemap_view_main_preview.html <html><head> <script src="http://maps.google.com/maps/api/js?sensor=false"  type="text/javascript" charset="utf-8"></script> </head> <body> <script type="text/javascript"> html フル記述 function googlemap_preview_load<{$id}>() {  省略 ... } </script> </body></html> 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 34. 参照で地図を表示する iframe ← 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 36. 地図の緯度経度を選択する googlemap.jp GoogleMaps API で動作を記述した JavaScript 900行 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 37. 地図の緯度経度を選択する 配置場所の課題  files/default/js/ 配下   DBに格納される 対応 (トリッキー)  files/default/images/ 配下    htdocs 領域のコピー   URLとして指定できる 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 38. 地図の緯度経度を選択する googlemap_view_edit_entry.html 課題  API を記述しても表示しない 対応 (参照と同じ)  iframe にて、  googlemap_view_main_preview  を呼出す 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 39. 地図の緯度経度を選択する googlemap_view_main_location.html <html><head> <script src="http://maps.google.com/maps/api/js"  type="text/javascript" charset="utf-8"></script> <script src="<{$smarty.const.CORE_BASE_URL}>  /images/googlemap/googlemap_location.js"  type="text/javascript"></script> URL指定 </head> <body> html フル記述 <script type="text/javascript"> function googlemap_load_get_location() {  省略 ... } </script> </body></html> 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 40. NetCommons デバック ノウハウ 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 41. デバックノウハウ 通常の画面遷移 URL2 URL1 GET/POST ボタン → 描画 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 42. デバックノウハウ NetCommonsの画面遷移 URL1 (変わらず) URL1 GET/POST Java 部分的 ボタン → → Script 再描画 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 43. デバックノウハウ 遷移後の画面が表示できないだろうか? URL1 (変わらず) URL1 GET/POST Java 部分的 ボタン → → Script 再描画 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 44. デバックノウハウ index.php?action=login_view_main_init ログイン画面表示 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 45. デバックノウハウ index.php?action=googlemap_view_main_init 何も表示しない ➡ Smarty error: unable to read resource: "block.html" 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 46. デバックノウハウ index.php?action=login_view_main_init 特別扱い webapp/components/common/Main.class.php if ($action_name == "login_view_main_init" && $block_id == 0) 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 47. デバックノウハウ index.php?action=googlelmap_view_main_init &_header=0 地図が選択されてません ➡ 地図が選択すれば 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 48. デバックノウハウ index.php?action=googlemap_view_main_init &_header=0&block_id=56 http://ohwada.yn150.jp/index.php?action=googlemap_view_main_init&_header=0&block_id=56 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 49. GoogleMap API 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 50. API V2 -> V3 1. より部品化が進んだ  バルーン (吹き出し)  V2: マーカーの1つの機能  V3: 独立した機能 イベントで結びつける 2. 無くなった機能  マーカーをまとめて消す 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 51. API 住所検索 初期のころは、 期待した結果が得られなかった。 今は、ほぼ期待とおり。 こういうサービスは、 公共機関がやって欲しいな。 東京大学 ジオコーディング実験 http://newspat.csis.u-tokyo.ac.jp/geocode/modules/geocode/index.php?content_id=1 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 52. API 利用許諾 1. 回数制限が厳しくなった  以前は、実質 制限なし  最近は、人気サイトでは制限に該当 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 53. GoogleMap 離れ Foursquare / Apple / Wikipedia OpenStreetMap への移行 2012年3月 米foursquare Google Mapsから 地図版Wikipedia に移行 http://internet.watch.impress.co.jp/docs/news/20120302_516130.html 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 54. OpenStreetMap 自由な地図を作る プロジェクト 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一
  • 55. OpenStreetMap 6月24日 横浜 勉強会 http://connpass.com/event/499/?disp_content=presentation 4月15日 「OpenStreetMap」 を作る人の会合で 地図編集の心得を学んできた http://internet.watch.impress.co.jp/docs/column/chizu/20120419_527533.html 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一