タダケンのEnjoy Tech

楽しみながらラクに成果を上げる仕組みを考える

プログラミングを習得するには、とにかく写経することがオススメ

f:id:tadaken3:20180325120346p:plain

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

プログラミングを学習する方法は、たくさんあります。入門書、プログラミングのスクール、オンラインでの学習サイト、プログラミングの入門動画などなど。たくさんの方法があってどれが効果的なのか迷ってしまいますよね。

そんなあなたに取って置きの方法をお伝えします。それは写経です。ボクはプログラミングを習得するには「写経」が一番いいと考えています。

とにかく書き写す

プログラミングをはじめて学ぶ方は、まずはサンプルコードをひたすら書き写すのがオススメです。プログラミングは「言語」なので、習得するにはどうしても書いて覚える必要があります。言語なので書けば書くほどうまくなるというのが持論です。

書いているうちにその言語の特徴や文法が体に染み付いてきますし、「書いて動かす」を繰り返すことでプログラミングの勘所みたいなものが養われます。とくにプログラミング初心者にわからなくても書いて覚える写経が効果的です。

書くことでわからないところが明確になる

最初はサンプルプログラムの意味がわからないかもしれません。ですが、それは初めて学ぶことなので当たり前です。本をサラッと一回読んだだけで理解できるのであれば、誰も苦労はしないでしょう。

意味がわからないながらも、コードを自分で打ち込んでいきます。サンプルコードを打ち込んだ後、実際動くかどうか試してみます。するとたいていの場合、うまく動かなかったり、エラーコードが表示されます。

でも、決してめげないでください。

エラーメッセージが出ている場合は、エラーメッセージを読んでみましょう。もしわからなければ、Googleで検索してみます。どの辺に間違いがあるか当たりがつくかもしれません。

もしエラーメッセージを見てもわからなければ、打ち込んだコードとサンプルコードをもう一度チェックしてみましょう。以外なところでタイプミスをしていませんか。

また理解していないメソッドやキーワードがあれば、それを覚えておきましょう。今はわからなくてもあとで調べてみて理解できるかもしれません。

そうやって試行錯誤しているうちにプログラムがやっと動くようになりました!おめでとうございます。

きっと本をサラッと読んだだけでは、理解したかどうかもあやふやだったところまで、理解できたのではないでしょうか。

これが写経の効果です。実際に書いて動かすことで、プログラミングは上達します。

「ほんたった」があると写経が捗る

写経をするときは、本をたてておくブックスタンドがあるととても便利です。コレはあるのとないので大きく違うので、プログラミングを始めようと思ったら、まず買っておくべきです。

個人的には、EDISONの「ほんたった」がオススメです。「ほんたった」は折りたたみ式のブックスタンドでカバンに入れて持ち運びができるので、会社・自宅の両方で使えます。気分転換にスタバで写経したりもできます。

折りたたみができる分、通常のブックスタンドよりも若干高めですが、それでも2500円程度です。

「ほんたった」は通常のバインダーに加えて補助バインダーがついてるので、ページがめくりやすいところも気に入っています。

EDISON ほんたった黒(ハードケース入り)

EDISON ほんたった黒(ハードケース入り)

まとめ

写経は泥臭い方法かもしれませんが、プログラミングを習得するに、より確実な方法です。1日5分でいいので、プログラミングの写経を始めてみませんか。きっと効果が実感できるはずです。

読者登録をお願いします

本ブログではプログラミングについての記事を公開しています。よろしければ読者登録していただけると更新の励みになります。ぜひ一緒にプログラミングを学びましょう。

はてなブログにコマンド一発で投稿するPythonスクリプトを作ってみた

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

はてなブログへの投稿を少しでも便利にしたいと思い、テキストファイルをはてなブログに投稿するPythonスクリプトを作成しました。使い方をご紹介します。

github.com

はてなブログは、はてなブログAtomPubというAPIを公開しています。認証形式はOauth2、WSSE、BASICに対応しています。今回のスクリプトではWSSE認証で、ブログの投稿を行っています。1

はてなブログ投稿スクリプトの使い方

事前準備

以下の環境で動作することを確認しています。Python3のスクリプトです。

  • python: 3++
  • system: mac OS X, windows 7

まずスクリプトをGitHubからDLします。

$git clone https://github.com/tadaken3/hatenablog_post.git


もしくはGithubのページにアクセスして、「Clone or download」ボタンを押してダウンロードします。

f:id:tadaken3:20170824152859p:plain

依存関係のあるPythonライブラリはrequestschardetです。requestsはHTTPライブラリ、chardetはファイルの文字コードを調べるのに利用しています。pipでインストールしましょう。

$pip install requests
$pip install chardet


次に認証情報をスクリプトに埋め込みます。hatenablog_post.pyファイルの以下の部分を変更します。

username = 'username'
api_key  = 'API key'
blogname = 'yourblogname.hatenablog.com'


usernameは、はてなのIDです。api_keyとblognameは、はてなブログの管理画面から「設定>>詳細設定」で確認することができます。AtomPubの欄に記載があります。例えば、このブログの場合は「tadaken3.hatenablog.jp」です。2

f:id:tadaken3:20170824145612p:plain

これで準備がオッケーです。

ブログを投稿してみる

hatenablog_post.pyと同じディレクトリにブログ原稿を保存します。ファイルの1行目がタイトル、2行目以降が本文になります。例えばblog.mdというファイルを作ってブログタイトルと原稿本文を書いて保存してみましょう。

作成したファイルを引数にとって、スクリプトを実行します。

$ python hatenablog_post.py blog.md


うまくいくとブログに下書きに記事が反映されます。ブラウザではてなブログにアクセスして確認してみてください。

f:id:tadaken3:20170824150058p:plain

まとめ

cotEditorという軽量のテキストエディタを使用して、ブログ原稿を書いてます。cotEditorはPythonスクリプトで機能を拡張できるようだったので、今回のスクリプトを作成しました。自分がラクをしたいので。3

今回はテキストのみですが、いずれは画像も含めて一発で投稿できるようにしたいと思っています。

参考サイト

みんなのPython 第4版

みんなのPython 第4版


  1. 本記事で紹介したスクリプトは参考サイトにあるkaraageさんの記事をベースにしています。Python3で動くようにしたのとファイルの取扱などを改良しています。

  2. api_keyなどは環境変数に入れて参照することをおすすめします。ネット上にうっかり公開しないよう気をつけましょう。

  3. ちなみにこのままだと諸事情によりcotEditorで動きません。微妙に改良したのはこちらです。

