肩の力を抜いて

肩の力を抜いて

プログラミングのネタが中心。ラクして成果を上げる仕組みを考える。

月末日や最終金曜日にGoogle Apps Scriptを自動で実行するテクニック

f:id:tadaken3:20170703141142p:plain こんにちは!
タダケン(@tadaken3)です。

Google Apps Scriptでは、トリガー使ってスケジュールでスクリプトを実行することができます。処理を自動化するにあたってとても心強い味方なのですが、トリガーだけではスケジュールを組むのが難しいパターンもあります(例えば月末日など)。

今回は、Dateオブジェクトから取得できる値をうまく使って自在にスクリプトをスケジュール実行するテクニックをお伝えしていきます。

毎月1日にスクリプトを実行する

毎月1日にスクリプトを実行するには、トリガーだけで実行可能です。トリガーの設定方法を見ていきましょう。

トリガー設定するには、メニューバーにある時計マークをクリックします。

f:id:tadaken3:20170703133109p:plain

実行したい処理を選んでイベントを「時間主導型」「月タイマー」に変更しましょう。すると日にちと時間を設定できます。画面の例では、毎月1日処理が実行されます。

f:id:tadaken3:20170703133123p:plain

月の最終日にスクリプトを実行する

最終日は少し工夫が必要です。最終日は月によって30日や31日もしく28日だったりします。2月の場合はうるう年も考慮しないといけません。

スクリプト側で最終日かどうか判定するロジックを入れて対応しましょう。

今日の日付に1日分足したもの(つまり明日)が月初めの1日であれば、『今日は最終日』になります。最終日の次の日は絶対に1日だからです。この方法で条件を判定しましょう。

dateオブジェクトに対して、getDateメソッドを実行することで『日』を取り出すことができます。 2017年6月30日の場合は『30』の部分です。

Point dateオブジェクト.getDate();

dateオブジェクトに更新する場合は、setDateメソッドを利用します。日を整数で与えます。

Point dateオブジェクト.setDate('日');

実際のコードはこのようになります。

//トリガー設定用
function trigger(){
  date = new Date();
  date.setDate(date.getDate()+1);//今日の日付に一日足す
  if (date.getDate() === 1){//最終日の判定
    main();
  };
}

function main(){
  //実際に処理を実行する内容をここに記載する
  Loggor.log("今日は月末です")
}

トリガーは「日タイマー」を選んで毎日実行するように設定します。

f:id:tadaken3:20170703133600p:plain

最終金曜日にトリガーを実行する

最終金曜日に処理を実行する場合は、こののように考えます。今日の日付に7を足した日付(つまり翌週の同じ曜日の日)が、来月になっていれば『今日は最終金曜日』です。

『月』を取り出すには、getMonthメソッドを使います

Point dateオブジェクト.getMonth();

実際のコードを見てみましょう。

//トリガー設定用
function trigger(){
  date = new Date();
  var month = date.getMonth()//判定したい日の月を取得


  date.setDate(date.getDate()+7);//7日を足す
  var month_next_week = date.getMonth()//7日後の月を取得
  if (month != month_next_week){//月が一致しなければ最終週
    main();
  };
}

function main(){
  //実際に処理を実行する内容をここに記載する
  Logger.log("今日はプレミアムフライデーです")
}

毎週の金曜日にトリガー設定をしておけば、最終金曜日のみ処理が実行されます。

f:id:tadaken3:20170703192947p:plain

毎月25日にトリガーを実行。25日が土日の場合は前倒しにする

25日に実行したいけど、土日の場合は日にちを前倒しして処理を実行したい場合もあると思います。例えば、お給料日を判定するような場合です。通常は25日に処理が実行されますが、25日が土日の場合は23日もしくは24日実行したい場合です。

この場合は、日にちと曜日のデータを組み合わせて条件判定を行ないます。25日に実行する場合で、具体的なケースを見ていきましょう。

  • 25日が土曜日の場合、24日が金曜日
  • 25日が日曜日の場合、23日が金曜日

つまり、以下の3パターンで処理が実行されればいいことになります。

  • 23日が金曜日
  • 24日が金曜日
  • 25日が土日ではない

曜日を取得するには、getDayメソッドを使います。getDayメソッドが返す値は数字になります。日曜日が0となる点にご注意ください。

