タグ

ブックマーク / tonari-it.com (35)

  • App Makerがなぜ簡単にアプリを開発できるのか、その秘密を紐解く

    App MakerでCloud SQLをデータベースとした簡単なアプリを作成しました。 これで完成! というわけなのですが、なぜこんなにドラッグ&ドロップだけでアプリが作れちゃうと思います? それは、デフォルトでアプリとして機能するように、色々な工夫が仕込まれているからなんですね。 すなわち、「バインディング」と「イベント・アクション」です。 ということで、今回はApp Makerがなぜ簡単にアプリを開発できるのか、その秘密を紐解いていきます。 では、行ってみましょう! 前回までのおさらい 前回までで作成したアプリを題材に進めますので、紹介しておきましょう。 作成したアプリは「従業員データ」を追加、編集するアプリです。 モデルはCloud SQLモデルを使用していて、以下のような構成になっています。 また、そのモデルのデータをテーブル表示するページ「TablePage」を作成しました。 デ

    App Makerがなぜ簡単にアプリを開発できるのか、その秘密を紐解く
    kabacsharp
    kabacsharp 2019/11/04
    “以上、App Makerがなぜ簡単にアプリを開発できるのか、その秘密を紐解いてまいりました。 デフォルトの機能として、バインディングとイベント&アクションが随所に仕込まれているというのが、ポイントです。”
  • 【はじめてのfreeeAPI】GASでリクエストを送り事業所情報を更新する

    今回のテーマは「データの更新」です。「データの取得」に比べると少し作業量が増えますが、丁寧に解説していきますので、一緒に操作しながら試してみてください。 データ更新のお題「事業所情報を更新する」を通じて、これらの練習をしてみます。 GASでfreeeにリクエストを送り、直接freeeのデータを更新する リクエストするデータの作り方(JSON形式)を理解する 画面操作ではなく、API操作でデータを更新する流れをみていきましょう! (この記事はfreee株式会社さまとのコラボ企画です。シリーズを通して、皆さんの働くの価値を上げられるよう皆さまをサポートしていきます!) (前回のおさらい)事業所IDの確認 前回の記事では、GETリクエストで事業所一覧を取得して「事業所ID」を確認しました。 ※今回のお題「事業所情報を更新する」で「事業所ID」を使用しますので、事業所情報を未取得の方は、まず前回の

    【はじめてのfreeeAPI】GASでリクエストを送り事業所情報を更新する
    kabacsharp
    kabacsharp 2019/06/27
    PUTリクエスト初めて見たー。ペイロードで渡すんだ“UTリクエストは「データの更新」なので、更新したい「データ」を送る必要があります。 封筒に「データ」を入れて送り、処理の結果を返送してもらうイメージです。”
  • ノンプログラマーがプログラミング独立して4年経つとどうなるのか?

    みなさん、こんにちは! タカハシ(@ntakahashi0505)です。 独立してから4年が経ちました。 この6月から、弊社プランノーツは5期目に入っております。 6/16が起業した日なのです。

    ノンプログラマーがプログラミング独立して4年経つとどうなるのか?
    kabacsharp
    kabacsharp 2019/06/26
    “今期のテーマ さて、それを受けての今期のテーマですが、もう私の時間リソースの使い道は、うっかり決まってきてしまっているので、その配分を変えるというのはあまりできません。 では、どうするか…?”
  • ノンプログラマーがなぜAPIを知り、使いこなす必要があるのか?

    みなさん、こんにちは! タカハシ(@ntakahashi0505)です。 「ノンプログラマーのためのスキルアップ研究会」は、ノンプログラマーがプログラミングをはじめとするITスキルを学び合うコミュニティです。 VBAやGASなどのプログラム言語はマスターすればそれだけでも様々なことが実現できますが、APIを通して他サービスと連携をさせることで、さらにその活用の幅を広げることができます。 先日開催された、ノンプロ研の定例会「ノンプログラマーのためのAPIとその活用」では、その中で特にAPIに力を入れていらっしゃる企業さまから、freee株式会社の前村さん、Chatwork株式会社の小西さんにお越しいただきまして、お話をうかがうことができました。 この記事はそのレポートになりますよ! ちなみに当日の様子は以下、Togetterのツイートまとめもご覧くださいませ。

    ノンプログラマーがなぜAPIを知り、使いこなす必要があるのか?
    kabacsharp
    kabacsharp 2019/06/23
    “ノンプロ研の定例会「ノンプログラマーのためのAPIとその活用」では、その中で特にAPIに力を入れていらっしゃる、freee株式会社の前村さん、Chatwork株式会社の小西さんにお越しいただきまして、お話をうかがう”
  • 【はじめてのfreeeAPI】GASとfreeeをつなぐ!連携認証の手順を一から紹介します

    今回の記事では、「GASとfreeeを連携する手順」を一からやさしく紹介していきます。 下記図の赤枠部分、スプレッドシート(GAS)とfreeeをつなぐ「橋」を構築するイメージです。 所用時間は15~30分ほどですので、実際に操作してみながらお付き合いください。少しばかり時間はかかりますが、この記事で連携作業を済ませてしまえば、今後色々なfreeeの作業を自動化できますよ! 画面キャプチャ・説明盛りだくさんでお届けしますので「”今この瞬間のひと手間” が ”将来の自分” をラクにする」と考えて頑張っていきましょう! (この記事はfreee株式会社さまとのコラボ企画です。シリーズを通して、皆さんの働くの価値を上げられるよう皆さまをサポートしていきます!) (前回のおさらい)freee APIとは freee APIとは、GASなどのプログラミング言語でfreeeを操作する仕組みです。 「外部

    【はじめてのfreeeAPI】GASとfreeeをつなぐ!連携認証の手順を一から紹介します
    kabacsharp
    kabacsharp 2019/06/21
    GASとfreeeの連携がとれると便利そう。GMailやChatWorkとも連携可!“今回は「freeeマイアプリ」がポイントでしたね。「freeeマイアプリとは、GASとfreeeをつなぐためのアプリである」くらいのふんわりとした理解で大丈夫です。”
  • vbacでエクセルVBAのソースコードをGitバージョン管理する方法 | 隣IT

    みなさん、こんにちは! そろそろチームプレイも試したいタカハシ(@ntakahashi0505)です。 以前これらの記事で非エンジニアのための初心者向けGitバージョン管理や、Gitバージョン管理に便利なSource Treeの使い方についてお伝えしてきました。

    vbacでエクセルVBAのソースコードをGitバージョン管理する方法 | 隣IT
    kabacsharp
    kabacsharp 2019/05/25
    “非エンジニアのための初心者向けGitバージョン管理や便利なSource Treeの使い方お伝えしてきました。 ただね、エクセルVBA。 xlsmファイルは、差分をとることができません。 今回は、vbacというツールを使ってテキスト”
  • App Makerでスプレッドシートをベースにモデルを作成する方法

    みなさん、こんにちは! タカハシ(@ntakahashi0505)です。 Googleが提供する社内アプリケーションを簡単に構築できるプラットフォームApp Makerをご存知ですか? その最大の魅力はドラッグ&ドロップで、フォームやテーブルといったUIを作成できる点です。 また、そしてGASベースなのでそれを経由して様々なGoogleアプリケーションと連携できる点も大きな特徴です。

    App Makerでスプレッドシートをベースにモデルを作成する方法
    kabacsharp
    kabacsharp 2019/05/14
    “残念ながらGoogleドライブ上に作成できるデータベース「Data Tables」が使用できなくなり、DBはハードルが上がってしまいました。 そこを解消するのが、「スプレッドシートをApp MakerのDBとして使用してみよう!」です。”
  • 【QUERY関数】group by句で複数の列をグループ化して集計する

    前回までのおさらいもかねて、40人の生徒表をサンプルに使用して、列の項目ごとの人数を集計してみます。 1つの列でグループ化する group by句を使用して、列ごとの人数をカウントしてみましょう。 性別ごとの人数 血液型ごとの人数 まずは性別ごとの人数を求めてみます。B列「性別」でグループ化して人数をカウントする記述です。 =query(A:C,"select B,count(B) where B is not null group by B",1) つぎに、血液型ごとの人数を求めます。C列「血液型」でグループ化して人数をカウントする記述です。 =query(A:C,"select C,count(C) where C is not null group by C",1) このように、1つの列のみをグループ化する記述の場合、「性別」または「血液型」のいずれかしか求めることができません。 g

    【QUERY関数】group by句で複数の列をグループ化して集計する
    kabacsharp
    kabacsharp 2019/05/11
    query関数強力やな。 “group by句を使用して、列ごとの人数をカウントしてみましょう。 性別ごとの人数 血液型ごとの人数 まずは性別ごとの人数を求め”
  • エクセルVBAで実行時間を手軽に測定するTimerObjectクラスを作る

    これを、クラス化して使い回しをしやすくしよう!というものです。 そのコードを以下に再掲しますね。 Sub MySub() Dim start As Date: start = Time Sheet1.Cells.Clear Sheet2.Cells.Clear With Application .Calculation = xlCalculationManual .EnableEvents = False .ScreenUpdating = False End With With Sheet1 Dim i As Long For i = 1 To 300 .Cells(i, 1).Value = i .Cells(i, 2).FormulaLocal = "=SUM(A1:A" & i & ")" .Rows(i).Copy Sheet2.Cells(i, 1).PasteSpecial

    エクセルVBAで実行時間を手軽に測定するTimerObjectクラスを作る
    kabacsharp
    kabacsharp 2019/05/05
    “タイマーに関する変数と処理をTimerObjectクラスに渡すことができたので、気持ち的にはかなりスッキリしたのではないでしょうか。”
  • エクセルVBAでIEを操作するクラスでWebページを開くメソッドを追加する | 隣IT

    IEを操作するクラスIEObjectを作成しました。 …が、まだ機能としては何もないような状態なので、パワーアップしていきますよ。 まずは、今回はURLを指定してWebページへのアクセスする機能を実装していきます。 エクセルVBAでIEを操作するクラスでWebページを開くメソッドを追加するです。 では、行ってみましょう! 前回のおさらい では、前回のおさらいからです。 まず、IEを操作するクラスIEObjectはこちら。 Public IE As InternetExplorer Private Sub Class_Initialize() Set IE = New InternetExplorer End Sub はい、シンプルですね。 今は以下の機能だけを持っています。 パブリック変数でInternetExplorerオブジェクトを持つIEプロパティを宣言 コンストラクタで、その変数に

    エクセルVBAでIEを操作するクラスでWebページを開くメソッドを追加する | 隣IT
    kabacsharp
    kabacsharp 2019/04/07
    “以上、エクセルVBAでIEを操作するクラスでWebページを開くメソッドを追加する方法をお伝えしました。 簡単ですね! そして標準モジュールがシンプル。”
  • コミュニティ連携型!ノンプロ向けプログラミング講座&技術ライティング講座開講のお知らせ

    「ノンプロ研プログラミング講座」とは 「ノンプロ研プログラミング講座」とは、講座に加えてコミュニティへのご参加もいただくことで、個人でのプログラミング学習では、「あるある」の課題となりがちの以下をスッキリ解決するというものです。 受講料が高い 受講後の学習の継続ができない 行き詰まったときに一人で解決できない コミュニティ「ノンプログラマーのためのスキルアップ研究会」(通称ノンプロ研)と連携しているという点が大きな特徴となっています。 そのおかげで、以下のようなメリットがあると考えています。 コストが安い コミュニティの活動で過去蓄積された動画などを活用して事前学習にのぞんでいただきます。 プログラミングの心構えや、仕様、環境準備など、独学でクリアできる部分は動画にて学習をいただきます。 また、継続してコミュニティを利用されるであろう期待値もあるため、講座単体で大きな利益を出さずとも良いと

    コミュニティ連携型!ノンプロ向けプログラミング講座&技術ライティング講座開講のお知らせ
    kabacsharp
    kabacsharp 2019/03/19
    “リモート参加・動画およびスライドのアーカイブ どうしても都合が合わないなどのときのために、同時配信によるリモート参加や、後日アップロードされる動画およびスライドによる学習が可能となっています。”
  • コミュニティに入って自分で薪を割ろう!その価値はマジで高いよという話

    「自分で薪を割る」とは? その前に、「自分で薪を割る」というワードについて補足しておきます。 自分で薪を割れ、二重に温まる。 これは、「自動車王」とも呼ばれたフォード・モーター社の創業者、ヘンリー・フォードの言葉です。 コミュニティでは月額会費をいただいているので、「サービスを受けられる」と勘違いされている方もいらっしゃるかもなのですが、実はそのスタンスは損です。 自分が言い出しっぺになったり、イベントを企画・運営したり、手伝ったり、登壇したり…そういう機会を率先して作って動いたほうが、得られる価値がとても大きくなります。 今回の定例会イベントでは、そういったことを、ノンプロ研代表のきのぴぃさんと、ノンプロ研卒業生代表の谷口孔陛(たにぐちこーへい)さんとにそれぞれお話いただくという…コミュニティ運営者冥利につきる会でございました。 自分で薪を割ってごはんをべるとうまい 先鋒は谷口さんから

    コミュニティに入って自分で薪を割ろう!その価値はマジで高いよという話
    kabacsharp
    kabacsharp 2019/03/17
    “「出し惜しみをしない」という点。 いい仕事をすれば、次の仕事につながる…実際にそれが体現されているのだそう。”
  • Windowsのポチポチ業務を爆速化するPowerShell、elseifで日付の元号を判定する方法 | 隣IT

    元号を判定するには日付が以下のどの範囲にあるのかを判定すればOKです。 変換対象の西暦の日付を「1930/1/1」とします。 この日付は昭和の開始日「1926/12/25」~平成の開始日「1989/1/8」の間にある→「昭和」と判定できますね。 和暦を計算する 続いて和暦の計算方法です。 元号が昭和と判定できたら、昭和の開始年1926から対象日付1930まで何年間かを計算すればOKです。 1930 – 1926 + 1 = 5年 つまり正解は「昭和5年」になります。 関数の処理の流れはここまで見てきたとおり 「元号の開始日と対象の日付を比較し、元号を判定」→「判定できた元号の開始日を、対象の日付から引いて、さらに1を足す」 となります。 まずは「元号の判定」をPowerShellで実現していきますよ。 elseifステートメントの使用方法 元号の特定には複数の条件判定が必要 日付「1930

    Windowsのポチポチ業務を爆速化するPowerShell、elseifで日付の元号を判定する方法 | 隣IT
    kabacsharp
    kabacsharp 2019/03/05
    “人間は一瞬で元号を判定できますが、コンピュータで判定するには複数の条件を判定する必要があります。 このような複数の条件を判定するにはelseifステートメントを使います。”
  • 【祝!ブログ4周年】これまでのPV・収益・依頼件数について晒しつつ今後を考えます | 隣IT

    みなさん、こんにちは! タカハシ(@ntakahashi0505)です。 うっかりしていたのですが、弊ブログはこの2月で4周年を迎えました! 毎年恒例となりつつあるのですが、PV・広告収益・依頼件数など、ブログの実績報告をさせていただきますね。 では、行ってみましょう! 4年間のブログの実績 PV推移 ブログの開始は2015年2月。 そこから4年間。2019年2月までのブログのPV推移と記事数はこちらです。 直近10月くらいまで順調に伸びていたのですが、そこから100万PVを手前に少し停滞している感じですね。 2019年2月は、月間902,694PVの累計1,227記事でした。 まあ上出来ですよね。 昨年の2月は、862記事、667,961PVだったとのことで、パートナーの皆さんもかなり更新いただいていますし、総じて頑張りました。 広告収益の推移 はい、皆さん大好き、お金の話です。 ブログ

    【祝!ブログ4周年】これまでのPV・収益・依頼件数について晒しつつ今後を考えます | 隣IT
    kabacsharp
    kabacsharp 2019/03/04
    ”プログラミングスキルも大事なのですが、「伝えること」や「教えること」ってもしかすると、それ以上に大事なので"
  • GASでselfを使って関数の中からインスタンスを表すthisを使えるようにする方法 | 隣IT

    つまり、コンストラクタ直下もしくはメソッド直下であれば、そのインスタンスを表すわけですが、その内部に含まれる関数の中に入ってしまうと、thisはグローバルオブジェクトになっちゃうというわけです。 なので、そもそもグローバルオブジェクトには「a01」とか「a02」といったプロパティが存在していないので、未定義つまりundefinedとなってしまうというわけです。 thisがグローバルオブジェクトを指していることを確認 では、forEachメソッドの関数内のthisがグローバルオブジェクトを指していることを確認してみましょう。 グローバル領域に以下のような、ステートメントを書いておきます。 this.a01 = 'hoge'; this.a02 = 'fuga'; this.a03 = 'foo'; これで、グローバルオブジェクトのa01やa02はundefinedではなくなります。 続いて、

    GASでselfを使って関数の中からインスタンスを表すthisを使えるようにする方法 | 隣IT
    kabacsharp
    kabacsharp 2019/03/01
    “ダメですね。 「undefinedのメソッド「log」を呼び出せません。」というエラーが出て”
  • 【エクセルVBA】入力規則のドロップダウンリストを複数連動させる方法 | 隣IT

    例えば、B2セルのドロップダウンリストから「いちご」を選択したら、G列に「いちご」を持つH列の「佐賀」「福岡」「栃木」という文字列をC2セルのドロップダウンリストに表示させる、という場合です。 文字で見てみるとちょっと難しそうに思えてしまうかもしれませんが、やることをステップに分けて考えればそこまで難しくありません。 下記4ステップでコードを作ってみましょう。 Worksheet.Changeイベントで、B2セルのドロップダウンリストが選択されたことをキャッチ B2セルで選択された文字列とマッチする値を持っているセルをG列から検索してG列と同じ行のH列の値をJ列に書き出し J列の検索結果を書き出した範囲を、名前付き範囲として定義 C2セルのドロップダウンリストの値に、J列の名前付き範囲をセット Worksheet.Changeイベントでドロップダウンリストの変更をキャッチする さて、B2セ

    【エクセルVBA】入力規則のドロップダウンリストを複数連動させる方法 | 隣IT
    kabacsharp
    kabacsharp 2019/02/28
    “この通り、B2セルのドロップダウンリストで選択した値に応じて、C2セルのドロップダウンリストに検索結果がセットされていますね。”
  • Google Apps Scriptでオブジェクトに直接追加しているプロパティだけループする方法 | 隣IT

    自作オブジェクトについてプロパティを追加したり削除したりするメソッドの作り方をお伝えしました。 さて、その前回の記事でメソッドを作ったわけですが、そのおかげでfor~in文のループ対象にメソッドも入っちゃうという困ったことが起きちゃいます。 今回は、それをObject.keysメソッドを使って回避する方法をお伝えしていきます。 ということで、Google Apps Scriptでオブジェクトに直接追加しているプロパティのみをループする方法です。 では、行ってみましょう! 前回のおさらい まず、対象としているスプレッドシートは以下のようなものです。 まず、この一行ずつのデータを表すクラスを作りましたが、それが以下のコードです。 (function(global){ var Person = function(record){ var _id = record[0]; this.name =

    Google Apps Scriptでオブジェクトに直接追加しているプロパティだけループする方法 | 隣IT
    kabacsharp
    kabacsharp 2019/02/27
    “以下のように記述することで、指定したオブジェクトの直接追加しているプロパティのみを配列で取得します。”
  • 【QUERY関数】where句と比較演算子を使って単一条件に一致した行を抽出する | 隣IT

    QUERY関数のwhere句とは? where句とは、データの中から、指定条件に一致する行を抽出する句です。 where句を使うと何ができるのかを、サンプル「備品購入リスト」でご紹介します。このリストから、B列が「OA機器」の行を抽出してみます。 ↓ B列「区分」が’OA機器’の行のみを抽出 条件に一致する5行が抽出できました。 このように、データの中から、指定の条件に一致する「行」を抽出するときに使うのがwhere句の役割です。 QUERY関数のwhere句を使うメリット 「行の抽出」と聞くと、フィルタ機能を思い浮かべる方もいるでしょう。B列「区分」でフィルタをかければ、同様の結果が取得できますね。 シリーズ初回の記事でお伝えしたQUERY関数のメリットを再度お伝えします! 「元データ」と「抽出データ」を別々のシートに分けて管理できる 一度セルに関数を入力すれば、元データに変更が発生して

    【QUERY関数】where句と比較演算子を使って単一条件に一致した行を抽出する | 隣IT
    kabacsharp
    kabacsharp 2019/02/26
    “where句では「区分がxx かつ 単価がxx」という複数条件の指定も可能です。シリーズを通して紹介していきます。”
  • Google Apps Scriptでクラスに最も簡単なプロパティを追加する方法

    前回のおさらい まずは、前回のおさらいです。 作成したスクリプトはこちらでした。 function myFunction() { class Person { } const p = new Person(); console.log(p); } Personという名前のクラスを作成しました。 ですが、クラスの定義の内容が空っぽでしたから、生成されたインスタンスも空っぽのオブジェクトでした。 今回は、constructorメソッドというものを使ってプロパティを定義していきます。 クラスにプロパティを追加する クラスから生成されたインスタンスはオブジェクトですから、プロパティとメソッドを持つことができるはずです。 ということで、まずは生成したインスタンスにプロパティを持たせるようにしてみましょう。 constructorメソッドとは クラスにプロパティを定義するには、クラス内にconstru

    Google Apps Scriptでクラスに最も簡単なプロパティを追加する方法
    kabacsharp
    kabacsharp 2019/02/10
    “別のインスタンスであれば、そのプロパティに別の値を格納したいですよね… 生成してからプロパティをいちいち上書きするのもバカバカしいですし。 いったい、どうすればよいでしょうか?”
  • 【初心者向け】Google Apps Scriptでクラスを理解するためのオブジェクトの基礎知識

    オブジェクトの理解が深くなり、クラスを使うという選択肢が増えます。 実際、拙著「詳解!Google Apps Script完全入門」では、簡単ではありますが紹介するようにしました。 ということで、今回から「初心者でもわかるGoogle Apps Scriptのクラス」をテーマに、その使い方についてお伝えしていきます。 初回の今回は、Google Apps Scriptでクラスを理解するためのオブジェクトの基礎知識についてお伝えしていきます。 では、行ってみましょう! 「クラス化」を目指すお題について さて、シリーズを通してどのようなクラスを作るのかを先にお伝えしておきます。 こちらです。 ただの、スプレッドシートの表ですね。 おそらく、多くのGAS初心者にとって最も身近なデータの扱い方とも言えますからね。 イメージしやすいであろう、このスプレッドシートの表について「クラス化」を目指していき

    【初心者向け】Google Apps Scriptでクラスを理解するためのオブジェクトの基礎知識
    kabacsharp
    kabacsharp 2019/02/08
    “さて、オブジェクトのプロパティには値を格納することができますが、Google Apps Script(というかJavaScript)では値として「関数」も格納することができます。”