いまこそプログラミングを学んで自由を手に入れよう。

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

ボクはもともと経理部出身だったのですが、独学でプログラミングを勉強して、現在はデータアナリストとして仕事をしています。

プログラミングを学んだことで、ボクは人生は大きく変わりました。プログラミングは自由を手に入れる切符です。プログラミングを学ぶ人が増えるといいなと思い、この記事を書きました。

プログラミングは時間を生み出すスキルである

プログラミングは、英語や簿記といったスキルとくらべて、特徴的なところがあります。それはプログラミング自体が時間を生み出すスキルであることです。

プログラミングを学ぶと、様々なタスクをPCにやってもらうことができます。しかも、人間が手作業で行うより、PCは高速かつ正確にタスクを処理します。手作業だと半日かかっていた集計作業が、プログラミングを学ぶことでたったの5秒で終わるといったことも珍しくありません。

もちろんプログラムを作成するのに時間がかかりますが、一度作ってしまえば、その後も集計作業は自動で処理できます。空いた時間にさらにプログラミングの技術を高めていけば、より高度なこともプログラミングできるようになります。こなせるタスクは増える一方で、それにかかる時間は減っていくという減少が発生します。

プログラミングを学ぶ→時間ができる→さらにプログラミングを学ぶ→さらに時間ができる

というサイクルが回り始めます。プログラミングを学ぶことで時間の複利効果の恩恵をうけることができるのです。

自分のやっている仕事をひとつ自動化してみる

プログラミングを学ぶ上でよくある悩みが、基本的な文法な内容を学んだあと何を作っていいのかわからないという悩みです。

まずは自分のやっている仕事をひとつ自動化するプログラムを作ってみることをおすすめします。いきなりすべてを自動化することは難し位と思いますので、ほんの少しのタスクを自動化することを考えてみるといい勉強になります。

また、プログラミング言語にはC、Java、Ruby、Python、Javascriptなどたくさんの言語があります。たくさんありすぎて迷ってしまいますね。ですが、仕事を自動化するためには何を勉強すればいいのかという観点であればおのずと学ぶべきことが見えてきます。

例えば、

などの方法があります。

勉強することはたくさんある。それを乗り越えるメリットもたくさんある

プログラミングを学ぶ始めると、学ぶべきことがたくさんがあるなと感じます。

基本的なインターネット通信の基本的な仕組み、OSの成り立ち、コードのバージョンを管理する方法といったことやきれいなコードを書く方法や実用に耐える設計手法、ソフトをテストする方法などあげればキリがありません。

ボク自身もまだまだ勉強中ですし、新たに学ぶ分野で「入門書を買ってきて、本に書かれているとおりにススメてみたけどうまく動かない」といったことはしょっちゅうあります。

ですが、わからないことをググったりしながら、エラーコードと悪闘しながら、少しずつできることを増やしています。スキルを身につけると達成感があり、もっとプログラミングについて勉強したいと思うようになりました。

学習することはたくさんありますが、それを乗り越えることでできることがどんどん増えていくというのは、ものすごい充実感があります。まるでモンハンでどんどんと強いモンスターを倒す感覚です。

あなたが今持っているスキルと組み合わせれば鬼に金棒

あなたはセールスマンでしょうか❔それともデザイナー?銀行員でしょうか?

であれば、プログラミングを学ぶことは大きなチャンスです。プログラミングを学ぶことでスキルの掛け算が発生します。 プログラミングだけが得意なエンジニアはたくさんいますが、スキルを組み合わせることで、あなたの市場価値を一気に高めることができます。

  • マーケティング☓プログラミング
  • デザインセンス☓プログラミング
  • 金融知識☓プログラミング

また、あなたが今持っている知識を活かして、WEBサービスやアプリを作ることができるかもしれません。自分でWEBサービスを作って生活していければ、会社をやめて独立することだって可能です。

クラウド会計ソフトのfreeeを立ち上げた佐々木さんはエンジニア経験のなマーケッターだったのは、ボクを勇気づけてくれました。

読者登録をお願いします

本ブログではプログラミングについての記事を公開しています。よろしければ読者登録していただけると更新の励みになります。ぜひ一緒にプログラミングを学んで自由を手に入れましょう。

みんなのPython 第4版

みんなのPython 第4版

Google Apps Scriptでfreeeの取引データを取得してスプレッドシートに保存する方法

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

前回は、freeeのAPIを利用するためにOauth2認証にそって、アクセストークンを取得する方法を解説しました。

tadaken3.hatenablog.jp

今回は、取得したアクセストークンを利用して、freeeの取引データをAPI経由で取得して、スプレッドシートに書き出してみます。アクセストークンさえ取得できれば、あとは簡単です。1

前回のおさらい

前回はアクセストークンを取得して、取得したアクセストークンを使って事業所のデータを取得し、ログに出力するところまで解説しました。

簡単におさらいしておくと

  1. alertAuthメソッドでfreeeの認証をおこなう
  2. getCompanyIdで認証後に取得したアクセストークンを利用し、事業所のデータを取得

という流れです。前回のコードはこちら。

//先程取得したAppID・Sceretを入力
var appId = "あなたのApp id";
var secret = "あなたのシークレット";

// 認証のエンドポイントとなるダイアログを表示します。
function alertAuth() {
  var service = getService();
  var authorizationUrl = service.getAuthorizationUrl();
  var template = HtmlService.createTemplate(
    '<a href="<?= authorizationUrl ?>" target="_blank">認証</a>. ' +
    '認証が完了したら再度操作を行ってください。');
  template.authorizationUrl = authorizationUrl;
  var page = template.evaluate();
  SpreadsheetApp.getUi().showModalDialog(page, "認証が必要です");
  Logger.log("認証が切れています");
}

//freeeAPIのサービスを取得
function getService() {
  return OAuth2.createService('freee')
      .setAuthorizationBaseUrl('https://secure.freee.co.jp/oauth/authorize')
      .setTokenUrl('https://api.freee.co.jp/oauth/token')
      .setClientId(appId)
      .setClientSecret(secret)
      .setCallbackFunction('authCallback')
      .setPropertyStore(PropertiesService.getUserProperties())
}