Point dateオブジェクト.getDay();

実際のコードを見ていきましょう。

//トリガー設定用
function trigger(){
  var today = new Date();
  //getDayメソッドが返す値は、日曜日から0で始まります。対応する配列を用意します。
  var week = new Array("日", "月", "火", "水", "木", "金", "土");
  var day =  today.getDay();//曜日を取得
  //ログに曜日を出力しています。
  Logger.log(week[day])

  var date =  today.getDate();//日付を取得

 //23日かつ金曜日なら実行
  if (date === 23 &&  week[day] === '金'){
    main();
 //24日かつ金曜なら実行
  } else if (date === 24 && week[day] === '金'){
    main();
 //25日でかつ土日ではない場合に実行
  } else if (date === 25 && week[day] != '土'  && week[day] != '日'){
   main();
  };
};

function main(){
  //実際に処理を実行する内容をここに記載する
  Logger.log("今日はお給料日です!")
}

あとは、23日、24日、25日に処理を実行するトリガーを設定すれば、オッケーです。

f:id:tadaken3:20170703134244p:plain

まとめ

トリガーと日付の判定を組み合わて、定期的にスクリプトを実行する方法をお伝えしました。

Dateオブジェクトから値を取得するメソッドをまとめるとこのようになります。他にもアイデア次第で、スクリプト実行するスケジュールを組むことができると思います。

メソッド 取得でくるもの 備考
getFullYear()
getMonth() 値は0~11(1月~12月)
getDate()
getDay() 曜日 値は0~6(日曜日~土曜日)

今回の記事はいかがでしたか?

副業やプログラミングに関する記事を書いています。(ときどき、それ以外のことも) 読者登録してもらうと更新の励みになりますのでよろしくお願いいたします。

Macユーザーにオススメ!複数のアプリ・フォルダをダブルクリック一発で立ち上げる方法

f:id:tadaken3:20170701182902p:plain こんにちは!
タダケン(@tadaken3)です。

あなたは、朝、会社についてまず何をしますか?

チャットアプリやメーラーを立ち上げてメッセージの確認、インターネットブラウザを開いてニュースサイトをチェックして、作業フォルダを開いて・・・というよう毎朝のルーティン作業がだれしもあると思います。

複数のアプリやフォルダを立ち上げるのは案外、面倒ですよね。Macユーザーであれば、複数アプリやフォルダ・ファイルを開く作業はシェルスクリプトで簡単に効率化できます。

今回はショルスクリプトで複数のファイルやフォルダ、アプリケーションをダブルクリック1発で起動する方法をご紹介します。

Mac専用のOpenコマンドでFinderやアプリを開く

MacではOS X専用のコマンドopenコマンドを使用すると、ターミナルからFinderを起動してファイルやフォルダ(ディレクトリ)を表示することができます。

ディレクトリ・ファイルを開く

Finderを開く場合は、開きたいディレクトリのパスを指定します。例えば以下のように実行すると、デスクトップがFinderで開かれます。

open ~/Desktop


デスクトップにあるPDFファイルを開く場合の以下のように実行します。ファイルに関連付けられているアプリが自動的に起動します。

open ~/Desktop/I-am-gundom.pdf


まとめ open "ディレクトリ・ファイルのパス"

アプリを起動する

アプリケーションを起動する場合は「-a」オプションに続けてアプリを指定します。/Applicationsや/Applications/Utilitesフォルダにあるアプリやツールはこの方法で開くことができます。

open -a ”Google Chrome”

ただし、アプリを指定する際は、Finderに表示されている日本語名の名前ではなく、アルファベットなど表示されている実際のアプリを指定する必要があります。拡張子の「.app」は指定しなくても、ほとんどのアプリは起動できます。アプリ名にスペースが含まれる場合はクォーテーションでくくって指定します。

指定のアプリでファイルを開くには次のように実行します。 cotEditerというエディタでテキストファイルが開かれます。

open -a cotEditer ~/Desktop/setsuna−f−seiei.txt


まとめ open -a "アプリ名"

複数アプリを実行するスクリプトを作成する

では実際に「Chrome」「Chatwork」を開いて、デスクトップを表示するシェルスクリプトを作ってみましょう。テキストエディタを開いて、以下のようにシェルスクリプトを書いてみましょう。

