SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
Djangoのエントリポイントと
アプリケーションの仕組み
PyCon mini Sapporo 2015
2015/09/12
お前、誰よ?
◦tokibito
◦ Djangoフレームワークを9年ぐらい使ってます(2006年ごろ、0.95~)
◦ 東京在住(北海道には年1~2回ぐらい来てます)
◦ 株式会社ビープラウド勤務
◦ Pythonプロフェッショナルプログラミング 第2版 買ってね!
◦ イベント支援サイトConnpassをよろしく!
アジェンダ
1. はじめに
2. 前提、注意事項
3. Djangoフレームワークを使ったプロジェクトの構造
4. Djangoのエントリポイント
1. manage.py
2. wsgi.py
5. まとめ
はじめに
◦ Djangoフレームワークを使う場合
◦ マニュアルに従ってmanage.pyコマンドやwsgi.pyを利用する
◦ Django内部を知らなくても多くの機能を使える
◦ この発表内容を知らなくてもDjangoは使えます
◦ この発表内容を聞いて得られるもの
◦ Djangoの内部構造の知識を少し
知っておくと、Django用のモジュールを作るときに楽
(かもしれません)
今日はDjangoのエントリポイントや内部構造について話します
前提、注意事項
◦ 2015年9月時点での情報です
◦ Djangoのバージョンは1.8を前提としています
◦ 将来的にプロジェクトの構造が変わる可能性はあります
Djangoフレームワークを使っ
たプロジェクトの構造
Djangoフレームワークを使う場合、 django-admin コマンドを使って、プ
ロジェクトを作成します。
以下のようなディレクトリ構造でファイルが作られます:
プロジェクト管理スクリプト
プロジェクト設定ファイル
URL設定ファイル
WSGIアプリケーション定義を含むファイル
$ django-admin startproject mysite
Djangoのエントリポイント
管理コマンドを使う場合:
$ ./manage.py runserver
$ gunicorn mysite.wsgi
WSGIサーバーでアプリケーションを動かす場合(gunicornの例):
→ エントリポイントは manage.py
→ エントリポイントは wsgi.py
「エントリポイント」 … プログラムを実行するときの開始位置
※ WSGI: Web Server Gateway Interface
エントリポイントのソースコー
ドを見てみる
◦ manage.py と wsgi.py
◦ どちらもPythonのスクリプトなので、エディタで開けば読めます
manage.py
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
環境変数の設定(既にあれば何もしない)
sys.argvはコマンドライン引数。execute_from_command_line関数の実行
django.core.management
◦ django/core/managent/__init__.pyに実装がある
◦ https://github.com/django/django/blob/stable/1.8.x/django/core/m
anagement/__init__.py#L346
def execute_from_command_line(argv=None):
"""
A simple method that runs a ManagementUtility.
"""
utility = ManagementUtility(argv)
utility.execute() ManagementUtility.execute()メソッドを実行
詳細は省略します(時間が足りない)
execute_from_command_line
内部の処理
1. argparseモジュールを使ってコマンドライン引数をパース
2. settings.INSTALLED_APPSが有効か判定(ImproperlyConfigured発生を見る)
◦ django.conf.settings
◦ ここでDjangoの設定ファイルが読み込まれる
◦ 設定ファイルが不要なコマンドの場合は読み込まずにsettings.configure()で初期化
3. Djangoの初期化
◦ django.setup()
4. コマンドのオートコンプリート実行(環境変数が設定されていれば)
5. サブコマンドの実行
1. コマンド一覧の作成(<dict {app_name: [commands]}>)
1. django.core.management.commands以下のモジュールを取得
2. INSTALLED_APPSのアプリケーションの management.commands以下のモジュールを取得
2. 実行するコマンドの決定
3. コマンドクラスをロードしてクラスオブジェクト取得
4. コマンドクラスを実行
雑に説明すると、
1. プロジェクトの設定ファイルを読み込み
2. アプリケーションをロード
3. 実行したいコマンドを見つける
4. 実行
以上
django.conf.settings
◦ django.conf.LazySettingsクラスのインスタンス
◦ __getattr__が実装されている
◦ LazySettings._wrappedの属性をgetattrで返す
◦ 初回アクセス時に LazySettings._setup() で設定ファイルを読み込む
◦ LazySettings._setup()
◦ 環境変数DJANGO_SETTINGS_MODULEに指定されたモジュールをロードして、Settingsクラス
のインスタンスを作って_wrappedに代入
◦ DJANGO_SETTINGS_MODULEが空の場合はImproperlyConfigured例外が発生
◦ 設定ファイルにはデフォルト値(django.conf.global_settings)に対する差分だけ指定されて
いればよい
◦ LazySettings.configure()
◦ DJANGO_SETTINGS_MODULEを使わずに設定(UserSettingsHolder)オブジェクトを_wrappedに
代入
◦ キーワード引数でデフォルト値に上書きする設定項目を指定できる
◦ Djangoの設定ファイル(settings.py)の項目は、このオブジェクトを通して参照する
ImproperlyConfigured例外
◦ Djangoの設定に不備がある際に発生する例外
◦ 例: djangoのプロジェクト以外でdjangoの機能を使おうとするとき
>>> from django.forms import Form
>>> Form()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:¥work¥venv¥lib¥site-packages¥django¥forms¥forms.py", line 129, in __init__
self.label_suffix = label_suffix if label_suffix is not None else _(':')
File "C:¥work¥venv¥lib¥site-packages¥django¥utils¥translation¥__init__.py", line 84, in ugettext
return _trans.ugettext(message)
File "C:¥work¥venv¥lib¥site-packages¥django¥utils¥translation¥__init__.py", line 56, in __getattr__
if settings.USE_I18N:
File "C:¥work¥venv¥lib¥site-packages¥django¥conf¥__init__.py", line 48, in __getattr__
self._setup(name)
File "C:¥work¥venv¥lib¥site-packages¥django¥conf¥__init__.py", line 42, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured. You
must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before
accessing settings.
Djangoは設定をしないと動かない!
Tips: プロジェクトの設定項目
を参照する
◦ プロジェクトのsettings.pyに書いた設定を参照する場合
◦ × settings.pyをimportして読む(設定ファイルの切り替えに対応できない)
◦ ◯ django.conf.settingsを使う
# myproject/myproject/settings.py
SPAM_VALUE = 'egg'
>>> from django.conf import settings
>>> settings.SPAM_VALUE
'egg'
Tips: 設定ファイルの切り替え
◦ manage.pyコマンドの場合
◦ --settings オプションで設定モジュールを指定
◦ または、 DJANGO_SETTINGS_MODULE 環境変数
$ ./manage.py runserver --settings=myproject.debug_settings
◦ Djangoの各種機能を使うための準備
◦ ロギングの設定(configure_logging)
◦ settings.LOGGINGをロギングモジュールに反映
◦ INSTALLED_APPSに指定されたアプリケーションのロード
(django.apps.apps.populate)
◦ =importして内部でキャッシュ
django.setup()
Djangoはdjango.setup()を呼ばないと動かない!
Tips: Djangoのプロジェクトを
作らずにDjangoを使う
◦ settings._setup()を呼ぶかsettings.configure()を呼べば、Djangoプロジェクト
外での設定の不備は解消できる
◦ 設定後にdjango.setup()を呼ぶと、アプリケーションのロードなどが実行され
てDjangoを使う準備が完了する
>>> from django.conf import settings
>>> settings.configure()
>>> import django
>>> django.setup() # これでDjangoを使う準備が完了する
設定とsetup()をしたのでDjangoを使える!!!
django.apps.apps
◦ django.apps.appsは、django.apps.registry.Appsクラスのインスタンス
◦ django.apps.registry.Apps
◦ Djangoアプリケーションのロードとモデルクラスを管理するクラス
◦ Apps.populate()メソッド
◦ アプリケーションをロードし、アプリケーション内のモデルクラスをキャッシュする
◦ 各Djangoアプリケーションはdjango.apps.config.AppConfigクラスのインスタンスによって管理さ
れる
◦ django.apps.config.AppConfig
◦ DjangoアプリケーションのモジュールをAppConfig.moduleで保持している
◦ Djangoでは、AppConfig.labelでアプリケーションの一意性を確保している
◦ 同一のアプリケーションのモジュールでも、AppConfig.labelが別のAppConfigインスタンスを
用意すれば、別アプリケーションとして認識させられる
◦ django.appsモジュールはDjango1.7で追加された
◦ 1.6までは、django.db.models.loadingにありました
django.apps.registry.Apps.all_models
django.apps.registry.Apps.app_configs
図で説明すると、
django.apps.registry.Apps
AppConfig
label='admin'
AppConfig
label='myapp'
AppConfig
label='auth'
AppConfig
label='sessions'
User MyModelPermission
Tips: アプリケーションモジュール
やモデルクラスへアクセスする
◦ アプリケーション内で別のアプリケーション以下にあるモデルクラスを使い
たい場合など
◦ django.apps.appsを参照することで、モジュール名を固定せず、すべてのモ
デルクラスやアプリケーションモジュールへアクセスできる
# manage.py shell
>>> from django.apps import apps
>>> apps.get_app_configs() # プロジェクト内のAppConfigクラスを取得する
ValuesView(OrderedDict([('admin', <AdminConfig: admin>), ('auth', <AuthConfig:
auth>), ('contenttypes', <ContentTypesConfig: contenttypes>), ('sessions',
<SessionsConfig: sessions>), ('messages', <MessagesConfig: messages>),
('staticfiles', <StaticFilesConfig: staticfiles>), ('myapp', <AppConfig: myapp>)]))
>>> apps.get_models() # プロジェクト内のモデルクラスを取得する
[<class 'django.contrib.admin.models.LogEntry'>, <class
'django.contrib.auth.models.Permission'>, <class
'django.contrib.auth.models.Group'>, <class 'django.contrib.auth.models.User'>,
<class 'django.contrib.contenttypes.models.ContentType'>, <class
'django.contrib.sessions.models.Session'>, <class 'myapp.models.Spam'>]
内部の実装で使われている
テクニック
◦ モジュールの遅延ロード
◦ django.conf. LazySettingsなど
◦ メリット
◦ 起動が速い
◦ デメリット
◦ 仕組みが複雑
◦ 問題の発生も遅延する(シンタックスエラーなど)
◦ 文字列を元にしたモジュールのインポート
◦ django.apps.registry.AppsConfigなど
◦ メリット
◦ 実行時に読み込むモジュールを決定できる(遅延ロードできる)
◦ デメリット
◦ 静的解析に弱い(モジュール名が文字列なので追いかけられない)
◦ インスタンスのキャッシュ
◦ django.conf.settings._wrappedなど
◦ メリット
◦ ミドルウェアやファイルシステムなどを使わず手軽にキャッシュして高速化
◦ デメリット
◦ 使用メモリ増加
manage.pyについてまとめ
1. プロジェクトの設定ファイルを読み込み
1. django.conf.settings
2. アプリケーションをロード
1. django.setup()
1. django.apps.apps
3. 実行したいコマンドを見つける
4. 実行
次はwsgi.py
$ gunicorn myproject.wsgi
application = myproject.wsgi.application
gunicornを使ってwsgi.pyを動かす場合
内部ではインポートして"application"という名前の変数を参照して使っている
WSGIサーバーの役割
1. tcp/80でソケットを開いて待受け(listen)
2. Webブラウザなどのクライアントから接続
3. HTTPリクエストをクライアントから受信する(recv)
4. 受け取ったHTTPリクエストをパースしてヘッダ、bodyなどの情報に分解
1. 辞書オブジェクトに詰め込む(environ)
5. WSGIアプリケーションの実行
1. response = application(environ, start_response)
1. ここで実行されるapplicationがWSGIHandler.__call__(environ, start_response) .. Djangoの
場合
6. HTTPレスポンスをクライアントに送信(send)
1. コールバック(start_response)を通して受け取ったヘッダをクライアントに送信
2. returnで返却されたbodyをクライアントに送信
wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
application = get_wsgi_application()
環境変数の設定(既にあれば何もしない)
WSGIアプリケーションの取得
django.core.wsgi
import django
from django.core.handlers.wsgi import WSGIHandler
def get_wsgi_application():
django.setup()
return WSGIHandler()
WSGIHandler(WSGIアプリケーション)インスタンスの生成
Djangoの初期化
django.core.handlers.wsgi.
WSGIHandler内部の処理
◦ WSGIHandlerクラスはdjango.core.handlers.base.BaseHandlerを継承
◦ WSGIHandler.__call__(environ, start_response)
◦ WSGIアプリケーションとして実行可能なメソッド
◦ Djangoミドルウェアのロード
◦ リクエストオブジェクトの生成(django.core.handlers.wsgi.WSGIRequest)
◦ get_response(request)メソッドの呼び出し
◦ BaseHandler.get_response(request)
◦ リクエストミドルウェアの適用
◦ URLディスパッチ
◦ settings.ROOT_URLCONFを元にdjango.core.urlresolvers.RegexURLResolverインスタンス生成
◦ RegexURLResolver.resolve()で実行するViewを取得
◦ Viewミドルウェアの適用
◦ Viewを実行してレスポンスオブジェクトを取得
◦ response.render()メソッドがあれば呼び出し
◦ レスポンスミドルウェアの適用
◦ レスポンスオブジェクトを返す
雑に説明すると、
1. プロジェクトの設定ファイルを読み込み
2. アプリケーションをロード
3. リクエストオブジェクトを作成
4. 実行するViewを決定
5. View実行
6. レスポンスを返す
以上
リクエストオブジェクト
◦ django.http.request.HttpRequestクラスのインスタンス
◦ WSGIの場合は継承してWSGIRequestクラス(wsgi.inputなどのWSGI固有の対応など)
◦ HTTPリクエスト内容の抽象化
◦ WSGIのenviron辞書はPythonの辞書だが、抽象度は低い
◦ GET、POSTフィールドのデコード、分解やCOOKIEなどのヘッダのデコードなど
◦ リクエストの処理終了後に破棄される
◦ → requestオブジェクトにミドルウェア等で属性を追加しても問題ない
◦ 例
◦ request.sessions (SessionMiddlewareによって追加)
◦ request.user (AuthenticationMiddlewareによって追加)
◦ WSGIRequestの場合
◦ WSGIサーバーから渡されるenviron辞書を使って生成
URLディスパッチ
◦ リクエストされたURLから実行するViewを決定する仕組み
◦ django.core.urlresolvers.RegexURLResolver
◦ urls.pyの内容を元にして、URLとViewを正規表現でマッチさせるクラス
>>> from django.conf import settings
>>> from django.core.urlresolvers import RegexURLResolver
>>> resolver = RegexURLResolver(r'^/', settings.ROOT_URLCONF)
>>> resolver_match = resolver.resolve('/')
>>> resolver_match
ResolverMatch(func=mysite.views.index, args=(), kwargs={}, url_name=None,
app_name=None, namespaces=[])
>>> callback, callback_args, callback_kwargs = resolver_match callbackがView
resolveメソッドでURLにマッチした
ResolverMatchオブジェクトが返される
Viewの実行
◦ DjangoのViewとして使えるもの
◦ リクエストオブジェクトを引数に指定でき、レスポンスオブジェクトを返す関数またはメソッド
◦ Viewの実行は関数呼び出し
>>> from django.http import HttpRequest
>>> request = HttpRequest()
>>> callback(request, *callback_args, **callback_kwargs)
<django.http.response.HttpResponse object at 0x7fbc65349f98>
resolverで取得したcallback(View)の実行
Viewを呼ぶとResponseが返される
レスポンスオブジェクト
◦ django.http.response.HttpResponseクラスのインスタンス
◦ HttpResponseはsix.Iteratorを継承している
◦ HTTPレスポンス内容の抽象化
◦ WSGIアプリケーションのレスポンスとしてそのまま使える
◦ レスポンス文字列を返すための__iter__メソッドが実装されている
>>> response = callback(request)
>>> response
<django.http.response.HttpResponse object at 0x7f9bb5904ef0>
>>> b''.join(s for s in response)
b'Hello, world!'
Viewを実行して取得したレスポンスオブジェクトの評価
WSGIサーバー側では大体こんな感じで使われる
まとめ
◦ Djangoのエントリポイントはmanage.pyとwsgi.py
◦ Djangoを動かすには設定と準備が必要
◦ django.conf.settings.configure()
◦ django.setup()
◦ Djangoのアプリケーションとモデルは一箇所で管理されてるよ
◦ django.apps.apps (django.apps.registry.Apps)
◦ WSGIHandlerでリクエストを処理しているよ(WSGIの場合)
◦ リクエストオブジェクト生成
◦ URLディスパッチ
◦ View実行
◦ レスポンスオブジェクトを返す
参考
◦ http://d.hatena.ne.jp/nullpobug/20140301/1393660554
◦ https://docs.djangoproject.com/en/1.8/topics/settings/
◦ https://docs.djangoproject.com/en/1.8/ref/applications/
おわり。