//認証コールバック
function authCallback(request) {
  var service = getService();
  var isAuthorized = service.handleCallback(request);
  if (isAuthorized) {
    return HtmlService.createHtmlOutput('認証に成功しました。タブを閉じてください。');
  } else {
    return HtmlService.createHtmlOutput('認証に失敗しました。タブを閉じてください。');
  }
}

//認証後、取得したアクセストークンを元にfreeeAPIからカンパニーIDを取得する
function getCompanyId() {
  var freeeApp = getService();
  var token = freeeApp.getAccessToken();
  var options =
   {
     "method"  : "get",
     "headers" : {"Authorization" : "Bearer "+ token}

   };
  var res = UrlFetchApp.fetch("https://api.freee.co.jp/api/1/companies",options);
  Logger.log(res)
}

以下はレスポンスの例になります。ログにこのようなデータが出力されているはずです。

{
  "company" : {
    "id" : 1,
    "name" : "freee事務所",
    "name_kana" : "フリージムショ",
    "display_name" : "freee事務所",
    "role" : "admin",
    "account_items" : [ ... ],
    "taxes" : [ ... ],
    "items" : [ ... ],
    "partners" : [ ... ]
  }
}

事業所のデータからカンパニーIDを取得する

次に、この事業所のデータからカンパニーIDを取り出します。カンパニーIDはfreeeの事業所識別するIDです。取引データを取得・追加するときに必要になってきます。2

JSON形式で保存されているので、getCompanyIdメソッドを以下のように書き換えます。

APIの詳細は以下もご覧ください。

freee APIドキュメント

function fetchFreee(url) {
  var freeeApp = getService();
  var token = freeeApp.getAccessToken();
  var options =
   {
     "method"  : "get",
     "headers" : {"Authorization" : "Bearer "+ token}

   };
  var json = UrlFetchApp.fetch(url,options).getContentText();
  var jsonData = JSON.parse(json);
  return jsonData
}

function getCompanyId() {
  var jsonData = fetchFreee("https://api.freee.co.jp/api/1/companies")
  var companyId = jsonData['companies']['0']['id'];
  return companyId
}

データを取得するたびにfreeeのAPIにアクセスするため、処理を抽象化して、fetchFreeeメソッドを追加しています。fetchFreeeはエンドポイントとなるURLを渡すことでJSONを返します。

取引一覧のデータを取得する

freeeでは、取引という概念で収入と支出を管理しています。発生日、支払期日、金額、支払残額、収入か支出か、決済口座などの情報が取引データを見るとわかります。

取引の一覧を取得すること、スプレッドシート上で収支の分析ができるようなります。

取引のAPIに関する情報はこちらをご覧ください。

freee APIドキュメント

今回は試しに取引発生日、収支のタイプ、金額、備考欄を取得してみます。 JSONがネストしているので注意してください。また、今後スプレッドシートでやり取りしやすいように二次元配列で値を返すようにしています。

function getSalesData() {
  var companyId = getCompanyId();
  var dealsData = fetchFreee("https://api.freee.co.jp/api/1/deals?company_id=" + companyId);
  
  //deals
  var dataCnt = dealsData["deals"].length;
  var arr = [];
  
  for(var i=0; i<dataCnt; i++){
    var issue_data   = dealsData["deals"][i]["issue_date"]
    var type         = dealsData["deals"][i]["type"]
    var amount       = dealsData["deals"][i]["amount"]
    var description  = dealsData["deals"][i]["details"][0]["description"]
    arr.push([issue_data, type, amount, description])
  }
  return arr
}

取得したデータをスプレッドシートに書き出す

最後に取得したデータをスプレッドシートに書き出すメソッドを追加します。dataというシートを事前に作成しておいてください。実行すると取得したfreeeの取引のデータが出力されます。

//detaというシートに取得したデータを書き出す。
function setDataToSheet(){
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName('data'); 
  var arr = getSalesData()
  var lastRow = arr.length;
  var column = arr[0].length;
  Logger.log(arr)
  sheet.getRange(2,1,lastRow,column).setValues(arr);
}

ちょっと長くなってしまったので、すべてまとめたものはGistにおいておきます。

freee-get-deals.gs · GitHub

まとめ

今回はfreeeのAPIを使って

  1. カンパニーIDを取得
  2. 取引一覧のデータを取得
  3. 取得したデータをスプレッドシートに書き出す

上記の3つをおこなう方法を解説しました。freee自体で様々な指標を確認することはできるのですが、スプレッドシートに書き出すことで、自分自身で経営分析をいろいろな観点でできるようになります。

このブログについて

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


  1. freeeのAPIを利用するには、法人プランの場合、ライト、ビジネス、エンタープライズ。個人プランの場合はスターター、スタンダード、プレミアムのいずれかを利用している必要があります。

  2. アカウントに2つ以上事業所を登録している方は、操作したい事業所のカンパニーIDを取得しましょう。

スプラトゥーン2がさらに楽しくなるイカしたWebサービスとかを集めてみた

f:id:tadaken3:20180325125803p:plain

こんにちは!
ケッチャプが好きなタダケン(@tadaken3)です。

「スプラトゥーン2」が楽しすぎて、生産性がガタ落ちの毎日です。 お察しください。

スプラトゥーン2は7月21日に発売され、発売日3日で67万本を販売したニンテンドースイッチの大人気ゲームです。 ニンテンドースイッチ本体が120万台の販売台数だそうで、装着率はなんと55%。 ニンテンドスイッチユーザーのふたりにひとりがスプラトゥーン2を遊んでいる計算になります。

今回はスプラトゥーン2関連のイカしたWEBサービスをまとめました。1

ブキとギア構成を探せる「イカクロ」

「イカクロ」はスミ・ソニアンさんが公開しているスプラトゥーン2のギア構成の投稿&検索サイトです。

ブキ毎に人気のギア構成を調べることができます。自分の使っているブキでは、流行りのギア構成をチェックしてみるといいかもですね。 ちなみにボクはヒッセン・スプラマニューバをメインで使っています。

www.ikaclo.jp

スプラユーザーを探せる「イカナカマ2」

スプラトゥーンの交流サービス「イカナカマ2 」です。Twitterアカウントで、スプラトゥーン2の仲間を見つけたり、チームを作って交流することができます。 前作のスプラトゥーンに引き続き、スプラトゥーン2にも対応されています。中の人はナカノイカ2さん

