プログラミング

TypescriptでGoogle Apps Script開発をする

前回の続きです。

claspを使うとGoogle Apps Scriptを快適にローカルで開発することができますが、
さらにclaspは、v1.5.0からTypescriptに対応しているので、typescirptで開発することができるんです。

claspが対応する前も、TypescirptをwebpackやBabelを使って、トランスパイルして、pushすることは出来ていたのですが、
正式にサポートされたおかげで、clasp pushすれば、自動的にトランスパイルされて、Google Apps Scirpt側にpushされるんです。

では、さっそく試してみましょう。

$mkdir ts-gas-sample
$cd ts-gas-sample
$npm init -y

LinterとFormatterも導入しておきましょう。

$npm install --save-dev tslint
$npm install --save-dev prettier
# tslintの設定ファイル(tslint.json)を作成する
$tslint --init

TSLintとprettierが競合してしまうことがあるので、下記のモジュールもインストールしておきます。

$npm install --save-dev tslint-config-prettier
$npm install --save-dev tslint-plugin-prettier

ちなみにTypescriptで開発をするならVSCodeがオススメです。

Visual Studio Code – Code Editing. Redefined

VSCodeでコード補完してもらえるように「@type/google-apps-script」もインストールしておきましょう。

$npm install --save-dev @types/google-apps-script

新規スクリプトを作成していきましょう。

オプションとして–rootDirを指定しておくのがオススメです。
rootDirを指定すると、claspのpullとpushの対象が指定したディレクトリ下になります。

clasp create --title ts-gas-sample --rootDir ./src

ファイル構成はこのようになっているはずです。

.
├── .clasp.json
├── node_modules/
├── package-lock.json
├── package.json
└── src
    └── appsscript.json

では、さっそくTypescriptでコードを書いてみましょう。

srcディレクトリにCode.tsを作成します。

たとえば、こんな感じのコードを書いたとします。

interface Person {
    firstName: string;
    lastName: string;
}

function greeter(person: Person) {
    return "Hello, " + person.firstName + " " + person.lastName;
}

function myFunction() {
    let user = { firstName: "tarou", lastName: "yamada" };
    Logger.log(greeter(user));
}

これをclasp pushしてみます。

$clasp push
$clasp open

ブラウザ上のスクリプトエディタをみると、トランスパイルされていることがわかります。

var exports = exports || {};
var module = module || { exports: exports };
function greeter(person) {
    return "Hello, " + person.firstName + " " + person.lastName;
}
function myFunction() {
    var user = { firstName: "tarou", lastName: "yamada" };
    Logger.log(greeter(user));
}

今回は以上です。

Google Apps Scriptのローカル開発には「clasp」導入がオススメ

Google Apps Scriptってご存知ですか?
その名の通り、Googleが提供しているプログラミング言語のことです。
略してGAS(「ガス」)といいます。

Google Apps Scriptは無料で利用することができ、
Googleのアカウントさえあればすぐに書き始めて、プログラムを実行することができます。
環境構築も必要なく、非常に手軽なので、初心者向けのプログラミング言語だと言えます。

初心者向けとはいえ、Googleの他のサービス、
たとえばGmailやGoogleカレンダー等をプログラミングで操作することができるので、
手軽に作業を自動化することも可能です。

続きを読む

【Mac】PyAutoGUIが正常に動作しない場合の対応方法について

PyAutoGUIってご存知ですか。

PyAutoGUIは、PythonのGUI自動化モジュールです。
これを利用すれば、マウスとキーボードの動きをプログラムで制御することができるので、
マウスとキーボードで操作するものについては、ほぼ自動化することができます。

RPAツールを導入すれば、簡単にPCの自動化はできますが、PyAutoGUIならば無料で使うことができます。

動作確認環境

  • OS:OS X Mojave 10.14.3
  • Python: 3.6.3

続きを読む

【Python3】mysqlclientでMySQLに接続するとエラーが出てしまう

Python3でMySQLに接続する方法についてですが、mysqlclinetを使う方法が便利なのですが、実行してみたところ下記のエラーが表示されました。

Traceback (most recent call last):
  File "sample_mysql.py", line 1, in 
    import MySQLdb
  File "/Users/ME/.pyenv/versions/anaconda3-2.5.0/lib/python3.5/site-packages/MySQLdb/__init__.py", line 19, in 
    import _mysql
ImportError: dlopen(/Users/ME/.pyenv/versions/anaconda3-2.5.0/lib/python3.5/site-packages/_mysql.cpython-35m-darwin.so, 2): Library not loaded: libssl.1.0.0.dylib
  Referenced from: /Users/ME/.pyenv/versions/anaconda3-2.5.0/lib/python3.5/site-packages/_mysql.cpython-35m-darwin.so
  Reason: image not found

続きを読む

macによるpython3入門-その6-〜関数〜

プログラミングに関する原則の中で、DRY原則というのがあります。 DRYはDon’t Repeat Your Selfの略で、コードの重複はできる限り避けるべきです。

DRY原則に従う理由は、そもそも、書いたことがあるコードを再度記載するのは無駄な作業ですし、なによりコードが重複していると、コードが不必要に長くなり、プログラムの メンテナンス性・可読性が低くなるからです。

ですが、はじめからコードの再利用を念頭においてプログラミングをはじめてしまうと ロジックの抽象化が必要になりますので、普通にコードを書いているよりも時間がかかります。 一度しか使用しないロジックであれば、時間をかけてロジックを抽象化し、再利用を考えるのは基本的に無駄があります。

そこで、コードの再利用を考える基準として、マーチンファウラーが「リファクタリング -プログラムの体質改善テクニック-」で提唱している「Rule of three(3度目の法則)」に従うのが良いと思います。 重複した処理が3回出てきたら、コードの再利用を検討するのが良いでしょう。

コードを再利用するときの方法として、「関数」があります。 今回はPythonにおける「関数」について書きたいと思います。

続きを読む

Macにnode.jsの環境構築をしてみる(nodebrew)

Macにnode.jsをインストールしてきます。

node.jsのインストールは比較的簡単で公式サイトからインストーラーをダウンロードし、実行するだけです。

公式サイトからは「最新安定版」と「LTS (長期サポート版) 」の2種類選択することができます。最新安定版なら右側をクリックします。

Node js

ただ、node.jsはバージョンアップの頻度が高く、プロジェクトによってはバージョンを切り替えたくなるときがあります。

そこで、今回は公式サイトのインストーラーからではなく、node.jsのバージョン管理ツールである「nodebrew」を使用して、Macにnode.jsの環境を構築していきたいと思います。

動作確認環境

  • OS:OS X Yosemite 10.10.5

続きを読む

【Mac】Python3(Anaconda)でTensorFlow環境を構築してみる

Python3でTensorFlow環境を構築してみましょう。

機械学習・ディープラーニングをしっかり理解することは難しいと思いますが、環境構築だけなら簡単です。

そもそも、環境構築しなければ、いろいろ試して勉強することもできないので、機械学習やディープラーニングの概念については、また考えるとして、とりあえず環境構築してみましょう。

TensorFlow環境の構築はいろいろ方法がありますが、今回は前回解説したAnacondaを使って環境構築してみたいと思います。

動作確認環境

  • OS:OS X Yosemite 10.10.5
  • pyenv 20150310
  • anaconda3-2.5.0

続きを読む