#!/bin/bash
open -a "Google Chrome"
open -a ChatWork
open /Desktop

たったの4行で終わります。簡単ですね。

作成できたらファイルを保存しましょう。ここで重要なポイントです。通常シェルスクリプトは拡張子を「.sh」にして保存します。Macの場合は拡張子を「.command」にすることで、ファイルをダブルクリックしてシェルスクリプトを実行できます。*1

Point ファイル名 .command

作成したファイルは「open_some_apps.command」と名前をつけて、デスクトップに保存しましょう。

ファイルに実行権限を与える

最後にファイルに実行権限を与えます。「ターミナル」からchmodコマンドで実行権限を付与します。*2

#!/bin/bash
chmod +x ~/Desktop/open_some_apps.command

作成したファイルをダブルクリックしてみてください。Chromeとチャットワークが立ちあがり、Finderにデスクトップが表示されていれば成功です。

まとめ

今回はMacユーザーのためのシェルスクリプトのテクニックを紹介しました。ちょっとしたテクニックですが、アイデア次第で日々のルーチンワークを効率化することができます。

  • Mac専用のopenコマンドでFinderやアプリを起動する
  • シェルスクリプトの拡張子を「.command」に変更してダブルクリックで起動

次回もシェルスクリプトのテクニックを紹介していきますね。お楽しみに!

今回の記事はいかがでしたか?

副業やプログラミングに関する記事を書いています。(ときどき、それ以外のことも) 読者登録してもらうと更新の励みになりますのでよろしくお願いいたします。

*1:ターミナルから、shコマンドでファイルを実行することもできます。Linuxとの互換性は失われてしまいます。

*2:chmodはファイルやディレクトリのファイルパーミッションを変更するコマンドです。詳しくはリンク先をご覧ください。https://ja.wikipedia.org/wiki/Chmod

副業をはじめたら税務署の相談窓口を活用しよう!

f:id:tadaken3:20170628221808p:plain こんにちは! タダケン(@tadaken3)です。

副業をはじめてから、気になるのは「税金」「確定申告」のことではないでしょうか。 税金って難しいですよね。ボクはあまり得意ではありません。。。

税金や確定申告に関する記事はネットでもたくさんあります。ただ、自分のケースに当てはまるかどうかがわからない場合も多いです。今回は副業を始めたばかりのあなたを心強くサポートしてくる「税の相談窓口」についてまとめました。

確定申告が必要になるケースは?

例えば、副業の場合、確定申告が必要になるボーダラインとして「所得20万円以上」があります。ポイントなのが「所得」です。所得とは収入から経費をひいた金額になります。

Point!! 所得 = 収入 - 経費

ここで、ひとつ疑問が発生します。

「どの費用が副業の経費とすることができるのか?」

ざっと考えただけでも以下のケースがあります。

  • ブログを書くために購入したPCは?
  • もともと持っていたPCは費用計上できる?
  • プロバイダの費用は?
  • 家賃は?

費用が確定したとしても、副業の場合「雑所得」と「事業所得」の2つのパターンで確定申告することが認めらています。「雑所得」と「事業所得」どちらが得なのでしょうか。その前に、自分の副業が「事業所得」として、認められるのはどういった場合なのでしょうか。

税務署の相談窓口を利用しよう

前述したように副業の確定申告ひとつとっても、たくさんの疑問が湧いてきます。それほど、税の仕組みは複雑です。複雑だからこそ、専門的な知識をもった税理士さんが必要の手助けが必要になります。しかし、税理士さんに相談するにはお金もかかります。

そこで副業を始めたばかりのあなたには、税務署の「税についての相談窓口」を利用するのがオススメします。

税についての相談窓口|税について調べる|国税庁

東京都内でも確定申告の時期(2月~3月)を外せば、空いています。平日の10時頃にいったのですが、5分ほど待っただけで相談することができました。

税務署の相談窓口を利用するメリット

無料で利用できる

当たり前ですが、税務署の方は税金のプロです。そのプロに無料で相談することができます。閑散期であれば、とくに制限時間もなく細かいところまで、丁寧に教えてくれました。

自分のケースに合わせた相談ができる

