app.pyãšããå°ããªäžå¿éš
ã¯ããã«
ååã®èšäºã§ã¯ãDOLL.PKG Studio Consoleã®ã·ã¹ãã æŠèŠãã玹ä»ããŸããã
çæAIã«ããåµäœç°å¢ã¯ã以åãšã¯å€§ããå€åããŠããŸãã
ãã¿ã³ãæŒãã°ç»åãçæãããã
ããã ããèŠããšããšãŠãã·ã³ãã«ã«æããŸãã
ããããããŒã«ã«ãªç°å¢ã«ãããŠããã®è£åŽã§ã¯ãã©ã®ã¢ãã«ã䜿çšããã®ãããã©ããããã®æéããããã®ãããçŸåšã³ã³ãã¥ãŒã¿ãŒã¯ã©ã®ãããªç¶æ ãªã®ãããçæããäœåã¯ã©ãã«ä¿åãããŠããã®ããã»ã»ã»
ããŸããŸãªæ
å ±ãåããŠããŸãã
宿ããäžæã®äœåã ããèŠãã®ã§ã¯ãªãããã®äœåãçãŸããéçšã«ãç®ãåããã
ãããDOLL.PKG Studio Consoleãäœãå§ãããã£ããã§ããã
ä»åããã¯ãå®éã®ãœãŒã¹ã³ãŒããèŠãªããããã®å°ããªå¶äœç°å¢ãã©ã®ããã«æ§æãããŠããã®ãã玹ä»ããŸãã
æåã«åãäžããã®ã¯ãã·ã¹ãã å šäœã®äžå¿ãšãªã app.py ã§ãã
app.pyã¯å¶äœç°å¢ã®ãåžä»€å¡ã
ããã°ã©ã ãšãããšãè€éãªèšç®ãè¡ãå Žæãæ³åãããããããŸããã
ããããapp.pyã®åœ¹å²ã¯å°ãéããŸããapp.pyèªèº«ããã¹ãŠã®åŠçãæ åœããã®ã§ã¯ãããŸãããå¿ èŠãªæ å ±ããããããå°éã®åœ¹å²ãæã€ããã°ã©ã ãžäŸé Œãããã®çµæãå©çšè ãžå±ããããããapp.pyã®åœ¹å²ã§ãã
äŸãããªããæ ç»å¶äœã«ãããç£ç£ã®ãããªååšã§ãã
ç£ç£èªèº«ããã¹ãŠã®ã«ã¡ã©æäœãç·šéäœæ¥ãè¡ãããã§ã¯ãããŸãããããããã®å°éã¹ã¿ãããšé£æºããäžã€ã®äœåã宿ãžå°ããŸãã
DOLL.PKG Studio Consoleã«ãããŠãapp.pyã¯ãã®äžå¿ãšãªãååšã§ãã

