概要
Pythonは、高い可読性や柔軟性により、IT企業で広く活用されています。
今回は、Pythonを実際に活用している幾つかのIT企業を紹介していきます。
詳細内容
1. GoogleGoogleは、大規模なデータ処理や機械学習にPythonを広く活用しています。
例えば、Googleのテキスト翻訳サービス「Google翻訳」は、Pythonに基づいて構築されています。
以下にGoogleが公開している、翻訳APIを利用するためのPythonコードの例を示します。
# Google翻訳APIを利用して日本語を英語に翻訳するサンプルコードfrom googletrans import Translatordef translate_text(text):
translator = Translator()
result = translator.translate(text, dest='en')
return result.textprint(translate_text("Pythonは優れたプログラミング言語です"))
このコードでは、`googletrans`というPythonライブラリを用いてGoogle翻訳APIを利用しています。
Google翻訳は、機械学習によって習得されたモデルを使用しており、Pythonによるデータ処理や機械学習アルゴリズムの実装に向いています。
2. DropboxDropboxは、クラウドストレージサービスを提供する企業です。
Pythonは、Dropbox内部のツールやプロセス自動化スクリプトなど、多数の用途で活用されています。
以下に、Dropboxが公開しているPython製ツール「pywatchman」のソースコードを示します。
# pywatchman: Dropboxが公開している、inotify(ファイルシステム監視機能)のPythonバインディングimport os
import threadingimport sixtry:
import pywatchman.libwatchman as pywatchman
except ImportError as e:
raise ImportError(
'`pywatchman.{}` library is not importable. '
'Make sure you have `pywatchman` installed.'.format(e.name)
)
class _Watcher(object):
"""Base class for operating system filesystem watching."""
def __init__(self, callbacks=None):
self.callbacks = callbacks or []
self.should_stop = False
self.thread = threading.Thread(target=self.watch)
self.thread.daemon = True
def start(self):
self.thread.start() def stop(self):
self.should_stop = True
self.thread.join() def add_callback(self, f):
self.callbacks.append(f) def remove_callback(self, f):
self.callbacks.remove(f) def on_change(self, root, files):
for callback in self.callbacks:
callback()
class WatchmanWatcher(_Watcher):
"""A watcher that uses Facebook's Watchman."""
def __init__(self, path, callbacks=None):
_Watcher.__init__(self, callbacks)
self.path = path
self.client = pywatchman.client()
self.client.capability_check(
optional=["wildmatch", "field-renames", "relative_root"])
self.subscription = None
# Query subscribed to.
self.query = {
'expression': ['allof', ['match', '*']],
'fields': ['name'],
'synchronize': True
} def watch(self):
res = self.client.query("version", optional={"optional": True})
os_version = '.'.join(map(str, res["version"]))
print('Watchman version:', os_version)
self.subscription = self.client.query(
"subscribe", self.path, self.query)
while not self.should_stop:
result = None
try:
result = self.client.receive()
except pywatchman.socket.timeout:
pass
if result is None:
continue
root = result["root"]
files = result["files"]
self.on_change(root, files)
def watch_directory(path, callbacks, recursive=False):
watcher = WatchmanWatcher(path, callbacks)
watcher.start()
return watcher
このコードは、Facebookが開発したファイルシステム監視ツール「Watchman」のPythonバインディングです。
ファイルシステムの変更を監視し、変更があった場合に指定されたコールバック関数を呼び出します。
Dropboxは、このライブラリを用いて、ファイルの同期を行うなどの機能を実現しています。
コメント