Contenu connexe

Tendances

メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るTakeru Maehara
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
Gocon2017:Goのロギング周りの考察
Gocon2017:Goのロギング周りの考察Gocon2017:Goのロギング周りの考察
Gocon2017:Goのロギング周りの考察貴仁 大和屋
 
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)Takuya Kawabe
 
スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門Hisashi HATAKEYAMA
 
Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証Shinya Okano
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴
SQLアンチパターン - 開発者を待ち受ける25の落とし穴SQLアンチパターン - 開発者を待ち受ける25の落とし穴
SQLアンチパターン - 開発者を待ち受ける25の落とし穴Takuto Wada
 
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話Takuto Wada
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMPYusuke Kagata
 
JIRA / Confluence の 必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだJIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の 必須プラグインはこれだNarichika Kajihara
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?Teppei Sato
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話Yoshitaka Kawashima
 

Tendances (20)

メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
Gocon2017:Goのロギング周りの考察
Gocon2017:Goのロギング周りの考察Gocon2017:Goのロギング周りの考察
Gocon2017:Goのロギング周りの考察
 
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
 
スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴
SQLアンチパターン - 開発者を待ち受ける25の落とし穴SQLアンチパターン - 開発者を待ち受ける25の落とし穴
SQLアンチパターン - 開発者を待ち受ける25の落とし穴
 
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
JIRA / Confluence の 必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだJIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の 必須プラグインはこれだ
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
 