スプラトゥーン2はリーグマッチやローカルプレイなど、みんなで遊ぶモードもより強化されてますので、イカナカマ2でイカしたナカマを見つけれると、スプラトゥーン2がより楽しめること請け合いです。

ikanakama.ink

関東の企業が集まって対戦する「Splathon」

WEBサービスではありませんが、関東近郊の企業が集まって、企業対抗のスプラトゥーン大会「Splathon」が開催されています。 主催はデジタルコンサルティング・インターネットメディア事業をおこなっているspeeeです。 参加企業にはドワンゴ、CyberAgent、博報堂、シャープ、スクウェア・エニックスなど挙がっておりそうそうたるメンツです。

過去のSplathonの様子はこちら。楽しそうです。

tech.speee.jp

tech.speee.jp

ぜひ参加してみたいです。

Switchの在庫状況を通知する「nintendo-switch-checker」

ニンテンドースイッチはスプラトゥーン2の人気も相まって、品薄でなかなか手に入らない状況です。 スプラトゥーン2を遊びたいんだけど、ニンテンドースイッチ本体を手に入れるのに苦労しているあなた。 「nintendo-switch-checker」を使ってみてはいかがでしょうか。

nintendo-switch-checkerはニンテンドーSwitchの在庫状況を通知してくれるGolangで書かれたアプリです。 作者ははやぶささん

仕組みは、Google App Engine上で動かして、ニンテンドーストア、各家電サイトをクロールして、在庫情報を通知してくれるというものです。 通知はSlackとLINE Notifyに対応している模様。

まだSwitchをゲットできてない方はこちらを活用してみると、Switchがゲットできるかもしれません。

github.com

まとめ

スプラトゥーン2はまだまだ始まったばかり。アップデートは1年間。フェスは2年間にわたり開催予定と公式に発表されています。 イカしたWEBサービスを活用して、スプラトゥーン2をよりエンジョイできるといいですね。

ボクはガチマッチのウデマエS+を目指して頑張りたいと思います!

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

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

スプラトゥーン2 ザ・コンプリートガイド

スプラトゥーン2 ザ・コンプリートガイド


  1. ご紹介しているサービスは、すべて非公式のものになります。任天堂株式会社とは一切関係のないサービスです。

Google Apps Scriptでfreee APIのアクセストークンを取得する

f:id:tadaken3:20180325120255p:plain

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

前回はクラウド会計ソフトfreeeの概要とプログラマにfreeeをオススメする理由をご説明しました。 freeeはクラウド会計ソフトの中でもっともAPIが充実しているのがオススメの理由でした。

tadaken3.hatenablog.jp

今回は実際に、Google Apps ScriptでfreeeのAPIを利用する方法をお伝えします。今回は最初の一歩としてAPIを操作するために必要なアクセストークンの取得方法を解説します。

freeeのAPIを利用するには、法人プランの場合、ライト、ビジネス、エンタープライズ。個人プランの場合はスターター、スタンダード、プレミアムのいずれかを利用している必要があります。

freeeのAPIを利用するには

freeeのAPIはOAuth2.0というプロトコルに対応しています。オーオースと読みます。GoogleスプレッドシートからfreeeのAPIを利用するには、Google Apps Scriptを利用します。Google Apps ScriptでOAuth2.0の形式にのっとって、アクセストークンの発行を行ないます。

本記事ではOAuth2.0自体の詳しい説明はしませんが、ご興味がある方は以下の記事が参考になります。

murashun.jp

Google Apps ScriptでOauth2ライブラリを利用する

Google Apps ScriptでOauth2を利用するには、「apps-script-oauth2」ライブラリを利用します。 「apps-script-oauth2」はGoogleのエンジニアが作成したライブラリです。

https://github.com/googlesamples/apps-script-oauth2

ライブラリを利用するには、ツールバーの[リソース]->[ライブラリ]を選択して以下のIDを入力します。

プロジェクトキー 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF

f:id:tadaken3:20170731141636p:plain

最新のバージョンを選択して保存してください。本記事執筆時点ではバージョン21が最新です。

また、freee側にGoogle Apps Scriptをアプリとして登録する必要があります。その際にスクリプトIDが必要になるのでメモをしておきます。

スクリプトIDはスクリプトエディターのツールーバーの[ファイル]->[プロジェクトのプロパティ]から確認できます。

f:id:tadaken3:20170731141654p:plain

freeeにアプリの登録をする

freee APIを利用するアプリケーションをfreeeのWEBサイトから登録します。

登録により、アプリケーションのIDとSecretが発行されます。登録するためには会計freeeにログイン後、以下のサイトにアクセスします。

https://secure.freee.co.jp/oauth/applications

アプリケーション名、コールバックURIを入力し保存します。(入力内容は登録後にも編集できます)

アプリケーション名はお好きな名前を入力ください。サンプルでは「スプレッドシート」としています。

コールバックURIは先程取得したスクリプトIDを利用します。スクリプトIDの部分を変更して以下のURLを登録します。

コールバックURIhttps://script.google.com/macros/d/{スクリプト ID}/usercallback

f:id:tadaken3:20170731141713p:plain

保存を押すと登録が完了し、App IDとSecretが発行されました。こちらをメモしておきます。これで準備はすべてが整いました。

f:id:tadaken3:20170731141731p:plain

Google Apps Scriptをスプレッドシートに作成する

実際のスプレッドシートで動かすGoogle Apps Scriptのコードを作成していきます。以下のコードをスプレッドシートのスクリプトエディタに入力します。

//先程取得したAppID・Sceretを入力
var appId = "あなたのApp id";
var secret = "あなたのシークレット";

// 認証のエンドポイントとなるダイアログを表示します。
function alertAuth() {
  var service = getService();
  var authorizationUrl = service.getAuthorizationUrl();
  var template = HtmlService.createTemplate(
    '<a href="<?= authorizationUrl ?>" target="_blank">認証</a>. ' +
    '認証が完了したら再度操作を行ってください。');
  template.authorizationUrl = authorizationUrl;
  var page = template.evaluate();
  SpreadsheetApp.getUi().showModalDialog(page, "認証が必要です");
  Logger.log("認証が切れています");
}

//freeeAPIのサービスを取得
function getService() {
  return OAuth2.createService('freee')
      .setAuthorizationBaseUrl('https://secure.freee.co.jp/oauth/authorize')
      .setTokenUrl('https://api.freee.co.jp/oauth/token')
      .setClientId(appId)
      .setClientSecret(secret)
      .setCallbackFunction('authCallback')
      .setPropertyStore(PropertiesService.getUserProperties())
}