きちんと資料を用意すれば、具体的なケースまで突っ込んで聞くことができます。 今回持っていってよかったものを上げておくので参考にしてみてください。

  • 給与明細
  • 副業の取引に使用している書類。(請求書や見積書など)
  • 実際の業務内容がわかるもの(僕はPCの画面などを見せて相談しました)

書類の書き方を教えてくれる

実際の申告書にどこに何をどのように記入するのかを教えてくれます。実際に3月にならないと数字は確定しないのですが、実際の収入や費用をもとに確定申告に必要な書類の内容や書き方を教えてもらうことができました。

税務署の相談窓口でできないこと

書類自体は自分で作成する必要がある

あくまで相談にのってくれたり、書類の書き方を教えてくれるだけなので、確定申告の書類は自分で作成しなければいけません。MFクラウド会計freeeなどのクラウド会計サービスもありますので、これらを活用する手もあります。規模が大きくなったら税理士さんにお願いすることを視野に入れてもいいと思います。

平日しかやっていない

市町村にもよりますが、基本的に月~金の平日しか税務署は開庁していません。本業がある場合は、休みを取ってらないといけません。簡単な内容であれば、電話でも相談はできます。

まとめ

無料で利用できる税務署の「税についての相談窓口」を利用して感想をまとめました。副業を始めたばかりだと税金周りはわからないことも多いです。そんなときこそネットのあやふやな情報を鵜呑みにせず、税務署に直接相談にいくと安心できます。

今回の記事はいかがでしたか?

副業やプログラミングに関する記事を書いています。(ときどき、それ以外のことも) 読者登録してもらうと更新の励みになりますのでよろしくお願いいたします。

Google Apps ScriptでHTML・XMLのスクレイピングをするライブラリを公開してみた

f:id:tadaken3:20170627092403p:plain こんにちは! タダケン(@tadaken3)です。

HTMLやXMLを整形・解析して、必要なデータを取り出すことををスクレイピングといいます。副業のお仕事関係で、Google Apps Scriptを使い、HTMLをスクレイピングする作業が必要になったのでいろいろ調べていたのですが、せっかくなのでHTML・XMLスクレイピングするためのGoogle Apps Scriptのライブラリを作成してみました。

コードはこちらの記事を参考にさせていただきました。ありがとうございます。

HTML/XML Parser for Google Apps Scriptのご紹介

ライブラリの基本的な情報は以下のとおりです。

ライブラリ名:
HTML/XML Parser for Google Apps Script

GitHub:
https://github.com/tadaken3/html-parser-gas

スクリプトID:
1Jrnqmfa6dNvBTzIgTeilzdo6zk0aUUhcXwLlQEbtkhaRR-fi5eAf4tBJ

まず、スクリプトIDを使って、ライブラリを追加します。 Google Apps Scritpのメニューバーの「リソース>ライブラリ」と辿っていきます。

f:id:tadaken3:20170626232437p:plain

すると以下の画面が出てくるのスクリプトIDを入力してください。

f:id:tadaken3:20170626232501p:plain

これでライブラリが追加されました。

parserライブラリの使い方

ライブラリの使い方は簡単です。以下の3つのメソッドで要素を取得します。

  1. IDを指定するgetElementByIdメソッド
  2. クラス名を指定するgetElementByClassNameメソッド
  3. タグを指定するgetElementByTagNameメソッド

IDを指定するgetElementByIdメソッド

getElementByIdメソッドでは、ID名を指定して要素を取得します。

書き方

parser.getElementById(対象の要素,ID名)

実際のコードはこのようになります。

var src = '<doc>'
        + '  <title id="doc-title">Anime Japan Expo</title>'
        + '  <chapter class="chapter">'
        + '    <paragraph class="paragraph">Do you like Anime?</paragraph>'
        + '  </chapter>'
        + '</doc>';

function parseXMLById() {
  var doc   = XmlService.parse(src),
      xml   = doc.getRootElement(),
      title = parser.getElementById(xml, 'doc-title');
  Logger.log(title.getValue());
}

するとidがdoc-titleの「Anime Japan Expo」がログに出力されます。

クラス名を指定するgetElementByClassNameメソッド

getElementByClassNameメソッドでは、クラス名を指定して要素を取得します。

書き方

parser.getElementByClassName(対象の要素,クラス名)

実際のコードはこちらです。