En vedette

Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介Shinya Okano
 
Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Hironori Sekine
 
Scaling Django with gevent
Scaling Django with geventScaling Django with gevent
Scaling Django with geventMahendra M
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplibShinya Okano
 
ちょっと真面目にPython&Django・基礎編
ちょっと真面目にPython&Django・基礎編ちょっと真面目にPython&Django・基礎編
ちょっと真面目にPython&Django・基礎編OMEGA (@equal_001)
 
データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831
 データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831 データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831
データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831Yusaku Kinoshita
 
Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法Ian Lewis
 
ビックデータとPythonではじめる野球の統計分析 #pyconjp
ビックデータとPythonではじめる野球の統計分析 #pyconjpビックデータとPythonではじめる野球の統計分析 #pyconjp
ビックデータとPythonではじめる野球の統計分析 #pyconjpShinichi Nakagawa
 
Python勉強会in 長野 オープニング
Python勉強会in 長野 オープニングPython勉強会in 長野 オープニング
Python勉強会in 長野 オープニングYuuki Nakajima
 
Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)Tadahiro Ishisaka
 
Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発Takahiro Kubo
 
Pythonistaデビュー #PyNyumon 2016/5/31
Pythonistaデビュー #PyNyumon 2016/5/31Pythonistaデビュー #PyNyumon 2016/5/31
Pythonistaデビュー #PyNyumon 2016/5/31Shinichi Nakagawa
 
