SlideShare a Scribd company logo
1 of 34
Download to read offline
Djangoエンジニアの
観点から見たHue
Hue meetup 2017/9/20
岡野 真也 (@tokibito)
お前誰よ?
岡野真也 (@tokibito)
受託開発(主にwebアプリ
Python&Djangoを10年ぐらい使ってます
株式会社オープンコレクター
http://www.open-c.jp/
お仕事あればご相談ください
2
この場で話すきっかけ
3
C社のSさんに声を
かけられました
4
私とHue
5
私とHue
数年前に検証がてら少しさわった程度
CDHで構築したHadoop環境は使ったことある
けども...
Djangoで作られてるらしい
コードもすこし読んでた
6
HueとDjango
7
HueとDjango
HueはDjangoフレームワークが採用されてる
どのように使われているか
管理画面的なWebUIを作るのに使われてる
8
管理画面でのDjango採用例
OpenStack Horizon
FreeNAS
9
Djangoってどういうもの?
10
Djangoってどういうもの?
OSS (BSDライセンス)
Python言語
フルスタック(全部入り)のWebフレームワーク
アプリケーションフレームワーク
認証
DBアクセス
テンプレートエンジン
依存モジュールが少ない
11
お題
「Djangoユーザーから見て
Hueの実装どうよ?」
12
ざっとコード読みました
https://github.com/cloudera/hue
13
読んだ感想
コード量とても多い
ざっと見た感じだと構造よくわからん
Djangoバージョンちょっと古い
ビルドの仕組みは興味深い
単一アプリケーションにビルドすることが少な
いので貴重な情報
全体的に
Djangoをうまく使っている(appの仕組みとか)
Python以外のコードやスクリプトが多い 14
構造を知る方法は..?
15
開発方法から切り込む
16
ドキュメントを読もう
17
ドキュメントどこだろ...
18
開発に関する情報
https://github.com/cloudera/hue/blob/master/doc
s/sdk/sdk.md
とりあえずリポジトリ
19
ビルドしてみる
20
ビルドしてみる
Cloudera QuickStartVMでやってみた
CentOSの手順のとおり
make apps
めっちゃ時間かかる
すんなり動いた!
21
ビルドで生成されたもの
build
├── env # Pythonのvirtualenv
│   ├── bin
│   ├── include
│   ├── lib
│   ├── lib64 -> lib
│   └── stamp
└── static # 静的ファイル
22
hueコマンドツール
./build/env/bin/hue
サブコマンドたくさん
runserver で開発サーバー起動
Djangoの管理コマンド由来
pkg_resoucesを使っててPythonicでよいですね
23
アプリを作ってみる
sdkのドキュメントに手順がある
1. 専用コマンドでアプリの雛形を作る
./build/env/bin/hue create_desktop_app myapp
2. 専用コマンドでアプリを登録する
./build/env/bin/python tools/app_reg/app_reg.py -
-install myapp --relative-paths
ここでDBテーブルが作られたり静的ファイルの
ビルドが走ったり
ドキュメントのソースコードそのままだとエラー
デバッグにはPythonの知識必須
24
sdkドキュメントにあった
calculatorの例
25
DBを使った例
26
画面の構造
カスタムアプリの画面はJavaScriptにてロードされて
埋め込まれる。
Pythonで作らずに外部アプリを埋め込むことも可能
27
パッケージ構造
Pythonのパッケージ構造
Djangoのアプリケーションでよくある構造
28
myapp/ # パッケージディレクトリ
├── Makefile
├── setup.py # Python
└── src
├── myapp # Djangoのアプリケーション
│   ├── forms.py # フォーム生成のクラスを書く
│   ├── __init__.py
│   ├── models.py # モデルクラスを書く
│   ├── settings.py # 設定項目
│   ├── static # 静的ファイルを格納
│   │   └── myapp
│   │   ├── art
│   │   ├── css
│   │   ├── help
│   │   └── js
│   ├── templates # テンプレートファイルを格納
│   │   ├── index.mako
│   │   └── shared_components.mako
│   ├── urls.py # URLルーティング定義を書く
│   └── views.py # View(アプリケーションの処理)を書く
└── myapp.egg-info # パッケージ関連データ 29
アプリを作ってみた感想(1)
Pythonの一般的なツールスタックの知識でいける
virtualenv
setuptools
Djangoの知識があると、DjangoのAPIは違和感な
く使える(ちょっとバージョンが古いけど)
テンプレートエンジンはデフォルトはmako
Djangoテンプレートも使えるらしい
30
アプリを作ってみた感想(2)
各種コンポーネントのAPIはソースコードを読まな
いと使い方はわからない
埋め込みのアプリにするならJavaScriptもりもり
31
まとめ
32
HueでどのようにDjangoを使
ってるのか
アプリケーションの構造、仕組みはDjangoそのま
ま
コマンドツールやテンプレートのローディングも
Djangoフレームワーク由来
HueはDjangoを使って作ったプロジェクト
Djangoの機能で可能で、独自のビルド方法により
配布物を生成できる
33
開発はPythonやDjangoの
知識と気合が必要
34

More Related Content

What's hot

ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
Yosuke Furukawa
 
映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010
Hiroh Satoh
 
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and SpockJJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
Nobuhiro Sue
 
Go言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springGo言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 spring
Takuya Ueda
 

What's hot (20)

Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
 
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
 
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
 
Django 1.9
Django 1.9Django 1.9
Django 1.9
 
Django最速デバッグ指南 PyConAPAC 2013
Django最速デバッグ指南 PyConAPAC 2013Django最速デバッグ指南 PyConAPAC 2013
Django最速デバッグ指南 PyConAPAC 2013
 
GAE/GoでWebアプリ開発入門
GAE/GoでWebアプリ開発入門GAE/GoでWebアプリ開発入門
GAE/GoでWebアプリ開発入門
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
 
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
 
今日から始める Go言語 と appengine
今日から始める Go言語 と appengine今日から始める Go言語 と appengine
今日から始める Go言語 と appengine
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp Codereading
 
映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010
 
What makes Geb groovy?
What makes Geb groovy?What makes Geb groovy?
What makes Geb groovy?
 
Django 1.5 における効果的な MTV 設計 & ネイティブApp
Django 1.5 における効果的な MTV 設計 & ネイティブAppDjango 1.5 における効果的な MTV 設計 & ネイティブApp
Django 1.5 における効果的な MTV 設計 & ネイティブApp
 
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and SpockJJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
 
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
 
Go1.8 for Google App Engine
Go1.8 for Google App EngineGo1.8 for Google App Engine
Go1.8 for Google App Engine
 
Go言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springGo言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 spring
 
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
 

Similar to Djangoエンジニアの観点から見たHue

Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
Kenji NAKAGAKI
 
契約プログラミング
契約プログラミング契約プログラミング
契約プログラミング
Oda Shinsuke
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
Yohei Oda
 
FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?
Masakazu Muraoka
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
Teruo Adachi
 

Similar to Djangoエンジニアの観点から見たHue (20)

Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
 
SnapDishの事例
SnapDishの事例SnapDishの事例
SnapDishの事例
 
YYPHP #13 初めてのコードレビュー
YYPHP #13 初めてのコードレビューYYPHP #13 初めてのコードレビュー
YYPHP #13 初めてのコードレビュー
 
DroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for AndroidDroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for Android
 
粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法
 
ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩
 
契約プログラミング
契約プログラミング契約プログラミング
契約プログラミング
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
 
Leapmotionとp5.js:DEMOと解説
Leapmotionとp5.js:DEMOと解説Leapmotionとp5.js:DEMOと解説
Leapmotionとp5.js:DEMOと解説
 
2015/10/17 第10回G-Study発表資料-あの日見たgit_hubなstarを君達はまだ知らない。
2015/10/17 第10回G-Study発表資料-あの日見たgit_hubなstarを君達はまだ知らない。2015/10/17 第10回G-Study発表資料-あの日見たgit_hubなstarを君達はまだ知らない。
2015/10/17 第10回G-Study発表資料-あの日見たgit_hubなstarを君達はまだ知らない。
 
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室
 
最近の実装方針について
最近の実装方針について最近の実装方針について
最近の実装方針について
 
Start PWA from vuejs+github pages
Start PWA from vuejs+github pagesStart PWA from vuejs+github pages
Start PWA from vuejs+github pages
 
Androidの新ビルドシステム
Androidの新ビルドシステムAndroidの新ビルドシステム
Androidの新ビルドシステム
 
FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
2015/08/08 第8回G-Study発表資料-部屋と自宅サーバと私
2015/08/08 第8回G-Study発表資料-部屋と自宅サーバと私2015/08/08 第8回G-Study発表資料-部屋と自宅サーバと私
2015/08/08 第8回G-Study発表資料-部屋と自宅サーバと私
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
 
Gitoriousをubuntu 10.04 LTSへインストール
Gitoriousをubuntu 10.04 LTSへインストールGitoriousをubuntu 10.04 LTSへインストール
Gitoriousをubuntu 10.04 LTSへインストール
 
Goでwebアプリを開発してみよう
Goでwebアプリを開発してみようGoでwebアプリを開発してみよう
Goでwebアプリを開発してみよう
 

More from Shinya Okano

Hadoopとその周辺の紹介
Hadoopとその周辺の紹介Hadoopとその周辺の紹介
Hadoopとその周辺の紹介
Shinya Okano
 
Delphi ideを使わない開発スタイルの紹介
Delphi ideを使わない開発スタイルの紹介Delphi ideを使わない開発スタイルの紹介
Delphi ideを使わない開発スタイルの紹介
Shinya Okano
 
電子書籍の話
電子書籍の話電子書籍の話
電子書籍の話
Shinya Okano
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17
Shinya Okano
 
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジmixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
Shinya Okano
 

More from Shinya Okano (11)

Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplib
 
Python入門 コードリーディング - PyConJP2016
Python入門 コードリーディング - PyConJP2016Python入門 コードリーディング - PyConJP2016
Python入門 コードリーディング - PyConJP2016
 
Spring4Dの紹介
Spring4Dの紹介Spring4Dの紹介
Spring4Dの紹介
 
Hadoopとその周辺の紹介
Hadoopとその周辺の紹介Hadoopとその周辺の紹介
Hadoopとその周辺の紹介
 
Delphi ideを使わない開発スタイルの紹介
Delphi ideを使わない開発スタイルの紹介Delphi ideを使わない開発スタイルの紹介
Delphi ideを使わない開発スタイルの紹介
 
2011.06.01 和歌山高専
2011.06.01 和歌山高専2011.06.01 和歌山高専
2011.06.01 和歌山高専
 
電子書籍の話
電子書籍の話電子書籍の話
電子書籍の話
 
写真共有アプリのバックエンドサーバー
写真共有アプリのバックエンドサーバー写真共有アプリのバックエンドサーバー
写真共有アプリのバックエンドサーバー
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
 
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジmixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
 

Recently uploaded

Recently uploaded (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

Djangoエンジニアの観点から見たHue