var src = '<doc>'
        + '  <title id="doc-title">Anime Japan Expo</title>'
        + '  <chapter class="chapter">'
        + '    <paragraph class="paragraph">Do you like Anime?</paragraph>'
        + '  </chapter>'
        + '</doc>';

function parseXMLByClassName() {
  var doc   = XmlService.parse(src),
      xml   = doc.getRootElement(),
      paragraph = parser.getElementsByClassName(xml, 'paragraph');//パラグラフを指定してます。
  Logger.log(paragraph[0].getValue());
}

クラス名がparagraphの「Do you like Anime?」がログに出力されます。

タグを指定するgetElementByTagNameメソッド

最後に、タグ名を指定するgetElementByTagNameメソッドです。

書き方

parser.getElementByTagName(対象の要素,タグ名)

サンプルコードはこのようになります。

var src = '<doc>'
        + '  <title id="doc-title">Anime Japan Expo</title>'
        + '  <chapter class="chapter">'
        + '    <paragraph class="paragraph">Do you like Anime?</paragraph>'
        + '  </chapter>'
        + '</doc>';

function parseXMLByTagName() {
  var doc   = XmlService.parse(src),
      xml   = doc.getRootElement(),
      title = parser.getElementsByTagName(xml, 'title');
  Logger.log(title[0].getValue());
}

こちらの場合は、titleタグの「Anime Japan Expo」がログに出力されます。

最後に

今回は、Google Apps ScriptでHTMLやXMLをパースするライブラリ「parser」についてお伝え致しました。HTMLやXMLをパースするイメージを掴んでいただけたでしょうか。Google Apps Scriptでスクレイピングをする際にきっと役立つと思います。

今回掲載したライブラリは自由に使ってもらって構いません(MIT ライセンス)が、公式ライブラリではないので使用上起きた問題についての責任は負いかねます。自己責任での利用をお願いします

はじめて副業で受託開発をやってみた!

こんにちは! タダケン(@tadaken3)です。

現在、本業の傍ら「いつも隣にITのお仕事」というブログで、Google Apps Scriptや仕事効率の記事を執筆しています。

今回は、ブログがきっかけで人生はじめての受託開発の仕事を受注しましたので、その経験をまとめていきたいと思います。はじめての副業、はじめての受託開発の経験になります。

受託開発の経緯

「いつも隣にITのお仕事」プランノーツが運営しています。プランノーツは「IT×働き方改革」をミッションに掲げる会社で、Google Apps Scirptなどで仕事を効率化するためのツールを開発したり、講演・コンサルティングをおこなっています。

今やITやWEBサービスの進化により一昔前よりも格段に簡単にお仕事ができるようになりました。 そしてその多くのツールは比較的安価に手に入れることができます。 しかし皆さんは本業のビジネスでお忙しい。プランノーツが皆さまの働き方改革を支援致します。 引用:プランノーツ ミッション

僕自身も定時に仕事を終わらせたいと思っている人間なので、プランノーツのミッションに共感し、応募させていただきました。

今回は「いつも隣にITのお仕事」がきっかけになり、お仕事をいただくことができました。

プランノーツでのお仕事

プランノーツでのお仕事は、大きく2つあります。

  1. ブログ執筆作業
  2. 開発案件へのアサイン

ブログ執筆

常に開発案件があるわけではないので、普段はプランノーツの集客力あげるために、仕事効率化やGoogle Apps Script等に関するブログ執筆をおこなっています。企画から自分で考え、納期も自分で設定します。もちろん、ブログ執筆にも報酬は発生します。基本リモートワークなので、やり取りはチャットワークでおこなっています。

ブログ執筆時はWEBライティングの指導を受けれるのでとても勉強になります。ノルマがあるわけではないのですが、習慣化したいので僕はすくなくとも週1本以上は執筆するように心がけています。

以前にも、何回かブログ運営にはチャレンジしてたことがあり、その時は3日坊主になっていたのですが、現在は4ヶ月ほど継続して続いています。

継続している理由としては、

  • 自分で設定したとはいえ「きちんと締切がある」
  • 編集してくれる人がいる

が大きいのかなと考えてます。他のパートナーさんも含めて、周りにブログを運営している人も刺激になっています。

あと、ブログ主のタカハシさんがよく焼き鳥をおごってくれます。焼き鳥うまい。

開発案件

