Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

4,977 views

Published on

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

Published in: Technology
  • Be the first to comment

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

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

×