DjangoでさくっとWeb アプリケーション開発をする話
DjangoでさくっとWeb アプリケーション開発をする話DjangoでさくっとWeb アプリケーション開発をする話
DjangoでさくっとWeb アプリケーション開発をする話Nakazawa Yuichi
 
Pythonを使った機械学習の学習
Pythonを使った機械学習の学習Pythonを使った機械学習の学習
Pythonを使った機械学習の学習Kimikazu Kato
 
「長野で語るStapyのビジョン」
「長野で語るStapyのビジョン」「長野で語るStapyのビジョン」
「長野で語るStapyのビジョン」Takeshi Akutsu
 
Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)Tadahiro Ishisaka
 

En vedette (18)

Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介
 
Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編-
 
Scaling Django with gevent
Scaling Django with geventScaling Django with gevent
Scaling Django with gevent
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplib
 
ちょっと真面目にPython&Django・基礎編
ちょっと真面目にPython&Django・基礎編ちょっと真面目にPython&Django・基礎編
ちょっと真面目にPython&Django・基礎編
 
データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831
 データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831 データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831
データ分析-の波乗り遅れた気がしてる人のための Python×データ分析の超基礎の基礎 v1.0-20160831
 
Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
 
Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法
 
ビックデータとPythonではじめる野球の統計分析 #pyconjp
ビックデータとPythonではじめる野球の統計分析 #pyconjpビックデータとPythonではじめる野球の統計分析 #pyconjp
ビックデータとPythonではじめる野球の統計分析 #pyconjp
 