æåã«è¡ããå¿ èŠãªéå ·ã®æºåã
app.pyã®åé ã«ã¯ã以äžã®èšè¿°ããããŸãã
from flask import (
Flask,
jsonify,
render_template,
send_file,
)ããã¯ãããã°ã©ã ã§äœ¿çšããæ©èœãæºåããŠããéšåã§ãã
äŸãããªãæçãå§ããåã«ãå
äžãéãçšæãããããªãã®ã§ãã
ãã®ããã°ã©ã ã§ã¯å¿
èŠãªéå
·ãæåã«èªã¿èŸŒãã§ããããšã§ããã®åŸã®åŠçãã·ã³ãã«ã«èšè¿°ã§ãã圢ã«ããŠããŸãã
ããã§ã¯ã4ã€ã®æ©èœãå©çšããããã«ããŠããŸãã
Flask
FlaskFlaskã¯ãPythonã§Webã¢ããªã±ãŒã·ã§ã³ãäœãããã®ä»çµã¿ã§ãã
ãã©ãŠã¶ããã¢ã¯ã»ã¹ãããæã«ãã©ã®ç»é¢ã衚瀺ããã®ãããã©ã®æ
å ±ãè¿ãã®ããã管çããŸãã
app.pyã§ã¯ã次ã®ããã«äœ¿çšãããŠããŸãã
app = Flask(__name__)ããã§ããã®Pythonãã¡ã€ã«ãäžå¿ã«Webã¢ããªã±ãŒã·ã§ã³ãäœããŸãããšãã宣èšãããŠããŸãããã®äžè¡ã«ãã£ãŠããã©ãŠã¶ããã¢ã¯ã»ã¹ã§ããä»çµã¿ã®åå°ãäœãããŸãã
建ç©ã§äŸãããªããåå°ã確ä¿ãã建ç©ã建ãŠãæºåãããæ®µéã§ãã
ç»é¢ã衚瀺ããä»çµã¿
render_templateããã¯ããã©ãŠã¶ã«è¡šç€ºããç»é¢ãèªã¿èŸŒãããã®æ©èœã§ãã
Pythonã®ããã°ã©ã ã¯ããã®ãŸãŸã§ã¯äººéãèŠãç»é¢ã«ã¯ãªããŸãããããã§HTMLãšããç»é¢ããŒã¿ãå©çšããŸããrender_templateã¯ãããã°ã©ã ã®äžçããšãå©çšè ãèŠãç»é¢ããã€ãªãæ©ã®ãããªåœ¹å²ãæã£ãŠããŸãã
äŸãã°ã
@app.route("/")
def index():
return render_template("index.html")ãšããåŠçããããŸãã
ããã§ã¯ã/ ïŒWebãµã€ãã®ãã«ãŒããã£ã¬ã¯ããªïŒãããããŒãžïŒãïŒãšããURLãžã¢ã¯ã»ã¹ãããå Žåã¯ãtemplates/index.html ã衚瀺ããŸããã€ãŸããPythonã§äœãããå éšåŠçãšã人éãæäœããç»é¢ãã€ãªã圹å²ãããŠããŸãã
APIïŒç°ãªããœãããŠã§ã¢ãããã°ã©ã å士ãã€ãªãæ¥ç¹ïŒãäœã
次ã¯ã
jsonifyã§ãã
å°ãé£ããæãããããããŸããããç°¡åã«èšãã°ãããã°ã©ã å éšã®æ å ±ããå¥ã®å Žæãžæž¡ãããã圢ã«å€æããæ©èœãã«ãªããŸãã
ã³ã³ãã¥ãŒã¿ãŒå éšã§ã¯ãããŸããŸãªæ å ±ãååšããŸãããããããã®æ å ±ããã®ãŸãŸç»é¢ãžæž¡ãããšã¯ã§ããŸãããããã§ãæ å ±ãæ±ºãããã圢åŒãžæŽããŠæž¡ããŸãããã®åœ¹å²ãæ ãã®ãjsonifyã§ãã
DOLL.PKG Studio Consoleã§ã¯ãã·ã¹ãã ç¶æ ãã€ãã³ãæ å ±ããã©ãŠã¶ãžæž¡ãéã«å©çšããŠããŸãã
app.pyã«ã¯ã次ã®åŠçããããŸãã
@app.route("/api/dashboard")
def api_dashboard():
"""V12 consolidated endpoint: telemetry and events in one request."""
return jsonify({
"system": build_system_data(),
"events": get_events(),
})ããã¯ãDOLL.PKG Studio Consoleã®äžå¿çãªéšåã®äžã€ã§ãã
ã·ã¹ãã æ
å ±ãã€ãã³ãæ
å ±ããŸãšãããã©ãŠã¶åŽãžæž¡ããŠããŸãã
ã³ã³ãã¥ãŒã¿ãŒå éšã§ã¯ã
CPU䜿çšç
ã¡ã¢ãªäœ¿çšé
GPUç¶æ
å¶äœç¶æ
ãªã©ãå€ãã®æ å ±ãååšããŠããŸãã
ãããããããããã®ãŸãŸç»é¢ãžæž¡ããŠãã人éã確èªã§ãã圢ã«ã¯ãªããŸãããbuild_system_data()ãšãã颿°ãåŒã³åºãããšã§ãçŸåšã®å¶äœç°å¢ã¯ã©ã®ãããªç¶æ ãªã®ãããšããæ å ±ãååŸããããã·ã¥ããŒãã§å©çšã§ããåœ¢ã«æŽããŠããŸãã
ãŸããget_events()ã¯ã·ã¹ãã ã®äžã§çºçããåºæ¥äºã管çãã圹å²ã§ããäŸãã°ãå¶äœç°å¢ã®å€åãåŠçå±¥æŽãªã©ãæéã®æµããèšé²ããããã«å©çšãããŸãã
jsonifyã¯ããã®ããã«è²ã
ååŸããæ
å ±ãæŽçããŠå±ãã翻蚳圹ã§ãã
app.pyããã¹ãŠãç¥ã£ãŠããã®ã§ã¯ãªããããããå°éã®åŠçãžä»»ããèšèšã«ããŠããŸãã
äœåã衚瀺ããsend_file
ä»åã®Studio Consoleã§ãåµäœéšåãšçŽæ¥é¢ä¿ããæ©èœããããŸãã
send_fileapp.pyã§ã¯ãç»åãã¡ã€ã«ããã©ãŠã¶ãžè¿ãåŠçã§å©çšãããŠããŸããããã¯ãä¿åãããŠãããã¡ã€ã«ããã©ãŠã¶ãžéãããã®æ©èœã§ãã
Studio Consoleã§ã¯ãå¶äœããç»åãªã©ã®ãã¡ã€ã«ã衚瀺ããããã«å©çšãããŸããåãªãç£èŠã·ã¹ãã ã§ã¯ãªããå¶äœãããã®ãèŠããããã®ç°å¢ã§ãããã®ã§ããã®æ©èœã¯éèŠãªåœ¹å²ãæã£ãŠããŸãã
äŸãã°ã
return send_file(
latest_artwork_path
)ãšãã圢ã§ãã
ããã¯ãä¿åãããŠããç»åãã¡ã€ã«ãããã©ãŠã¶ã§è¡šç€ºã§ããããã«æž¡ãããšããåŠçã§ãã
äžèŠãããšåçŽãªäžè¡ã§ãããå¶äœç°å¢ã«ãããŠã¯éèŠã§ãã
çæããäœåã¯ãä¿åãããŠããã ãã§ã¯æå³ããããŸããã
ã»å¿
èŠãªæã«ãã確èªã§ããããš
ã»å¶äœã®æµãã®äžã§äœåãžã¢ã¯ã»ã¹ã§ããããš
ãã®ããã®å°ããªæ©ãsend_fileã§ãã
ãã¹ãŠãäžã€ã«æžããªãçç±
app.pyãèŠããšãæå€ã«ãå€ãã®åŠçã¯ããã«ã¯ååšããŸããã
ã»ã·ã¹ãã æ
å ±ãäœãåŠç
ã»ã€ãã³ãã管çããåŠç
ã»äœåæ
å ±ãæ±ãåŠç
ã»etc
ãããã圹å²ããšã«åããããŠããŸãã
ããã¯ãé·ã䜿ãç¶ããããã®èšèšã§ããäžã€ã®å Žæã«ãã¹ãŠãæžã蟌ããšãæåã¯ç°¡åã§ããæé·ããæã«ç®¡çãé£ãããªããŸãã
åµäœã§ãåãã§ããäžæã®äœåã¯ããã£ã©ã¯ã¿ãŒãè²ãå ãæ§å³ãäžç芳ãããŸããŸãªèŠçŽ ãçµã¿åããã£ãŠå®æããŸãã
ããã°ã©ã ããŸããå°ããªåœ¹å²ãæã£ãéšåãéãŸããäžã€ã®ç°å¢ãäœã£ãŠããŸãã
次åäºå
次åã¯ãapp.pyããåŒã³åºãããŠããå éšã¢ãžã¥ãŒã«ã
monitor.system
ã«ã€ããŠè§£èª¬ããŸãã
ã³ã³ãã¥ãŒã¿ãŒå éšã®æ å ±ãã©ã®ããã«ååŸããStudio Consoleãžå±ããŠããã®ããæ®æ®µèŠãããšã®ã§ããªããæ©æ¢°ã®ç¶æ ãããã©ã®ããã«äœåå¶äœã®ç°å¢ãžåã蟌ãã§ããã®ãã
å®éã®ã³ãŒããèªã¿ãªãã玹ä»ããŸãã
â ïžãœãŒã¹ã³ãŒãå ¬éã«é¢ããæ³šæäºé
ä»åã®èšäºã§ã玹ä»ãã app.py ã®ãœãŒã¹ã³ãŒããå
±æããããŸãã
å
容ãšããŠã¯ãFlaskãå©çšããã·ã³ãã«ãªæ§æã§ã¯ãããŸãããå®éã«åäœãããªãã詊è¡é¯èª€ãéããDOLL.PKG Studio ConsoleãšããŠçµã¿äžãããã®ã§ãã
ãŸãã宿ãªè»¢èŒããã®ãŸãŸã®è»¢çšãé¿ããããããœãŒã¹ã³ãŒãã®å
¬éã«ã€ããŠã¯ææèšäºãšãããŠããã ããŸãã
æ¬èšäºã§ç޹ä»ããŠãããœãŒã¹ã³ãŒãã¯ãDOLL.PKG Studio Consoleã®éçºéçšãå
±æããçæAIãæŽ»çšããåµäœç°å¢ã¥ããã®äžäŸãšããŠå
¬éãããã®ã§ãã
å ¬éããŠããã³ãŒãã¯ããèªèº«ã®ç°å¢ã§åŠç¿ã»æ€èšŒãããç®çã§ãå©çšããã ããã°å¹žãã§ãã
â ïžæ¬ãœãŒã¹ã³ãŒãåäœã§ã¯ã·ã¹ãã ã¯åäœããŸããâ ïž
ããããããäºæ¿é¡ããŸãããªããæ¬ãœãŒã¹ã³ãŒããå©çšããããšã«ãã£ãŠçºçããã
ã·ã¹ãã äžã®åé¡
ããŒã¿æ¶å€±
ç°å¢èšå®ã«ããäžå ·å
ãã®ä»ã®æå®³
ã«ã€ããŠãäžåã®è²¬ä»»ãè² ããŸããã
ãŸããæ¬ãœãŒã¹ã³ãŒãã¯ç¹å®ã®ç°å¢ã§å¶äœã»æ€èšŒãããã®ã§ããããã¹ãŠã®ç°å¢ã§åäœããããšãä¿èšŒãããã®ã§ã¯ãããŸããããå©çšã«ãªãå Žåã¯ããèªèº«ã®ç°å¢ãç®çã«åãããŠå 容ã確èªããå¿ èŠã«å¿ããŠä¿®æ£ã»èª¿æŽãè¡ã£ãŠãã ããã
æ¬ãœãŒã¹ã³ãŒãã«é¢ããåå¥ã®å°å ¥æ¯æŽãç°å¢æ§ç¯æ¯æŽãåäœä¿èšŒãæè¡ãµããŒãã¯è¡ã£ãŠãããŸãããããã°ã©ã ã¯ã䜿çšããç°å¢ãã©ã€ãã©ãªã®éãã«ãã£ãŠåäœãå€åããå ŽåããããŸãã
ãã®ç¹ããçè§£ããã ããäžã§ãèªå·±è²¬ä»»ã®ããšãå©çšãã ããã
â ïž Notice Regarding Source Code Release
I am sharing the source code of app.py introduced in this article.
Although the implementation itself is a relatively simple structure using Flask, this code was developed as part of the DOLL.PKG Studio Console project through repeated testing, experimentation, and refinement in an actual working environment.
To prevent unauthorized redistribution or direct reuse without understanding the original purpose and structure, access to this source code is provided as part of a paid article.
The source code presented in this article is intended to share the development process of DOLL.PKG Studio Consoleand to provide an example of how a creative environment utilizing generative AI can be constructed.
You are welcome to use this code for your own learning, experimentation, and technical research within your personal environment.
â ïž Important Notice: This Source Code Alone Does Not Make the System Functional â ïž
Please understand that this source code cannot operate as a complete system by itself.
The following issues may occur depending on your environment, configuration, or usage conditions:
System-related problems
Data loss
Configuration errors
Other unexpected damages or issues
I assume no responsibility or liability for any problems or damages resulting from the use of this source code.
Furthermore, this source code was developed and tested in a specific environment. Therefore, I do not guarantee that it will operate correctly in all environments.
If you choose to use this source code, please review the contents carefully, adapt it to your own environment and objectives, and make any necessary modifications or adjustments.
Technical Support and Usage Disclaimer
Individual support for:
Installation assistance
Environment setup
Operational verification
Technical troubleshooting
is not provided for this source code.
Please note that program behavior may vary depending on differences in operating systems, installed libraries, versions, and configuration settings.
By using this source code, you acknowledge and accept these conditions and agree to use it at your own responsibility.
ããããå ã¯
Â¥ 1,000
ãã€ãå¿æŽé ããŸããŠããããšãããããŸããçŸåšãã¯ãªãšã€ã¿ãŒæŽ»åã®è³é調éãé²ããŠããŸãããæ¯æŽããã ãããšå€§å€å¬ããã§ãã