//認証コールバック
function authCallback(request) {
  var service = getService();
  var isAuthorized = service.handleCallback(request);
  if (isAuthorized) {
    return HtmlService.createHtmlOutput('認証に成功しました。タブを閉じてください。');
  } else {
    return HtmlService.createHtmlOutput('認証に失敗しました。タブを閉じてください。');
  }
}

//認証後、取得したアクセストークンを元にfreeeAPIからカンパニーIDを取得する
function getCompanyId() {
  var freeeApp = getService();
  var token = freeeApp.getAccessToken();
  var options =
   {
     "method"  : "get",
     "headers" : {"Authorization" : "Bearer "+ token}

   };
  var res = UrlFetchApp.fetch("https://api.freee.co.jp/api/1/companies",options);
  Logger.log(res)
}

Google Apps Scriptを動かしてみる

まずはalertAuthメソッドで認証をおこないます。alertAuthメソッドを実行するとスプレッドシートに画像にあるダイアログが出てきます。「認証」をクリックし、そのままfreeeのアカウントで許可をしてください。

f:id:tadaken3:20170731141753p:plain

許可するとアクセストークンが取得できるので、取得したアクセストークンを使ってfreeeのAPIを操作します。 サービスオブジェクトに対して、getAccessTokenメソッドを実行することでトークンが取得できます。

Point var freeeApp = getService();
var token = freeeApp.getAccessToken();

サンプルでは取得したトークンをもとにAPI経由でカンパニーIDを取得しています。 getCompanyIdメソッドを実行するとカンパニーIDがログに出力されます。

まとめ

今回は、Google Apps Scriptでfreeeのアクセストークンを取得する方法をお伝えしました。 まとめると

  • Oauth2ライブラリの利用方法
  • freeeのアプリ登録方法
  • Google Apps Scriptでのアクセストークン取得方法

になります。

これでGoogle Apps Scriptでfreee APIを操作する準備が整いました。次回もGoogle Apps ScriptでfreeeのAPIを操作するテクニックをお伝えしていきますね。どうぞ、お楽しみに!

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

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

フリーランスエンジニアにオススメの会計ソフト「Freee」で決まり!

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

クラウド会計ソフトはフリーランスや副業をしている方にとっても強い味方です。今回はクラウド会計ソフトの概要とオススメのサービスについてまとめました。

クラウド会計を利用して経理・決算業務をラクしちゃいましょう!

クラウド会計ソフトとは?

フリーランスや副業をする上で避けては通れない経理作業と確定申告。私たち日本人には納税の義務が課せられていますから、所得があるならば納税をしなければいけません。

事業に関係する日々出ていくお金と入ってくるお金を、会計的なルールに則って全て記録しておく必要があります。

そして年が明けますと年末までの記録を元にあれこれ計算をして確定申告書類を作成して税務署に提出をします。これが結構、大仕事です、

本来の仕事で忙しいのに、皆さんのための協力な味方がクラウド会計ソフトです。クラウド会計ソフトを使えば、煩雑な経理・確定申告業務が大幅に効率化できます。

クラウド会計ソフトのメリット

クラウド会計ソフトのメリットを具体的にご紹介します。

OS、端末を選ばない

従来型インストール型の会計ソフトの多くはWindowsにしか対応してなかったりします。ただエンジニア・デザイナーとして仕事している方のMacを使っている方も多いと思います。

一方でクラウド会計ソフトはネット上のサービスですので、OSや端末を選びません。ブラウザさえ使えれば、Windows以外のPCやタブレットなどからも利用することができます。

ネットバンクやクレジットカードのデータを自動で取得できる

ネットバンクやクレジットカードのデータを自動で取り込むことができます。細かい設定などは必要ですが、最初に登録しておけば、多くの取引を自動で処理することができます。

税法改正などにあわせて常に最新のバージョンが利用できる

従来型のインストール会計ソフトですと税法の快晴などに合わせて、最新版を購入し直さなければなりません。バージョンアップするたびに費用がかかります。平成31年10月には消費税法改正(8%→10%)も控えています。しかし、クラウド会計ソフトの場合は、月額またな年額の課金制ですので、常に最新版が利用できます。これは大きな魅力です。

クラウド会計ソフトはたくさんあるけど、結局どれがいいの?

「Freee」と「MFクラウド会計」「やよい会計オンライン」など多くの種類があります。とくに有名なのはクラウド会計ソフトの元祖「Freee」とマネーフォワードが提供する「MFクラウド会計」の2つです。「Freee」と「MFクラウド会計」を比較している記事はネット上でもたくさん見つかります。基本料金、使いやすさ、サポートの充実度を比較されています。

ただ、もしあなたが「プログラミングができる」もしくは「プログラミングに興味がある」というのであれば、ボクは「Freee」を圧倒的にオススメします。

www.freee.co.jp

Freeeは圧倒的にAPIが充実している

正直なところ、基本的なサービスは「Freee」も「MFクラウド会計」もそれほど大きな違いはありません。少なくとも経理処理をして、決算をすることは確実にできます。

では、なぜ「Freee」をおすすめするのでしょうか。

それはFreeeはWebAPIが非常に充実しているからです。

APIが充実しているのでプログラミングができれば、経理処理を自動化できます。例えば、エクセルやスプレッドシートで、細かい経費の管理をしているとします。Freeeであれば、VBAやGooogle Apps Scriptを使って、ボタン一発でFreeeに登録することができたりします。今のところ、仕訳データの記録や取得ができるのはFreeeだけです。(MFクラウド会計は請求書のみAPIが提供されています)

ほかにも、日々の売上データを取得してダッシュボードを作成し、経営分析を行なったりすることもできます。

Freeeが提供しているサービス以外の部分も、自動化したり機能を拡張していくことができるのです。開発者コミュニティも用意されていて、わからないことはFreeeの開発者に問い合わせることも可です。

また、APIが充実しているので、今後Freeeのデータを活用したサービスもたくさん生まれてくると予想されます。すでにAIでの経営分析のサービスを提供する会社もでてきました。

www.freee.co.jp

まとめ

今回はクラウド会計ソフトの概要とFreeeをなぜオススメするのかについてまとめました。 もし、あなたがエンジニア・デザイナーであれば、クラウド会計ソフトは「Freee」を利用されることを強くオススメします。