プランノーツが受注した仕事の中から、タカハシさんがいい感じに見繕って開発案件を回してくれます。開発案件はブログとは別に個別に契約となります。そのため、仕様を確認し、見積もりをし、見積書を作成して業務委託という流れになります。案件はGoogle Apps ScriptやExcel VBAを使ったツールを作ることが多いみたいです。

今回は初めてだったこともあり、とくに工数見積と単価が一番悩みました。

お問い合わせフォームを使ったシステムだったのですが、最初に実装が重たそうなところ、まだ挑戦したことがない機能を試しに実装して、問題点を明らかにしてから工数見積をおこないました。今回はこれがたまたまうまくハマりました。実際に、実装してみて思わぬ落とし穴があったんですが、そこを事前に発見しうまく見積もりに含めることができたのは大きかったです。ただそれでも、結構見積もりと実際の工数がカツカツだったので、次回はもうちょっとバッファーみようかと思います。

単価というか相場は、よくわかってないので、結構えいやーって決めました。このあたりはスキルをアップしつつ単価を上げていこうと思います。将来的には、交渉スキルもあげないと。

油断するとものすごい時給が下がっちゃうので、見積もりホント大事だなと実感しました。

あと、ブログ主のタカハシさんがよく焼き鳥をおごってくれます。焼き鳥うまい。

f:id:tadaken3:20170626171549j:plain

実際の開発業務

とてもワクワクしました。物作るのはすごく楽しいですね。金曜日にお話を頂いたこともあり、あがったテンションのまま、一気に開発しました。まだ、細かい所の修正はあるのですが、基本機能は一通り実装できたので一安心しています。

今回は土日や平日の早朝をうまく使えたのですが、案件が増えてきた場合、本業に支障がでないようにスケジュール調整もしていかないといけないなと思っています。ぼくはまだ独身のなので、時間を確保しやすかったのも大きかったです。

東京に出できたばかりで、友達が少ないので。リア充爆発しろ。

まとめ

あらためて、工数見積もりの重要性が身にしみてわかりました。副業であっても、フリーで仕事を受けた場合は、すべて自分でスケジュー管理をしなければなりません。せっかくの仕事も、工数見積もりをみあやまって、時給が下がってしまうともともとも子もありません。

繰り返しになりますが、

見積もり、とても大事。バッファーはちゃんと見積もる。

最後に、会社を頼らず自分の力だけで、お金を稼ぐことができたのは、初任給をもらった時以上の感動がありました。この感動は、初めて「ラプラス」を捕まえたときに匹敵します。

次回も、副業をする上での学びや工夫したポイントをまとめていきたいと思います。 どうぞ、お楽しみに!

コマンドラインからSlack、チャットワーク、LINEに簡単に通知が送れるNotifyというツールをリリースしました

f:id:tadaken3:20170619231010j:plain こんにちは! タダケン(@tadaken3)です。

以前お伝えしていたとおり、Go言語の勉強を進めています。

tadaken3.hatenablog.jp

今回はコマンドラインからSlack、チャットワーク、LINEに簡単に通知を送るツールを作成しましたので、ご紹介を致します。

Notifyの機能について

機能はとてもシンプルです。百聞は一見にしかず。こちらのデモをご覧ください。コマンド一発で、Slack、LINEやチャットワークに通知を送ることができます。デモではSlackしか載せていませんが、もちろんLINEやチャットワークにも通知が送れます。

f:id:tadaken3:20170619230038g:plain

Notifyを利用するには

せっかくなので、利用方法について簡単にご紹介させていただきます。 Notifyを利用いただくには、まず、こちらからご自身の環境にあったファイルをダウンロードしてください。

リリースページ

ダウンロードしたあとzipファイルを解答すると、notifyの実行ファイルが入っています。 こちらを実行ファイルをパスがとっているところにファイルを保存してください。

パス?って何って方は以下の記事を参考にしてみてください。

あとはホームディレクトリに、「.notify.yaml」という設定ファイルを作成します。 この設定ファイルに、各チャットツールのアクセストークンやルームID、チャンネルなどの情報を保存します。

line_access_token: XXXXXX
chatwork_access_token = XXXXXX
room_id = XXXXXX 
slack_token = XXXXXX 
channel = genneral