Python勉強会in 長野 オープニング
Python勉強会in 長野 オープニングPython勉強会in 長野 オープニング
Python勉強会in 長野 オープニング
 
Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)
 
Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発
 
Pythonistaデビュー #PyNyumon 2016/5/31
Pythonistaデビュー #PyNyumon 2016/5/31Pythonistaデビュー #PyNyumon 2016/5/31
Pythonistaデビュー #PyNyumon 2016/5/31
 
WSGI, Django, Gunicorn
WSGI, Django, GunicornWSGI, Django, Gunicorn
WSGI, Django, Gunicorn
 
DjangoでさくっとWeb アプリケーション開発をする話
DjangoでさくっとWeb アプリケーション開発をする話DjangoでさくっとWeb アプリケーション開発をする話
DjangoでさくっとWeb アプリケーション開発をする話
 
Pythonを使った機械学習の学習
Pythonを使った機械学習の学習Pythonを使った機械学習の学習
Pythonを使った機械学習の学習
 
「長野で語るStapyのビジョン」
「長野で語るStapyのビジョン」「長野で語るStapyのビジョン」
「長野で語るStapyのビジョン」
 
Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)
 

Similaire à Djangoのエントリポイントとアプリケーションの仕組み

Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようKenji NAKAGAKI
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
How to django at first
How to django at firstHow to django at first
How to django at firstMaito Kuwahara
 
