ä»ãŸã§Pythonã«é¢ããŠããŸããŸãªããšãåŠãã§ããã®ã§ãç°¡åãªããã°ã©ã ãã¢ããªã±ãŒã·ã§ã³ã¯äœãããšãã§ããããã«ãªã£ããšæããŸããä»åã¯ããããé åžããæ¹æ³ã«ã€ããŠæ±ããŸãã
Pythonããã°ã©ã ã®å®è¡æ¹åŒ
Pythonã®ããã°ã©ã ã®é åžæ¹åŒã®èª¬æã®åã«ããŸãã¯ã³ã³ãã€ã©ãšã€ã³ã¿ããªã¿ã®éãã«ã€ããŠç¥ã£ãŠãããå¿ èŠããããŸãã
æ¬é£èŒã®åé ã«ãèšããŸããããã³ã³ãã¥ãŒã¿ãçè§£ã§ããã®ã¯çªãè©°ãããšã0ãš1ã ãã§ãããã®ãããããã°ã©ã ãå®è¡ããã«ã¯ãããã°ã©ãã³ã°èšèªã§æžãããããã¹ãã®ããã°ã©ã ãã0ãš1ã«å€æããå¿ èŠããããŸãããã®ããæ¹ã«ã¯2ã€ãããã²ãšã€ã¯ã³ã³ãã€ã©ã䜿ããã®ã§ãããã²ãšã€ã¯ã€ã³ã¿ããªã¿ã䜿ããã®ã§ãã
以äžã«äž¡è ã®éãã«ã€ããŠèšèŒããŸãã
ãŸããã³ã³ãã€ã©ã䜿ãå Žåã§ãããããã¯ãããã¹ãã®ããã°ã©ã ããŸã0ã1ã®ãã€ããªãã¡ã€ã«ã«å€æãããã®ãã¡ã€ã«ãå®è¡ããããšããåãæ¹ãããŸãããŸãæåã«å®å šã«å€æãããã®ããšã§ãããå®è¡ãããšãã圢ã§ãã
äžæ¹ãã€ã³ã¿ããªã¿åã¯ã³ã³ãã€ã©ã®ããã«å ã«å€æããŠããŸãã®ã§ã¯ãªããããã°ã©ã ã®å®è¡æã«ãããã¹ãã§æžãããããã°ã©ã ãéœåºŠ0ã1ã«å€æããªããå®è¡ããããšããåãæ¹ãããŸããã€ãŸãäžæ°ã«å€æããŠããŸãã®ã§ã¯ãªããå®è¡ããªããä»å¿ èŠãªç®æã0ã1ã«å€æããªããåããŠããŸããå³ã«ããããã«ãPythonã¯ã€ã³ã¿ããªã¿åã®ããã°ã©ãã³ã°èšèªã§ãã
ããã°ã©ã ã®é åžãšå®è¡æ¹æ³
ããŠãã€ã³ã¿ããªã¿åã®ããã°ã©ã ãå®è¡ããã«ã¯ãéœåºŠ0ã1ã«å€æãããå¿ èŠãããã®ã§ãããããã¯ã€ãŸããããã°ã©ã ã®å®è¡ã«ã¯ããã°ã©ã ãã¡ã€ã«ã®ã»ãã«ã0ã1ã«å€æããã€ã³ã¿ããªã¿ããå¿ èŠãšããããšã§ãã以äžã®å³ãèŠãŠãã ããã
ããPythonã¹ã¯ãªãã(ããã°ã©ã )ãé åžããéããã®ã¹ã¯ãªãããå®è¡ã§ããã€ã³ã¿ããªã¿ããããã·ã³ã ãšããã®ãã·ã³ãæã€ã€ã³ã¿ããªã¿ã§ã¹ã¯ãªãããè§£éããŠå®è¡ããããšãã§ããŸãããã ãã€ã³ã¿ããªã¿ãèŒã£ãŠããªããã·ã³ã§ã¯ã¹ã¯ãªããã¯è§£éããããšãã§ããŸããããã®å Žåãããã°ã©ã ã§ã¯ãªãåãªãããã¹ãã«ãããªãã®ã§ãåœç¶ãªããå®è¡ããããšã¯ã§ããŸããã
èŠããã«ãPythonã®ããã°ã©ã ãã¹ã¯ãªãããšããŠé ãéã«ã¯ããã®Pythonã®ããã°ã©ã ãåããã«ã¯Pythonãã€ã³ã¹ããŒã«ããŠãããŠãã ãããããšæé»çã«èšãããŠãããšãããšããããšã§ãã
次ã«ã³ã³ãã€ã©åèšèªã§äœãããããã°ã©ã ã®é åžæ¹æ³ã§ãããããã¯ãã£ãšç°¡åã§ãã以äžã®å³ãèŠãŠãã ããã
ãŸããé åžãããããã°ã©ã ã¯ãé ãããæç¹ã§ãã§ã«ãã€ããª(0ã1圢åŒã®ãã¡ã€ã«)ã«ãªã£ãŠããŸãããã®ãããåºæ¬çã«é åžãããããã°ã©ã ã¯ãã®ãã€ããªãã¡ã€ã«ãåãããOSã§ããã°ãã€ã³ã¿ããªã¿ããªããŠãåããããšãã§ããŸããã€ãŸããOSããæ£ãããã°ãã©ã®ãã·ã³ã§ãåããããšãã§ããããã§ã(æ£ç¢ºã«èšããšããŒããŠã§ã¢ã«ãäŸåããŸãããçµã¿èŸŒã¿ãªã©ã§ãªããã°æ®éã¯æ°ã«ãªããªãã§ã)ã
ãªããJavaã¯JVM(Java Virtual Machine)ãããããå°ãç¹æ®ã§ãããå°ãªããšãã€ã³ã¿ããªã¿åãšã¯èšãããŸããããããŠèšãã®ã§ããã°ãJavaå®è¡ç°å¢ã¯å¿ ãããããšããåæããããŠã³ã³ãã€ã©åã«åé¡ãããæ°ãããŸãã
Python Scriptã®ãã€ããªå
ãããŸã§ã®èª¬æãèªãã ããPythonã®ããã°ã©ã ãã©ã®ããã«é åžããã°èª°ã§ã䜿ããããã«ãªããããããŸãããããããã§ããã¹ã¯ãªãããããã€ããªåãããŠããé åžããã°ããã®ã§ãããã®ã€ã¡ãŒãžå³ã以äžã«èšèŒããŸãã
Pythonã®ã¹ã¯ãªããããã€ããªåãããšãPythonã€ã³ã¿ããªã¿ãã€ã³ã¹ããŒã«ããŠããªããã·ã³ã§ãããã°ã©ã ãå®è¡å¯èœã«ãªããŸãã
ãã€ããªåãè¡ãããŒã«ã¯ããã®ãã€ããªã®å¯Ÿè±¡OSããšã«ãããWindowsã®å Žåã¯py2exeãªã©ã䜿ããMacãªã©ã®å Žåã¯py2appã䜿ããŸãããã以å€ã«ããã€ããªåã®ããŒã«ã«ã¯ãããããããŸãã®ã§ãèªåã®å¥œããªãã®ã䜿ã£ãŠããã ããã°ãšæããŸãã
ããŒã«ã®ã€ã³ã¹ããŒã«ã®æºå
ä»åã¯py2appãMacã«ãpy2exeãWindowsã«ã€ã³ã¹ããŒã«ããŸãããã®ã€ã³ã¹ããŒã«äœæ¥ã«ãpipããšåŒã°ããPythonã®ããã±ãŒãžç®¡çããŒã«ãå©çšããã®ã§ããŸãã¯ããã«pipã®æºåãããŸãããªããä»åã¯Windowsã§ã¯å©çšããªãã®ã§ãWindowsã®äººã¯èªã¿é£ã°ããŠããã ããŠããŸããŸããããã ãpipã®äœ¿ãæ¹ã¯ç¥ã£ãŠãããŠããã ããã»ããããã§ãã
pipã®ã€ã³ã¹ããŒã«åã«ãäžå¿ãã§ã«pipãå ¥ã£ãŠããªãã確èªããŸãã
% pip --version
pip 1.5.6 from /Library/Frameworks/Python.framework/Versions/2.7/lib/pyth on2.7/site-packages (python 2.7)
ãã§ã«å ¥ã£ãŠããã°äžèšã®ããã«pipã®ããŒãžã§ã³ã衚瀺ãããã¯ãã§ãããã®å Žåã¯æ¹ããŠã€ã³ã¹ããŒã«ãããå¿ èŠã¯ãããŸããããšã©ãŒãåºãã°ããŸã ã€ã³ã¹ããŒã«ãããŠããªããã®ãšæãããŸã(ãããã¯ãã¹ãéã£ãŠããªãã)ã
pipã®ã€ã³ã¹ããŒã«ã¯æè¿éåžžã«ç°¡åã«ãªã£ãŠãããget-pip.pyãšããããã°ã©ã ãããŠã³ããŒãããŠããŠããããå®è¡ããã ãã«ãªã£ãããã§ããããŠã³ããŒããªã³ã¯ã¯ããã€ãããããã§ããã以äžã®ãã®ãæåãªããã§ãããªã³ã¯åããªã©ãããŠããã調ã¹ãŠãå¥ã®ç®æããããŠã³ããŒãããŠãã ããã
https://bootstrap.pypa.io/get-pip.py
ãããããŠã³ããŒãããPythonã§å®è¡ããŸãã
python get-pip.py
ããã§pipã®ã€ã³ã¹ããŒã«ã¯å®äºã§ãã
Macã¢ããªã±ãŒã·ã§ã³ã®ãã€ããªå
pipãã€ã³ã¹ããŒã«ããã®ã§ãpy2appãMacã«ã€ã³ã¹ããŒã«ããŸãã
ãã®åã«ãä»åãã€ããªåãããµã³ãã«ããã°ã©ã ãäœæããŠãããŸãã以åã話ããTkinterã䜿ã£ãGUIã®ããã°ã©ã ã§ããããã°ã©ã ã®çްãã話ã¯ä»åã¯å²æããŸãããã¡ã€ã«åã¯myapp.pyãšããŠããŸãã
import Tkinter
counter = 0
font = ("Helevetica", 32, "bold")
button = Tkinter.Button(font=font, text=str(counter))
def clicked():
global counter, button
counter = counter + 1
button.config(text=str(counter))
button.config(command=clicked)
button.pack()
button.mainloop()
ããŠããã®ããã°ã©ã ãèµ·åããã«ã¯ã¿ãŒããã«ãéããŠã
% python myapp.py
ãªã©ãšããããã«pythonã³ãã³ãã§ããã°ã©ã ã®ãã¡ã€ã«ãåŒã³åºãã®ã§ããããããšä»¥äžã®ãããªã¢ããªãèµ·ã¡ããããŸãã
éã«èšãã°pythonã³ãã³ããã€ã³ã¹ããŒã«ãããŠããªããšèµ·åããããšãã§ããŸããããã®ããã°ã©ã ããã€ããªåããŠã¿ãŸãã
ãŸãã¯py2appã®ã€ã³ã¹ããŒã«ã§ããããã«ã¯å ã»ã©ã®pipãå©çšããŸããLinuxã®ããã±ãŒãžç®¡çããŒã«ãšãã䌌ãäœ¿ãæ¹ã§ããã
% sudo pip install -U py2app
Password:
Requirement already up-to-date: py2app in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/py2app-0.9-py2.7.egg
...
Successfully installed modulegraph
Cleaning up...
%
ã€ã³ã¹ããŒã«ã§ããã®ã§ãããããpy2appã䜿ã£ããã€ããªåãããŸãããã€ããªåã®æµãã¯ã
- ãã€ããªåããããã®èšå®ãã¡ã€ã«setup.pyã®ãã³ãã¬ãŒããäœæ
- setup.pyãç·šé
- setup.pyãå®è¡
ãšãªããŸãã
é ã«èŠãŠãããŸãããããŸããã³ãã¬ãŒãã®äœæã§ãããããã¯ä»¥äžã®ããã«è¡ããŸãã
% py2applet --make-setup myapp.py
Wrote setup.py
ãªãã·ã§ã³ã§setupãäœãããšãšããã®å¯Ÿè±¡ãšãªãããã°ã©ã ãæå®ããŠããŸãããããå®è¡ãããšmyappããã€ããªåããããã®èšå®ãã¡ã€ã«ã§ããsetup.pyãäœæãããŠããã¯ãã§ãããã®äžèº«ãèŠãŠã¿ãŸãã
"""
This is a setup.py script generated by py2applet
Usage:
python setup.py py2app
"""
from setuptools import setup
APP = ['myapp.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
ãããå¿ èŠã«å¿ããŠç·šéããŸããç·šéã®è©³çްã¯py2appã®ããŒãžãªã©ã§ç¢ºèªããŠãã ããã
ä»åã¯ç·šéãªãã®ããã©ã«ãã®ãŸãŸã§ãã€ããªåããããšæããŸãããã€ããªåããã«ã¯ãã®setup.pyãå®è¡ããŸãã
% python setup.py py2app
å¿ èŠã«å¿ããŠsudoãä»ããŠäžãã
% sudo python setup.py py2app
ãããšdistãšãããã£ã¬ã¯ããªãäœæããããã®äžã«myappãšããã¢ããªã±ãŒã·ã§ã³ãäœæãããŸããã詊ãã«ããã«ã¯ãªãã¯ããŠã¿ããšå ã»ã©äœã£ãã¢ããªã±ãŒã·ã§ã³ãèµ·åããã¯ãã§ãã
ãã®myappã¯ãã€ããªãã¡ã€ã«ã§ãã®ã§ããããã»ãã®Macã«é ã£ãŠãããã§èµ·åããããšãã§ããŸãããã ãMacçšã®ãã€ããªãªã®ã§ãåœç¶ãªããWindowsã§ã¯äœ¿ããŸããã
Windowsã¢ããªã±ãŒã·ã§ã³ã®ãã€ããªå
Windowsã®pythonã¢ããªã±ãŒã·ã§ã³ã®ãã€ããªåã«ã¯py2exeã䜿ããŸãã
äœ¿ãæ¹ã¯ã»ãšãã©åããªã®ã§ãããã€ã³ã¹ããŒã«ã¯pipã§ã¯ãªããã¡ã€ã«ãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããŸããpipã ãšversion 3åãã®ããã±ãŒãžãã€ã³ã¹ããŒã«ããŠããŸãããã§ãã
ããŠã³ããŒãã¯äžèšããŒãžã«ããsourceforgeã®ããŠã³ããŒãããŒãžããè¡ãããšãã§ããŸããèªåã䜿ã£ãŠããversionã«ããããã€ã³ã¹ããŒã«ãã¡ã€ã«ãéžæããŠã€ã³ã¹ããŒã«ãè¡ã£ãŠãã ããã
次ã«py2appãšåæ§ã«setup.pyãæºåããŸãããã ãpy2exeã§ã¯ãã³ãã¬ãŒãäœææ©èœã¯ãªããããªã®ã§ãèªåã§äœæããŸãã
from distutils.core import setup
import py2exe
setup(console=['myapp.py'])
ãã®setupãã¡ã€ã«ã䜿ã£ãŠãå ã»ã©ã®Macã§äœ¿ã£ãããã°ã©ã myappããã€ããªåããŸãããã€ããªã®ã¢ããªã±ãŒã·ã§ã³ã¯py2appãšåããdistãã©ã«ãã«äœæãããŸãã
python setup.py py2exe
ãã¡ããã¢ããªã±ãŒã·ã§ã³ãããã«ã¯ãªãã¯ããããšã§èµ·åã§ããŸããdistã®äžã«ãã¡ã€ã«ããããããããŸãããããã¯å¿ èŠãªãã¡ã€ã«ãªã®ã§ãdistãã©ã«ãããšãŸãšããŠé åžããå¿ èŠããããŸãã
ãã€ããªãã¡ã€ã«ã®äžèº«
æåŸã«py2appã§äœæããã¢ããªã±ãŒã·ã§ã³myappã®äžèº«ã確èªããŠã¿ãŸãã
ããŸããŸãªãã¡ã€ã«ããã¢ããªã±ãŒã·ã§ã³ãæ§æãããŠããããšãããããŸãããããã®ãªãã«ãããšã®ã¹ã¯ãªãããã¡ã€ã«ããšPythonãã®ãã®ãå ¥ã£ãŠããããšãããããŸãã
ãã€ããªåãããšãã£ãŠããã¹ã¯ãªãããšãããåããPythonãã»ããã«ããŠé åžããŠããã ãã§ããCã®ãã€ããªãã¡ã€ã«ãšã¯æ ¹æ¬çã«ä»çµã¿ãéãã®ã§æ³šæããŠãã ããã
ãªããžã§ã¯ãæåãŸã§ã§æ¬é£èŒã®äž»èŠãªå 容ã¯ãã¹ãŠæ±ããŸãããæ¬¡åããã¯äŸå€åŠçãªã©ããŸã 説æããŠããªãéèŠãªå 容ã«ã€ããŠé ã«æ±ã£ãŠãããŸãã
å·çè
玹ä»äŒè€è£äž(ITO Yuichi)ã·ã¹ã³ã·ã¹ãã ãºã§ã®æ¥åãšå€§åŠã§ã®ç 究掻åã§ã³ã³ãã¥ãŒã¿ãããã¯ãŒã¯ã«6幎é¢ãããå°éã¯L2/L3 Switching ãšããŒã¿ã»ã³ã¿ãŒé¢é£æè¡ããã³SDNãTACãšããŠã·ã¹ã³é¡§å®¢ã®ãã¯ãã«ã«ãµããŒãæ¥åã«åŸäºã瀟å åãã®ãœãããŠã§ã¢é¢é£ã®ãã¬ãŒãã³ã°ããã³ããŒã¿ã»ã³ã¿ãšSDNé¢ä¿ã®å€éšè¬æŒãªã©ãè¡ãã ããšããšä»®æ³ãããã¯ãŒã¯é¢é£æè¡ã®ç ç©¶éçºã«åŸäºããŠããããšãããããããã¯ãŒã¯ã ãã§ãªãããã°ã©ãã³ã°ãLinuxé¢é£æè¡ã«ã粟éãCisco瀟å å€åãã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ããŒã«ã®éçºããè¶£å³ã§é³å£°åæåŠçã®ã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ãéçºã Cisco CCIE R&S, Red Hat Certified Engineer, Oracle Java Gold,2009幎床 IPA æªèžãããžã§ã¯ãæ¡æ 詳现(è±èª)ã¯ãã¡ã |
|---|