またこのブログでGoogle Apps Srciptとスプレッドシートを使って、Freeeを操作するテクニックをまとめていく予定です。

どうぞ、お楽しみに!

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

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

「新版 ひとり社長の経理の基本」を読めば経費の落とし方から決算・申告まで全部わかる

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

「新版 ひとり社長の経理の基本」は名前の通り、ひとり社長・フリーランスの方向けに書かれた経理・決算処理の本です。この本を読めば、経費の落とし方から決算・申告まで一通りすべてがわかります。

経理処理・決算・申告はどんな会社・就業スタイルでも避けては通れないので、一冊手元に置いておくと心強いでしょう。ボクはKindle版を購入し、常に持ち歩けるようにしました。

図解も豊富でとてもわかり易く、他の類書にはない特徴があります。

ITによる経理の効率

本書が他の経理・決算・申告の本と大きく異なるポイントは、日々の経費処理の時間をできるだけ短縮できるようITを徹底的に活用しているところです。 EXCELや会計ソフト、ネットバンクやWEBサービスの具体例が豊富です。

例えば、ネット上で手続きをして、請求書を郵送できる「Misoca」などを具体的なサービス名を上げなら、効率化のテクニックが紹介されており、経費処理の時間を大きく削減できます。Misocaはボクも利用しています。

経理業務の本質は?

本書では、経理処理の時間を削減して経理の本質的なことに時間を割くことが大事であると述べられています。

経理の本質とは何なのでしょうか?

本書の中で「経理」以下のように定義されています。

経理とは、「経営管理」の略称であり、経営の舵取りを手助けするものであり、決して、作業などではありません。

経理は決して単調な作業ではなく、経営の舵取りを手助けするものとしています。経理を理解することで、

  • 資金繰りの不安を減らし、早めに対応できる
  • 業績管理ができ、経営の次の一手やコスト削減を考えられる

のようなメリットが出てきます。経営分析をする際のポイントも解説されています。

経理の観点からも好きなことを仕事にしよう

本書の中で、こんな一文があります。

好きな仕事をしていれば、好きなものを経費に落とせます。IT好きなひとり社長がいらっしゃるのですが、ITに関する仕事をされ、それに関する経費を落とすことができています(私も好きな分野の本を好きなだけ買っていますし、好きな分野のセミナーにも行っていますし、好きなIT機器を買っています。)

この考え方は節税にもつながりますし、事業を拡大するヒントにもなり、とても素敵な視点だと感じました。

たとえば、著者の井ノ上さんは趣味でトライアスロンをされているのですが、レース出場や機材購入の費用は、仕事とは関係ない趣味なので、もちろん経費にはできません。

しかし、トライアスロンの本を書いた場合は事情が変わります。趣味であったトライアスロンが仕事となり、それらは経費になる可能性があるのです。好きなことを仕事にしたことで、結果、収入の幅が広がり、節税にもつながる。ひとり社長ならではできる事業拡大の手法だなと思いました。

ボクも早速プログラミングやブログ運営に関わる費用は経費として処理するようにしました。

著者の井ノ上さんご自身もひとり社長の税理士さん

著者の井ノ上さんは税理士として、独立されており、井ノ上さんご自身もまさにひとり社長です。井ノ上さんはブログ「EX-IT|雇われない雇わない生き方」の運営もされていて、このブログからの仕事の受注も多いそうです。

www.ex-it-blog.com

ひとり社長の経験がある井ノ上さんだからこそ、ひとり社長・フリーランサーが悩んでいるであろう将来の不安や健康管理についても、井ノ上さんの経験を踏まえて、本書ではズバッと解決策が提示されています。

他にも参考になる考え方や視点が多々あります。IT機器を購入記録なども!

著者の雰囲気が知りたい方はブログをご覧になるのもいいかと思います。

まとめ

経理処理・決算・申告の仕事はどんな会社や就業パターンでも必ず必要であり、経費精算から決算・申告までの経理のパターンはおおよそ決まっています。この本を読んで一度身につければ、長きに渡って使える知識となるはずです。それは副業でも変わりありません。

本書で紹介されている事例がそのまんますべて当てはまるわけではないかもしれませんが、基本的な考え方は副業フリーランサーの方にも通じるところが多いです。

ぜひ、本書を読んで、経理作業を経営管理にギアチェンジしていきましょう!

新版 ひとり社長の経理の基本

新版 ひとり社長の経理の基本

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

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

『Google流資料作成術』はデータを使ってビジネスを改善したい人の必読書です

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

今回はデータ分析に関するとてもためになる本を見つけたのでご紹介します。

本のタイトルは「Google流資料作成術」です。

データ分析の本ではあるのですが、「Excel」や「Googleスプレッドシート」といった表計算ソフトや統計処理の手法は一切載っていません。一体なぜなんでしょうか。それはこの本が「データを使って、いかに人を動かすか」について書かれた本だからです。

ちなみに、原題は「Storytelling with data」です。日本語のタイトルだと、「データ分析」関連の本かどうかわかりにくいですね。ちょっと日本語のタイトルで損している本だと思います。

何のためにデータを分析するのか

普段、本ブログではプログラミングや副業についてのブログを書いているのですが、本業はデータアナリストとして仕事をしています。

突然ですがデータ分析の価値ってなんだと思います?
そもそも何のためにデータを分析するのでしょうか?

  • 上司に言われたから?
  • データがあるからとりあえず?
  • 難しい統計手法を使ってみたいから?今だとディープラーニングとか流行ってますね。

僕はどれも違うと思います。「データ分析から知見を得て、ビジネスや仕事をよりよい方向に改善していく」ことが分析の価値だと考えています。

レポートを作ること自体が目的化してしまって、レポートを作って「はい終わり」とならないよう「データ分析は相手に伝わって、アクションを変えてこそ価値がある」ということは常に意識しています。これはブログも同じですね。(まだまだ完璧にできているわけではないので日々精進です)

とはいえ、データやグラフに苦手意識を持っている人も少なくないのが事実です。僕も、データ分析はしたけど、結果につながらないことも多々経験しました。

データ分析の中には、データを美しく可視化するデータビジュアライゼーションという分野もあり、データ可視化専用のソフトまであったりします。グラフをただ美しくオシャレにすればいいわけではなく、やはり伝えることが重要であることはかわりありません。

データからアクションにつなげる。相手にわかってもらう資料を作る