アクセストークンは設定ファイルに保存しなくても、コマンドラインのオプションで指定することもできます。 詳しい説明は以下のページにも記載していますので、こちらもご覧ください。

github.com

Notifyを作ろうと思った理由

「Notfiy」を作ろうと思ったきっかけは、現在、本業やブログ執筆でいろんなチャットサービスを利用しています。案件やプロジェクトによって、利用しているチャットツールが異なっているので、ひとまとめにして簡単にメッセージが送れるようにしました。

作ってみて勉強になったこと

今回は、コマンドラインツールを作成を目的にしたいたこともあり、vimというエディタで開発しました。vimを本格的に触ったので、最初は四苦八苦しながらでしたが、デスクにチートシートを貼り付けて少しずつコマンド覚えていきました。まだまだなれないことも多いですが、一回使い出すととても便利です。なにより、コマンドプロンプトやターミナルで使えるエディタというのは便利でした。

また、作成したコードをGithubにあげるだけでなく、Githubのリリースページに実際のリリースページを置くところまでやってみました。

今後やりたいこと

とりあえず、作ってリリースしたので、動くことは動くのですが、機能としてはまだまだブレッシュアップが必要だなと思っています。とりあえず、画像や添付ファイルの送信なんかにも対応していきたいと考えています。

また、コードはある程度書けるようになったのですが、設計・デザインパターンの勉強がきちんとできていないので、このあたりはもうちょっときれいに作り変えたいと思っています。

あと、テストコードもきちんと書けていないので、テストの技法なども勉強して、ちゃんとテスを書けるようにならないとなと感じました。

もし、要望や改善提案などあれば、Pull Requestいただけるとうれしいです。

「ExcelVBAを実務で使い倒す技術」、いよいよ発売です(書評)

f:id:tadaken3:20170424194727j:plain

みなさん、こんにちは! タダケン(@tadaken3)です。

今回「ExcelVBAを実務で使い倒す技術」タカハシさんに献本いただきましたので、早速紹介したいと思います。ありがとうございます。

気になる目次も紹介します。

  • 第1章 脱初級への第一歩は「道具であるVBE」を使いこなすことから
  • 第2章 イミディエイトウィンドウの神髄
  • 第3章 バグを制するものはVBAを制する
  • 第4章 システムの成功と失敗の分かれ目は設計にあり
  • 第5章 できる担当者のコーディングは発想からして違う
  • 第6章 リーダブルコードでVBAを資産化する
  • 第7章 「変化」への耐久性を持たせるためのVBAの作法
  • 第8章 VBAは個人作業のみならず「チーム」にも革命をもたらす

ExcelVBAを実務で使い倒す技術は良き先輩となる本

この本の感想を一言で述べるとプログラミング初心者にとっての「良き先輩となる本」です。とくに、プログラミング経験がなく、周りに開発者の先輩・メンターがいない状態で、VBAでプログラミングを学ぼうと思う初心者の方にとっては、最良の先輩となるはずです。

例えば第3章では「エラーコードの読み方」がまとめられています。この手の内容は、開発者であれば、現場の先輩などから、おのずと習得して行くことだと思います。しかし、独学だとそうは行きません。そこで、本書が役に立つのです。

他にも、「検索の上手な使い方」や「読みやすいコードを書くためのコツ」といった、入門書には書いていないけど、開発をする上でとても役に立つ情報がこれでもかというくらい盛り込まれています。

初心者だけでなく、再入門にも!

また、初心者だけでなく、今まで何度かVBAやプログラミングに挑戦したけど、うまくいかなかったという方にも本書はとてもおすすめです。基本的なループや条件分岐といった文法を超えて、実際にプログラミングを仕事で役立てる方法を、学ぶことができます。

今までバラバラだった知識が、つながって一つの線になる感覚です。基本となる軸の通った知識があれば、どんな形でも応用ができるようになると思います。本書を読めば、コピペや写経から脱却して、オリジナルのコードを書けるようになるはずです。

まとめ

個人的には第7章『「変化」への耐久性を持たせるためのVBAの作法』がとても参考になりました。こういった作ったコードを、長期的に資産として活用していくための視点もふくまれているため、ほんとにためになる本だと思います。

ぜひ、書店やネット通販を通じてお手元にどうぞ。

ExcelVBAを実務で使い倒す技術

ExcelVBAを実務で使い倒す技術