はてなのNagios - モニカジ#3
はてなのNagios - モニカジ#3はてなのNagios - モニカジ#3
はてなのNagios - モニカジ#3Shoichi Masuhara
 
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016Takayuki Shimizukawa
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門kashew_nuts
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeomantomo_masakura
 
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようDjango ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようTakayuki Shimizukawa
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介Shinya Okano
 
とある帽子の大蛇料理Ⅱ
とある帽子の大蛇料理Ⅱとある帽子の大蛇料理Ⅱ
とある帽子の大蛇料理ⅡMasami Ichikawa
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Takako Miyagawa
 
Python札幌201406
Python札幌201406Python札幌201406
Python札幌201406Shinya Okano
 
Gcpug begginers #1LT startup scriptとshutdown script
Gcpug begginers #1LT startup scriptとshutdown scriptGcpug begginers #1LT startup scriptとshutdown script
Gcpug begginers #1LT startup scriptとshutdown scripttsukasa tamaru
 
Jtf13 ossジョブ管理システムによる運用自動化事例
Jtf13 ossジョブ管理システムによる運用自動化事例 Jtf13 ossジョブ管理システムによる運用自動化事例
Jtf13 ossジョブ管理システムによる運用自動化事例 OSSラボ株式会社
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggugkimukou_26 Kimukou
 