この本で書かれているのは、データやグラフに対して苦手意識がある人にも抵抗なく、データで伝えたいことを理解してもらえうにはどうすべきかという一点です。この一点を達成するためのテクニックが、これでもかと紹介されています。

いかに読み手の負担を減らすか、一瞬でわかってもらえるにはどうすればいいのか、そのことを突き詰めた考えが載っていてとても参考になります。

本を読む前の資料

ひとつ例を紹介します。顧客セグメントの分布のデータがあるとします。普通に作るとこういう感じの資料になるのではないでしょうか。

f:id:tadaken3:20170711132058j:plain

これはこれで特に違和感はないのですが、突き詰めて考えると、このデータで言いたいことは、「自社の顧客はセグメントC・D・Eが50%を占める」に集約されるのではないでしょうか。

本を読んだ後の資料

そこで本で紹介されているエッセンスを応用して、グラフを作り直すとこうなります。

f:id:tadaken3:20170711132110j:plain

いかがでしょうか。どちらのグラフもExcelで作成しているのですが、本の内容を参考にしたグラフのほうが、だいぶわかりやすくいと感じられるのではないでしょうか。

この本のエッセンスを学べば、今あげた例のように「あなたの上司に一瞬で理解してもらえるレポート」を作れるようになります。具体的な内容については、ぜひ本を手にとって確認してみてください!

まとめ 

この本にかかれているのは

  1. データによって何を伝えたいのかきちんと考える
  2. データからわかったことをわかりやすく伝えるにはどうすればいいのか

です。言われてみれば当たり前のことになります。ただ当たり前のことですが、筆者はものすごい熱量で考えていますし、それが著書からひしひしと伝わってきます。

筆者は5年間Googleに在籍し、「ビジュアライゼーション」の講座を担当していた方で、「ひどいパワーポイントを世界からなくすために」この本を書いたそうです。

本書を読めば、きっと資料作成のレベルが一段アップすること間違えないです。そして、きっと資料作りが楽しくなります。ぜひ、お手にとって読んでみてください!

Google流資料作成術

Google流資料作成術

  • 作者: コール・ヌッスバウマー・ナフリック,村井瑞枝
  • 出版社/メーカー: 日本実業出版社
  • 発売日: 2017/02/16
  • メディア: 単行本
  • この商品を含むブログを見る

この書評を見て、THE GUILDのAndoさんもコメント

2018年9月29日に追記

THE GUILDAndoさんもおすすめしています。

最後に少しお願いです。

ここまで読んでいただきありがとうございます。

最後にあなたに少しお願いがあります。この記事が少しでも役に立った、気付きがあったという方は、ぜひこの記事をTwitterにシェアしていただきたいです。

はてなブックマークをしていただく形でも大丈夫です。コメント付きだと、もっと嬉しいです。

ぜひ、よろしくお願いいたします。

Javascriptで作るMacアプリ!JXA入門編

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

Macユーザーのあなたに業務効率化のテクニックをお伝えします。Mac OSはYosemite以降であれば、なんとjavascriptでMacの自動操作ができるんです。通称JXA(javascriprt for Automition)といいます。今回はJavascriptでMacを操作するJXAをご紹介します。JXAは簡単なMacアプリも作れてしまいます。

JXAで何ができるの?

具体的にJXAでどんなことができるのでしょうか。例えば以下の様なことができます。

  • MailやiTunesなどMac標準のアプリを操作
  • ファイルやFinderの操作やMac自体の設定変更
  • EvernoteやChrome、Adobe PhotoshopなどApple以外のアプリも操作可能

複数のアプリを組み合わせて、ちょっとした作業を自動化する自分だけのアプリが作れるのです。例えば、ある画像ファイルをMailとEvernote両方に保存するアプリやiTunesのタイマー起動するアプリなどが作れます。基本はjavascriptなので、学習コストが低いこともメリットです。デザイナーの方でもjavascriptなら普段のWEB制作でも触れることは多いと思いますので、応用できますね!

JXAでアプリを作ってみよう

ではさっそくJXAでアプリを作っていきましょう。JXAを使うには「スクリプトエディタ」を使います。「Lancepad」の中の「その他」を開いてください。

f:id:tadaken3:20170708133953j:plain

その他を開くと中に「スクリプトエディタ」があります。スクリプトエディタを立ち上げてみましょう。

f:id:tadaken3:20170708134004j:plain

スクリプトエディタが立ち上がりましたね。

早速JXAを書いていきましょう!と言いたいところなんですが、ひとつ注意があります

スクリプトエディタでは、JXAの他にAppleScriptを書くことができます。Macの自動操作はもともとAppleScriptが標準だったのですが、Yosemite以降Javascriptにも対応し、JXAが使えるようになりました。両方に対応しているため、どちらのスクリプトを書いているのか明示する必要があります。

といってもとても簡単です。メニューバーの左上の部分を「javascript」に変更するだけです。

f:id:tadaken3:20170708134032j:plain

これで準備はオッケーです。早速スクリプトを書いて、アプリを作っていきましょう。

Macに入っているアプリを呼び出すには以下のように書きます。

Point var app = Application("アプリ名");

Macのシステムイベントを呼び出して、ダイアログにメッセージを表示させてみましょう。

//Macのシステムイベントを呼び出す
var sys = Application("System Events");

//StandardAdditionsという命令の集合があります。
//displayDialogがStandardAdditionsに含まれているため、機能をオンにします。
//最初はおまじないみたいなものと思ってください
sys.includeStandardAdditions = true;

//ディスプレイにダイアログを表示させる命令です。
sys.displayDialog("君はすごいフレンズなんだね");

できましたでしょうか。アプリとして保存するには、保存時にファイルフォーマットを「アプリケーション」に変更します。デスクトップにHello.appと保存してみてください。

f:id:tadaken3:20170708204529j:plain

ダブルクリックするとアプリが起動して、ダイアログが表示されます。簡単です!

f:id:tadaken3:20170708203611p:plain

ファイルをドラッグ&ドロップすると定型メールを作成するアプリを作ろう

次は実践的なアプリのサンプルをご紹介します。フリーランスで仕事をしていると定期的に成果物をメールで送信する必要があります。たいした作業ではないのですが、毎日のことなので自動化できるとトータルで結構な作業時間の短縮になります。

ファイルをドラッグ&ドロップしたら、定型的なメールを作成するアプリを作りましょう。