5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方Yuki Takahashi
 

Similaire à Djangoのエントリポイントとアプリケーションの仕組み (20)

Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
How to django at first
How to django at firstHow to django at first
How to django at first
 
210630 python
210630 python210630 python
210630 python
 
はてなのNagios - モニカジ#3
はてなのNagios - モニカジ#3はてなのNagios - モニカジ#3
はてなのNagios - モニカジ#3
 
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
 
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようDjango ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介
 
RgGen ご紹介
RgGen ご紹介RgGen ご紹介
RgGen ご紹介
 
とある帽子の大蛇料理Ⅱ
とある帽子の大蛇料理Ⅱとある帽子の大蛇料理Ⅱ
とある帽子の大蛇料理Ⅱ
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
0621 ndk game
0621 ndk game0621 ndk game
0621 ndk game
 
Python札幌201406
Python札幌201406Python札幌201406
Python札幌201406
 
AndroidでDIxAOP
AndroidでDIxAOPAndroidでDIxAOP
AndroidでDIxAOP
 
Gcpug begginers #1LT startup scriptとshutdown script
Gcpug begginers #1LT startup scriptとshutdown scriptGcpug begginers #1LT startup scriptとshutdown script
Gcpug begginers #1LT startup scriptとshutdown script
 
Jtf13 ossジョブ管理システムによる運用自動化事例
Jtf13 ossジョブ管理システムによる運用自動化事例 Jtf13 ossジョブ管理システムによる運用自動化事例
Jtf13 ossジョブ管理システムによる運用自動化事例
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
 
5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方
 

Plus de Shinya Okano

Djangoエンジニアの観点から見たHue
Djangoエンジニアの観点から見たHueDjangoエンジニアの観点から見たHue
Djangoエンジニアの観点から見たHueShinya Okano
 
Python入門 コードリーディング - PyConJP2016
Python入門 コードリーディング - PyConJP2016Python入門 コードリーディング - PyConJP2016
Python入門 コードリーディング - PyConJP2016Shinya Okano
 
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道Shinya Okano
 
Hadoopとその周辺の紹介
Hadoopとその周辺の紹介Hadoopとその周辺の紹介
Hadoopとその周辺の紹介Shinya Okano
 
Delphi ideを使わない開発スタイルの紹介
Delphi ideを使わない開発スタイルの紹介Delphi ideを使わない開発スタイルの紹介
Delphi ideを使わない開発スタイルの紹介Shinya Okano
 
2011.06.01 和歌山高専
2011.06.01 和歌山高専2011.06.01 和歌山高専
2011.06.01 和歌山高専Shinya Okano
 
電子書籍の話
電子書籍の話電子書籍の話
電子書籍の話Shinya Okano
 
写真共有アプリのバックエンドサーバー
写真共有アプリのバックエンドサーバー写真共有アプリのバックエンドサーバー
写真共有アプリのバックエンドサーバーShinya Okano
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17Shinya Okano
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用Shinya Okano
 
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジmixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジShinya Okano
 

Plus de Shinya Okano (12)

Djangoエンジニアの観点から見たHue
Djangoエンジニアの観点から見たHueDjangoエンジニアの観点から見たHue
Djangoエンジニアの観点から見たHue
 
Python入門 コードリーディング - PyConJP2016
Python入門 コードリーディング - PyConJP2016Python入門 コードリーディング - PyConJP2016
Python入門 コードリーディング - PyConJP2016
 
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道
 
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』運用にあたっての課題へのチャレンジ
 

Dernier

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成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...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Dernier (8)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成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...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

Djangoのエントリポイントとアプリケーションの仕組み