以下のコードをスクリプトエディタに打ち込んでみてください。contentの部分とadressの部分を自分が送りたい相手先に変更してください。

openDocumentsの部分で、ドラッグ&ドロップされたファイルを受け取り、createEmailの部分でメール本文を作成しています。スクリプトの詳細は、次回ご説明しますね。

//openDocumentsでドラッグ&ドロップされたファイルを受け取る
function openDocuments(docs) {
    //件名を今日の日付に設定する
    var today = new Date();
    var month = today.getMonth() + 1;
    var date = today.getDate();
    var subject = month + "月" + date + "日の成果報告";
    
    var content = "tadaken3さん\n\n" + "本日の作業分です、ご確認ください。\n\n";
    var address = "tadaken3@hogehoge.com";//宛先のアドレス
    
    //件名、アドレス、本文、ファイルをもとにmailを作成する
    createEmail(subject,address,content,docs);
    }

function createEmail(subject,address,content,docs){
    var Mail = Application("Mail");//Mailアプリを呼び出す
    var msg = Mail.OutgoingMessage({
        subject: subject, //タイトル
        content: content, //本文
        visible: true
    });
    Mail.outgoingMessages.push(msg)
    var rec = Mail.ToRecipient({
            address : address   // 送信先を指定
    });
    msg.toRecipients.push(rec); 
    
    //ファイルを添付する
    for (d in docs) {
        var attachment = Mail.Attachment({fileName: docs[d]});
        msg.characters.push(attachment);
    }
        
    Mail.activate();  
}

先程と同様にアプリケーションとして保存しましょう。アプリ名はautoMailer.appとしました。 デスクトップにアプリができましたね。

f:id:tadaken3:20170708210314j:plain

作成したアプリに成果物のファイルをドラッグ&ドロップすると、、、

f:id:tadaken3:20170708210419j:plain

添付ファイル付きのメールが自動で作成されました。確認して送付すればオッケーですね!

まとめ

今回はJXAの最初の一歩として

  • スクリプトエディタの使い方
  • アプリの作成方法

をお伝えしました。Macユーザーには心強い味方ですね。Javascriptで書けるのもとても魅力的です。次回もJXAの実践的なテクニックについてお伝えしますね。

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

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

サイトやブログにチャットボットを簡単導入!プログラミング不要で使える「Fobi.io」が熱い

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

今回は、プログラミン不要でチャットボットを作れる「Fobi.io」をご紹介します。

「Fobi.io」は「Googleフォーム」をチャットボットに変換してくれるサービスです。Fobi.ioを使えば、お問い合わせに対応する「チャットボット」をあなたのサイトやブログに簡単に無料で導入できます!

導入まではわずか3ステップ!早速、実践していきましょう。

  1. Googleフォームで問い合わせ内容のベースを作成
  2. fobi.ioでGoogleフォームをチャットボットに変換
  3. チャットボットのURLをブログやSNSに貼る

Googleフォームを用意しよう

まず、Googleフォームを使った「問い合わせフォーム」の使い方を簡単にご説明します。「Fobi.io」ではフォームの質門をベースにチャットボットが作られます。

すでにGoogleフォームを使ったことがある方はこの部分は飛ばしてもらっても大丈夫です。 Googleフォームの詳しい作成方法はこちらの記事も参考になります!

tonari-it.com

では早速フォーム画面を作成しましょう。Googleフォームのページにアクセスします。「フォームを使う」をクリックします。画面がでてきたら、右下にあるボタンをおして新しいフォームを作成しましょう。

f:id:tadaken3:20170706101900p:plain

フォームの編集画面に移動するので質門を追加していきましょう。

f:id:tadaken3:20170706101941p:plain

作成したフォームはこんな感じです。

f:id:tadaken3:20170706102100p:plain

フォームが完成したら「送信」ボタンをクリック!

f:id:tadaken3:20170706102123p:plain

リンクが生成されるので、「コピー」ボタンをクリックして保存します。

f:id:tadaken3:20170706102138p:plain

チャットボットを作ろう

Fobi.io」を使って、Googleフォームをチャットボットに変換してみましょう!方法はとても簡単です。

先ほど作成したフォームのリンクリンクを、「Fobi.io」のトップページに貼り付けます。

f:id:tadaken3:20170706102328p:plain

すると、フォームの内容が読み込まれます。

f:id:tadaken3:20170706102417p:plain

チャットボットの内容を作成しましょう。囲んである部分でBOTのトップページに表示されるメッセージを変更します。内容を変更しても、Googleフォーム自体が上書きされることはないので、ご安心を。

f:id:tadaken3:20170706102454p:plain

次にチャットボットの応答部分を作成していきます。質門をチャットボットっぽく変更しましょう。「Bot Response」の部分で回答メッセージを設定できます。選択肢の場合は、選択項目ごとに回答メッセージが設定できます。

f:id:tadaken3:20170706102516p:plain

すべて設定できたら「SAVE BOT」ボタンをクリックします。

f:id:tadaken3:20170706102533p:plain

チャットボットのURLが発行されます!あとはURLをブログに貼ったり、Twitterで共有するだけです!

f:id:tadaken3:20170706105457p:plain

チャットボットをテストしてみよう

作成したチャットボットを試してみしょう。URLにアクセスするとチャットボットの画面が表示されます。先ほど作成したメッセージが表示されてますね。「Let’s Go」をクリックします。

f:id:tadaken3:20170706102827p:plain

チャットとの応対が始まりました。

f:id:tadaken3:20170706102853p:plain

スマホでみた場合はこんなふうになります。きちんとスマホにも最適化されてますね。

f:id:tadaken3:20170706102907p:plain

回答データは、自動的にGoogleフォームで集計されます。スプレッドシートと連携している場合は、スプレッドシートにも記録されます。便利ですね。

まとめ

今回はGoogleフォームで簡単にチャットボットが作れる「Fobi.io」の使い方をご説明しました。チャットボットで簡単に問い合わせできるようにしておくと、ブログへの問い合わせが増えるかもしれませんね。

  1. Googleフォームで問い合わせ内容のベースを作成
  2. fobi.ioでGoogleフォームをチャットボットに変換
  3. チャットボットのURLをブログやSNSに貼る

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

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

月末日や最終金曜日に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などのクラウド会計サービスもありますので、これらを活用する手もあります。規模が大きくなったら税理士さんにお願いすることを視野に入れてもいいと思います。

平日しかやっていない

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

まとめ

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

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

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