# howdy39.dev - [Howdy!](https://howdy39.dev/ja/index.md): 中野 達也(@howdy39)です。Admina エバンジェリスト、Notion Japan チャンピオンズ、元コーポレートエンジニア。 - [Blog](https://howdy39.dev/ja/blog/index.md): 書いた記事を新しい順に並べています。 - [Speaking](https://howdy39.dev/ja/speaking.md): 登壇、ファシリテーター、メディア掲載、スライドの記録です。 - [Books](https://howdy39.dev/ja/books.md): 技術同人誌(サークル Tech The Toaster)を、すべて無料の電子書籍として公開しています。 - [Videos](https://howdy39.dev/ja/videos.md): YouTube に出演した動画です。 - [MCP サーバー](https://howdy39.dev/ja/mcp.md): howdy39.dev の MCP サーバーのつなぎ方です。llms.txt や Markdown など、AI 向けの入り口もあります。 ## Blog › 2026/10 - [Claude と壁打ちして、Mintlify で AI ネイティブなポートフォリオサイトを作った話](https://howdy39.dev/ja/blog/2026-10-04-note-mintlify-ai-native-portfolio.md): Mintlify で作り直した個人サイト howdy39.dev を紹介しています。Mintlify のアカウント作成から、Claude と話しながら、実作業時間 3〜4 時間ほどで作りました。llms.txt や Markdown など、AI にそのまま読んでもらえる AI ネイティブな作りが気に入っています。サイト内検索で過去の記事や登壇を探せること、Lighthouse のスコアを AI と上げたこと、GTM を入れなかったことも書いています。 ## Blog › 2026/09 - [大腸内視鏡検査は正直しんどかったけど、みんな受けた方がいいよという話](https://howdy39.dev/ja/blog/2026-09-07-note-colonoscopy.md): 健康診断の便潜血検査で、はじめて陽性が出ました。これをきっかけに大腸内視鏡検査を受けたので、その体験を書きました。検査前の下剤(サルプレップ)は想像以上にハードで、飲み方の工夫も載せています。検査そのものは鎮静剤のおかげでほぼ一瞬、費用は3割負担で1万円以下でした。40歳以上で受けたことがない人や、健診で引っかかった人は、受けてみることをおすすめします。 ## Blog › 2026/08 - [感謝をモチベーションにして働くのは悪いことなのか?](https://howdy39.dev/ja/blog/2026-08-13-note-gratitude-motivation.md): 感謝をモチベーションにして働くのは、悪いことなのでしょうか。私は悪くないと思っています。ただ、感謝そのものを目的にすると、相手の反応に左右されて、反応の少ない日に仕事の意味を見失いかねません。情シスのヘルプデスクを例に、自動化やドキュメント整備で問い合わせが減るのも良い仕事の結果で、そこにも見えない感謝がある、という話を書きました。 - [Claude Code のデフォルトが自動モードになる前に、情シスが決めておきたいこと](https://howdy39.dev/ja/blog/2026-08-10-note-claude-code-auto-mode.md): Claude Code の自動モードが、8月14日から Pro・Max・Team プランでデフォルトになります。これを受けて、情シスが決めておきたいことを書きました。自動モードを使うかどうかを、組織が自分で決めないといけなくなる点が、一番大きな影響だと考えています。スタンスは、デフォルトで採用する、手動で検証してから自動にする、禁止する、の3パターンに整理しました。私のおすすめは、デフォルトで採用する形です。 - [整った環境で働き続けるのは本当に良いのかという話](https://howdy39.dev/ja/blog/2026-08-05-note-comfortable-environment.md): 予算があり、経営陣の理解があり、優秀なメンバーがそろった整った環境で働き続けるのは、本当に良いことなのでしょうか。キャリアの前半では、理想を知るために価値があると思っています。ただ、予算の獲得や経営陣の説得、限られたリソースでの優先順位づけは、整った環境だけでは身につきにくいスキルです。理想を知る経験と、整っていない環境を動かす経験の両方が必要だという話を書きました。 ## Blog › 2026/07 - [業務利用におけるClaudeの5時間制限を効率よく回避するテクニック](https://howdy39.dev/ja/blog/2026-07-09-note-claude-5h-limit.md): 業務で Claude を使っていると、5時間制限が午後の忙しい時間帯にかかることがあります。制限をなくす話ではなく、制限にかかるタイミングを業務時間から遠ざける方法を書きました。朝7時と12時に一言だけプロンプトを送って、セッションの起点を固定します。これを Claude Code のルーチンで自動化する方法も載せています。週次の制限には先に届きやすくなる点も、注意として書きました。 - [バックオフィスには「選ばれる競争」がない。だから、意識しないと体験は良くならない](https://howdy39.dev/ja/blog/2026-07-06-note-backoffice-experience.md): バックオフィスには、市場での「選ばれる競争」がありません。出社方針や経費精算、PC のスペックなどを決めるのはバックオフィスで、従業員には選択肢がないので、意識しないと体験は良くなりません。体験の悪さは、シャドー IT やシャドー AI を招いて、セキュリティリスクにもなります。ツールを選ぶときに実際のユーザーを巻き込む、満足度を定期的に測る、といった改善を提案しています。 ## Blog › 2026/06 - [「人が足りません」と言われて、すぐに「増やそう」と言わなくなった話](https://howdy39.dev/ja/blog/2026-06-18-note-more-headcount-ai.md): 「人が足りません」と相談されたとき、数年前の私は、「人を増やそう」と「自動化や棚卸しで今の人数で回そう」が、感覚的に半々でした。AI が使えるようになった今は、「人を増やそう」と言う割合が減りました。安易な増員は短期的には楽でも、長期的にはメンバーのためにならないかもしれません。AI を活用するスキルは、これから20〜30年働く人に必須だと思う、という話を書きました。 ## Blog › 2026/05 - [STORES を退職します。 情シスも卒業します。](https://howdy39.dev/ja/blog/2026-05-27-note-leaving-stores.md): 2026年5月末で、7年半勤めた STORES を退職し、情シスも卒業します。フロントエンドエンジニアから情シスへ異動し、マネージャーを経て、情シス組織を立ち上げました。退職の理由は、「初めてのこと」が減って、ワクワク感がなくなってきたからです。心残りは、道半ばの案件と、自分が始めた情シス組織です。次は、情シスを支援する製品を提供する会社に移ります。 ## Blog › 2026/04 - [GAS から Vertex AI Service を使った Web アプリケーション を社内限定公開で作成する](https://howdy39.dev/ja/blog/2026-04-29-zenn-gas-vertex-ai.md): GAS から Vertex AI Service が使えるようになったので、社内限定公開の AI チャット画面を作ってみました。Google Cloud プロジェクトの作成から、GAS 側の設定、実装、Web アプリとしてのデプロイまでの手順を書いています。API キーの管理が要らないので、キー漏洩の心配もありません。ただ、実行ユーザーを自分にすると退職時に止まるので、本格的に運用するならサービスアカウントを使う、という注意点も書きました。 - [1Password の Hosted Provisioning(SCIM) を Okta で設定してみた](https://howdy39.dev/ja/blog/2026-04-20-note-1password-hosted-provisioning.md): 1Password の Hosted Provisioning(1Password がホストする SCIM)を、Okta で設定してみました。2026年4月時点で対応しているのは Okta と Entra ID で、Enterprise 限定ではなく Business プランから使えます。今回はユーザーの作成・更新・無効化の同期だけに絞り、Push Groups は見送りました。専用の SCIM グループを1つ作る設計や、displayName のマッピングが必須な点など、つまずきやすいところを書いています。 - [SCIM?SaaS管理ツール?API叩く?アカウント削除自動化の考え方](https://howdy39.dev/ja/blog/2026-04-03-note-scim-account-deletion.md): 不要になったアカウントを、どうやって削除するかを書きました。削除方法は、SCIM で自動削除、SaaS 管理ツールで自動削除、API を自作して叩く、管理画面で操作する、の順で優先しています。ただ、Google Workspace の Drive オーナー転送のように、委譲処理が必要なケースでは、SCIM や SaaS 管理ツールだけでは足りません。私はスプレッドシートと GAS で、これらをまとめて動かしています。 ## Blog › 2026/03 - [YOUTRUSTさんのスカウトAI機能のリリースを見てふと思ったこと](https://howdy39.dev/ja/blog/2026-03-26-note-youtrust-scout-ai.md): YOUTRUST のスカウト AI エージェントのリリースを見て、ふと思ったことを書きました。YOUTRUST は「つながり」がキャリアの可能性を広げるサービスだと思っていて、AI が代筆するスカウトでは、その価値が薄れないか気になっています。経験だけでマッチングすると、未経験でも挑戦したい人の機会も減ります。プロフィールに「チャレンジしたいこと」の欄を作り、AI を過去と未来をつなぐ翻訳者として使う案を出しました。 - [Notion カスタムエージェントを社内AIヘルプデスクとして導入して気づいた社外AIヘルプデスクサービスとの違い](https://howdy39.dev/ja/blog/2026-03-12-note-notion-agent-helpdesk.md): Notion カスタムエージェントを、社内の AI ヘルプデスクとして導入しました。Intercom や Zendesk のような社外向けのヘルプデスクをイメージして作ったのですが、使ってみると、AI だけで解決できる問題が想定より多くありました。社外向けでは AI は一次フィルターですが、社内では担当者が AI に指示を出しながら一緒に解決できます。AI だけで対応しきれなくても、その後の作業はぐっと楽になります。 ## Blog › 2026/02 - [誰のために仕事をしているのか](https://howdy39.dev/ja/blog/2026-02-26-note-who-do-you-work-for.md): Notion の CEO の Ivan Zhao さんが、公式アカウントではなく個人のアカウントで、お客さんの SNS 投稿に返信しているのを見かけました。私自身も、Notion の方々から、不具合の投稿へのダイレクトメッセージや、機能要望への詳しい返信、ブログへの感謝のメッセージをもらっています。顧客のために仕事をしている人は、自然とこういう行動になるのだと思います。凡事徹底、自分から行く、行動に移す、という話を書きました。 - [Notion カスタムエージェントの何がすごいのかを解説するよ](https://howdy39.dev/ja/blog/2026-02-25-note-notion-custom-agents.md): Notion カスタムエージェントが、2026年2月24日に正式リリースされました。コードも黒い画面もフローチャートも要らず、ブラウザと Notion だけで作れる、誰でも簡単に作ってすぐ使える最初の AI エージェントだと思っています。トリガー、手順、ツールとアクセス、モデル、高度な設定の5つの要素と、社内ヘルプデスクや日報の自動生成などの使い道を紹介しました。一方で、コストが見えにくい点は課題だと書いています。 ## Blog › 2026/01 - [本当の優しさ](https://howdy39.dev/ja/blog/2026-01-29-note-true-kindness.md): なーねこさんの note に、相手が喜ぶことを見誤る、という話があり、そこに触発されて書きました。情シスのヘルプデスクでは、頼られて、解決して、感謝されます。でも、問題があったときにすぐ答えを教えるのは、瞬間的な優しさで、一時の感謝にすぎないと思っています。わかりやすいドキュメントや自動化、勉強会で、相手が自分で解決できるようにすることが、本当の優しさです。 - [「とりあえず守る」は、悪じゃないと思うよ。](https://howdy39.dev/ja/blog/2026-01-11-note-protect-for-now.md): 完璧なセキュリティはないので、中途半端な対策でも、何もしないよりは良いと思っています。ただし、事業が成長したら、安い製品から高い製品へ乗り換えることを、先に考えておくことが大事です。乗り換えにかかるコストは、MDM や IdP などツールによって違い、特に IdP は統合が進むほど動かしにくくなります。乗り換えを想定した対策なら、中途半端ではなく、戦略的なステップです。 ## Blog › 2025/12 - [2025年振り返り](https://howdy39.dev/ja/blog/2025-12-31-note-2025-review.md): 2025年を振り返りました。この年は、Notion を中心に動いた1年でした。2024年末に STORES で Notion の全社導入が決まり、1〜3月は導入プロジェクトのオーナーとして、設計や勉強会を担当しました。パネルディスカッションやカンファレンスでの登壇、Notion Japan とのウェビナーなど、人前で話す機会を意図的に増やして、文章に比べて音声での発信が課題だと気づきました。2026年は、「伝える」ことにコミットします。 - [SaaSの不要アカウント棚卸しを効果的に行う4つのポイント](https://howdy39.dev/ja/blog/2025-12-17-note-saas-unused-account-review.md): SaaS の不要アカウントの棚卸しを、効果的に進める4つのポイントを書きました。退職者のアカウント削除は SCIM で自動化できることが多い一方、在籍者の使っていないアカウントは、自動化が難しいです。棚卸ししやすい SaaS から先にやる、利用日時が取れてデータに依存しないなら、無回答のアカウントを削除するオプトアウト方式を使う、API とスプレッドシートで手動と自動の間を作る、SaaS 管理ツールを使う、の4つです。 ## Blog › 2025/11 - [社用メールアドレスから見る合理性と多様性](https://howdy39.dev/ja/blog/2025-11-25-note-company-email-address.md): 社用メールアドレスの @ より前の部分(ローカルパート)は、入社時のヒアリングで、自由に選べるようにしています。ソフトウェアエンジニアには、名前より ID を大事にしている人がいますし、メールアドレスは変えにくいサービスが多いので、結婚で姓が変わる場合などを考えると、ID のほうが変わりにくいこともあります。一番大事なのは、その選択に、あなたの意思が込められているか、だと思っています。 ## Blog › 2025/10 - [新しいことで迷ったら「やりましょう」ベースで](https://howdy39.dev/ja/blog/2025-10-10-note-lets-do-it.md): 新しいことで迷ったときは、「やりましょう」を基本にしています。2010年頃に孫正義さんがこの言葉を使っていたことや、2012年頃にソフトバンクグループのシステム開発を支援して、その文化に触れたことがきっかけです。マネージャーになってからは、チームでも使っています。ゴールに届くなら手段は任せ、チームの振り返りを必ず行います。既にやっていることで迷ったら、「やめましょう」です。 - [AIにより高機能化・高価格化するSaaSが増えている中、社内ITにもカスタマーサクセスが必要になってきているのではないだろうか?](https://howdy39.dev/ja/blog/2025-10-08-note-it-customer-success.md): AI で SaaS が高機能化・高価格化していく中で、社内 IT にもカスタマーサクセスが必要になってきているのではないか、という話を書きました。機能が増えても、既存の機能さえ使いこなせていないのに、コストだけが積み上がってしまいます。社内ブログで自社の業務に合った使い方を発信する、新機能の勉強会を開く、Slack チャンネルで社内コミュニティを運営する、といった、導入後の活用を支援する活動を提案しています。 ## Blog › 2025/09 - [検索時の条件がURLに残るプロダクトが好きなんだよという話](https://howdy39.dev/ja/blog/2025-09-30-note-search-conditions-in-url.md): 検索の条件が URL に残るプロダクトが好き、という話を書きました。「?q=hoge」や「?q=hoge&sort=name.desc」のように条件が URL に残れば、ブックマークや手順書に条件付きの検索を保存できますし、Chrome の検索ショートカットや Raycast のようなランチャーからも使えます。Admina のデバイスのプランを試していて気づきました。機能比較表には載らない、手触りの良さを作る細かいこだわりだと思っています。 ## Blog › 2025/08 - [Gemini Canvas でも大体の GAS はかけるよーという話](https://howdy39.dev/ja/blog/2025-08-08-zenn-gemini-canvas-gas.md): Gemini Canvas を使えば、だいたいの GAS は書けるよ、という話です。Apple Business Manager の API からデバイス情報を取って、スプレッドシートに書き込み、Notion のデータベースにも同期する GAS を、Gemini Canvas で作りました。コンテナバインドスクリプトに直す、トークンをスクリプトプロパティで管理する、アクセストークンの取得や Notion への登録を足す、と何度も直して完成させました。AI が書いたコードは、そのままでは動かないので、手で直す前提です。 ## Blog › 2025/07 - [GoogleフォームのAI作成が英語にしか対応してない?そんな時でも日本語フォームをAIで作るテクニック](https://howdy39.dev/ja/blog/2025-07-28-note-google-forms-ai-japanese.md): Google フォームの AI 作成機能は、いまは英語にしか対応していなくて、日本語で指示すると「この言語は対応していません」というエラーになります。そんなときでも、日本語のフォームを AI で作るテクニックを書きました。「〇〇のフォームを日本語で作ってください」という指示を、英語に機械翻訳して入力します。複雑なフォームは、先に Gemini などで要件をはっきりさせておくのがおすすめです。 ## Blog › 2025/06 - [スプレッドシートのAI関数が英語にしか対応してない?そんな時でもAI関数を使うテクニック](https://howdy39.dev/ja/blog/2025-06-30-note-sheets-ai-function-japanese.md): Google スプレッドシートの AI 関数は、いまは英語にしか対応していません。日本語を入れると「The language entered is not supported at this time」というエラーになります。そこで、GOOGLETRANSLATE 関数と組み合わせて使う方法を書きました。日本語の問い合わせ内容を英語に翻訳し、英語のプロンプトで AI 関数を実行し、返ってきた High / Medium / Low を IF 関数で高 / 中 / 低に直します。できないと諦めずに、工夫して使う、という話です。 - [Gemini と Google Vids を組み合わせて手順解説用の動画ファイルを作成する](https://howdy39.dev/ja/blog/2025-06-24-note-gemini-google-vids-howto-video.md): 手順を説明する動画に、字幕を付けるのは手間がかかって、現実的ではありませんでした。Gemini アプリに動画のアップロード機能が付いたことで、状況が変わるかもしれないと思い、試しました。画面を録画し、Gemini で字幕ファイル(SRT)を作り、Google Vids でクローズドキャプションを付けます。Vids は字幕付きで書き出せないので、字幕付きの再生を録画するか、ffmpeg で動画に字幕を埋め込みます。 - [Google Workspace 版 NotebookLM を安全に外部ユーザーと共有する方法](https://howdy39.dev/ja/blog/2025-06-19-note-notebooklm-external-sharing.md): Google Workspace 版の NotebookLM を、組織の外のパートナーと安全に共有する方法を書きました。Workspace 版では、セキュリティの理由で「一般公開」が無効になっているので、組織外のアカウントには共有できません。そこで、Google グループを経由します。外部パートナー用のグループを作って、NotebookLM の共有先にそのグループを指定し、グループの設定で組織外メンバーを許可します。なお、2025年10月14日に、Google 側の仕様変更で、この手順は使えなくなりました。 ## Blog › 2025/05 - [Notion のページ内で人を表す際に「絵文字」「ページ」「メンション」のどれを用いるのがよいのかを考える](https://howdy39.dev/ja/blog/2025-05-30-note-notion-represent-people.md): Notion のページの中で人を表すとき、「絵文字」「ページ」「メンション」のどれを使うのがよいか、考えました。絵文字は、1ワークスペースで500個までという制限があり、Notion AI にも読み取れません。メンションは、アイコンが出ませんし、使うと通知が飛びます。おすすめは、自己紹介のデータベースを用意して、一人ひとりのページを作る方法です。人にも AI にも分かりやすく、アイコンの数にも制限がありません。通知が必要なときだけ、メンションを使います。 - [SaaS の引っ越しに伴うリダイレクト Chrome 拡張機能の実装方法](https://howdy39.dev/ja/blog/2025-05-21-stores-product-blog-saas-migration-redirect-chrome-extension.md): SaaS を引っ越したときに、旧 SaaS の URL から、移行先の Notion のページに、自動でリダイレクトする Chrome 拡張機能を実装したので、その解説を書きました。基本的にリダイレクトは不要と考えていますが、ナレッジとして使っていた SaaS は、業務への影響が大きいため、簡易的なリダイレクトとして、拡張機能を提供しました。仕組み、ソースコード、社内向けの配布、実装時のポイントを説明しています。 - [Tech The Toaster のすべての書籍を無料にしました & 同人誌活動の振り返り](https://howdy39.dev/ja/blog/2025-05-11-note-tech-the-toaster.md): 同人誌活動の「Tech The Toaster」の、すべての書籍を無料にしました。あわせて、活動を振り返っています。物理本が1,650冊、PDF が730冊で、売上は約200万円でした。本の製本や出版、店舗運営の実務、人脈など、得たものは多かったです。ソフトウェアエンジニアから情シスに転身して、執筆の意欲が下がったので、同人誌の活動は終わりにします。これからは、登壇に軸足を移します。 ## Blog › 2025/03 - [ビジネス環境における Notion の「エクスポート無効」設計ガイドライン](https://howdy39.dev/ja/blog/2025-03-31-note-notion-export-disable-guideline.md): Notion のエクスポート機能は便利ですが、データを持ち出されるリスクがあります。エクスポートを無効にできるのはエンタープライズプランだけで、セキュリティとバックアップの両立が課題になります。ワークスペースとチームスペースの設定を4つのパターンに分けて比べました。私のおすすめは、ワークスペースは無効、チームスペースは有効にして上書きし、チームスペースの作成をワークスペースオーナーに限る、パターン C です。管理者用のバックアップのチームスペースも用意します。 - [Notion の オートーメーション を使ってSlack 通知のメッセージをカスタマイズする方法](https://howdy39.dev/ja/blog/2025-03-18-note-notion-automation-slack.md): Notion のページを作ったときに Slack へ通知するとき、ボタンのオートメーションから直接通知すると、「ボタンが押された」という情報しか送れません。Zapier などの外部ツールを使わずに、ページ名などを含めて通知する方法を書きました。ボタンのオートメーションで、「通知メッセージ」というプロパティを now() 関数などで編集し、そのプロパティの編集をきっかけにする、データベースのオートメーションで Slack に通知します。 - [My Notion Way を考えてみた](https://howdy39.dev/ja/blog/2025-03-11-note-my-notion-way.md): Notion は、レゴのように自由に作れる分、使い方が難しいツールです。そこで、私の Notion の使い方を書きました。肝は、データベースです。ページは、原則、データベースに入れます。データベースの設計は、1つから始めて、必要になったら分けます。フォルダの考え方は捨てて、サイドバーは非表示にし、検索(cmd / ctrl + K)を使います。ページ名は、日付と定例の名前を組み合わせるなど、ユニークにします。デフォルトの設定は、できるだけ変えません。 ## Blog › 2025/02 - [Notion は単なるドキュメンテーションツールやプロジェクト/タスク管理ツールではなく業務の中心となるツールになっていきそう](https://howdy39.dev/ja/blog/2025-02-17-note-notion-center-of-work.md): Notion を業務で1か月使ってみて、考えたことを書きました。Notion は、ドキュメントツールやプロジェクト・タスク管理ツールにとどまらず、業務の中心になるツールで、業務プロセスを作るツールでもあると思います。導入前は、Slack、Slack ワークフロー、esa、Asana の4つで業務を回していて、ツール間の移動が多い状態でした。フォームやオートメーションでヘルプデスクの業務を移せそうなことや、コメントで直接やり取りできることが、想定外でした。 ## Blog › 2025/01 - [Google WorkspaceのAIアドオンが廃止されて基本プランに組み込まれたので変更点を解説します](https://howdy39.dev/ja/blog/2025-01-16-zenn-google-workspace-ai-addon.md): Google Workspace の AI 機能の課金が変わったので、IT 管理者向けに、変更点を解説しました。有料アドオンの「Gemini for Google Workspace」が廃止されて、AI の機能が、Standard プランと Enterprise プランの基本プランに組み込まれます。それにあわせて、各プランの料金が改定されて、Business Starter は 680円から 800円になります。2025年3月17日から適用されます。ユーザー数10以下の組織は、2026年1月まで据え置きです。 ## Blog › 2024/12 - [2024年振り返り](https://howdy39.dev/ja/blog/2024-12-30-note-2024-review.md): 2024年を振り返りました。能登半島地震をきっかけに、安否確認サービスを高機能なものに切り替えました。登壇は、Admina の導入についての対談、ITmedia デジタル戦略EXPO での SaaS 管理の基調講演、うちの情シス Connect + i、Findy の LT、CorpEn Night #1 などです。7月からは、シニアマネージャーになりました。2021年のブログから続けてきた発信が、メディアへの登壇につながったと思っています。 - [レジリエンスの高い情シス組織を作ろうとしている話](https://howdy39.dev/ja/blog/2024-12-24-note-resilient-it-team.md): 「corp-engr 情シス Slack」のアドベントカレンダー24日目の記事です。情シス組織のレジリエンスとは、変化に直面したときに、素早く適応して、本来の機能を取り戻し、さらに強い組織へ進化する力だと考えています。オフィスのファシリティ、AI の進化への対応、システム障害への備え、人のリソースとドキュメント化、守りの IT から攻めの IT への変化、という5つの観点で書きました。難しいテーマですが、だからこそ、4年半、飽きずに取り組めています。 - [最先端のITプロダクトが、多様なお商売を叶えるサービスづくりを支える。STORES のコーポレートエンジニアの仕事](https://howdy39.dev/ja/blog/2024-12-10-stores-note-interview-corporate-engineer-work.md): STORES note に、コーポレートエンジニアの仕事についてのインタビューを掲載していただきました。全社員が使う SaaS の管理と改善、デバイスやネットワークの整備、そして社内 IT での AI 活用の推進といった、IT 本部の仕事を話しています。IT 本部が自らテストケースになって、社内に業務改善の方法を広げていくことも紹介されています。 ## Blog › 2024/07 - [Slackのレガシーワークフローの一覧をスクリプトで抽出して引越しをスムーズに進める](https://howdy39.dev/ja/blog/2024-07-22-zenn-slack-legacy-workflows.md): Slack のレガシーワークフローは、2024年9月26日に動作しなくなる予定でした。管理画面には、全ワークフローの一覧が出ますが、エクスポートの機能がないので、引っ越しの準備が大変です。そこで、Chrome のデベロッパーツールのコンソールで、一覧をタブ区切りでコピーするスクリプトを書きました。貼り付け先は、スプレッドシートです。1ページ10件のページ送りがあるので、ページごとに繰り返します。Slack の管理者権限が必要です。 - [Dify API と GASのカスタム関数を組み合わせてスプレッドシートからLLMを利用する](https://howdy39.dev/ja/blog/2024-07-14-zenn-dify-gas-custom-function.md): Dify の API と GAS のカスタム関数を組み合わせて、スプレッドシートから LLM を使う方法を書きました。例として、画像の URL が犬かどうかを判定します。Dify で、GPT-4o に画像を解析させて、TRUE か FALSE を返すワークフローを作り、その API を、GAS のカスタム関数から呼び出します。OpenAI の API キーを、先に発行して、Dify に設定しておく必要があります。プロンプトは、英語のほうが、ログが読みやすくなります。 ## Blog › 2024/02 - [安否確認サービスをコーポレートエンジニアが導入するとどのような運用設計をするのか](https://howdy39.dev/ja/blog/2024-02-21-stores-product-blog-safety-confirmation-service-operation-design.md): STORES で導入した、トヨクモの安否確認サービス2について、コーポレートエンジニアが、セキュリティや API を考慮しながら導入すると、どのような運用設計をするのかを書きました。通知の運用設計、アカウントの登録・削除の運用設計(API での自動化と、アカウント発行に使っている GAS のコード)、ロールの運用設計、データセンターの場所と SLA の確認までを説明しています。 - [GAS からAdmina API を使って SaaS 利用状況を可視化する Looker Studio を作ってみた](https://howdy39.dev/ja/blog/2024-02-04-zenn-admina-api-looker-studio.md): GAS から Admina の API を呼んで、SaaS の利用状況を、Looker Studio で見られるようにしました。GAS で Admina の2つのエンドポイントを順に呼び、スプレッドシートに書き出して、Looker Studio で可視化します。メールアドレスで検索して、その人の利用サービスを見る、退職ステータスで絞って、アカウントの削除漏れを見つける、といった使い方ができます。GAS は、TypeScript と clasp で書いていて、実行には、30秒から3分ほどかかります。 ## Blog › 2024/01 - [解釈力をあげると見えている世界が変わってくるよ、という話](https://howdy39.dev/ja/blog/2024-01-14-note-interpretation-skill.md): 解釈力を上げると、見えている世界が変わってくる、という話を書きました。2023年に Slack で使った「すみません」は42回、「ありがとう」は385回で、謝罪と感謝の比率は、約1対18でした。ドキュメントの不備を指摘されたら、「すみません」ではなく、「気づきをありがとうございます」と返して、直した内容を添えます。そうすると、指摘した人も、次も言いやすくなります。起きた事実は変わりませんが、解釈を変えると、世界が少しずつ変わってきます。 - [1Passwordのチームレポートの日付をGASのカスタム関数でなおす](https://howdy39.dev/ja/blog/2024-01-11-zenn-1password-report-date-gas.md): 1Password のチームレポートに出る、前回のログイン日時は、「31 Dec 2023 06:12」のような形式で、スプレッドシートの標準の機能では、日付に変換できません。そこで、GAS のカスタム関数を使いました。コンテナバインドスクリプトに、日付の文字列を new Date に渡すだけの関数を作ります。最初から、日付で出力してほしい、とも書いています。 - [行動変容をともなう劇的な成長がある、という話](https://howdy39.dev/ja/blog/2024-01-08-note-behavior-change-growth.md): 行動変容をともなう、劇的な成長がある、という話を書きました。成長には、知識や経験による緩やかなものと、行動変容をともなう、段階的で劇的なものがあります。2016年2月に、20代の終わりで成長を実感できなくなっていることに気づき、転職を決めました。そのあとの11か月で、Qiita に20本の記事を書きました。7年間の普通の学びより、この1年の成長のほうが大きかったです。行動変容ステージモデルも使って、小さな行動変容の積み重ねについて書いています。 ## Blog › 2023/12 - [2023年振り返り](https://howdy39.dev/ja/blog/2023-12-31-note-2023-review.md): 2023年を、仕事面を中心に振り返りました。共有ドライブと Google グループの作成の自動化、Google ドキュメントのスマートチップのアドオン、ChatGPT を使った RAG の開発、Admina の導入、新しい Slack ワークフローを使った開発、gas-clasp-starter の更新、GAS での登壇、PX アドベントカレンダーのプロジェクトオーナーなどを書いています。 - [情シスはSaaSのアカウント管理をどうおこなうのがいいのか。一例としてAdminaのロール機能を使ったアカウント管理運用フローを共有します](https://howdy39.dev/ja/blog/2023-12-28-note-admina-role-account-management.md): Admina にロール機能がリリースされたのを機に、SaaS のアカウント管理の理想と、STORES で実際に回している、Admina のロール機能を使った運用フローを書きました。ロール機能が必要だった理由、Admina を使う前提、SaaS の接続方法、インテグレーション方式と CSV アップロード方式での棚卸しの手順、アカウントの即時削除までを共有しています。 - [新しいSlackワークフローを使って絵文字リアクションした人を自動でGoogleカレンダーの予定に招待](https://howdy39.dev/ja/blog/2023-12-10-zenn-slack-workflow-emoji-calendar-invite.md): 新しい Slack ワークフローを使って、絵文字でリアクションした人を、Google カレンダーの予定に自動で招待する方法を解説しました。イベントに対応した Slack の絵文字を作り、リアクションをきっかけに、ワークフローで予定の参加者に登録します。コードを書かなくても作れるので、社内イベントなどで使えます。 - [STORES でコーポレートエンジニアを絶賛募集中です!](https://howdy39.dev/ja/blog/2023-12-04-note-stores-corporate-engineer-hiring.md): STORES でコーポレートエンジニアを募集するにあたって、どのような人に来てほしいか、言い換えると、私が働くうえで大事にしていることを書きました。自分のチームと「合う」人、世の中を良くしたい人、私を暇にしてくれる人、STORES というサービスが好きな人、の4つを挙げています。募集は終了し、無事に採用できました。 ## Blog › 2023/11 - [esa 記事をスマートチップで補完する Google Docs アドオンの作り方](https://howdy39.dev/ja/blog/2023-11-24-zenn-esa-smart-chip-docs-addon.md): Google ドキュメントのスマートチップを、Google Workspace 以外のものにも使えるようにする、GAS のアドオンの作り方を解説しました。例として、ドキュメントサービスの esa の記事を、スマートチップに変換するアドオンを作っています。リンクを貼って TAB キーで変換する方法と、既存のリンクをチップにする方法があり、キャッシュを使った処理の流れも説明しています。 - [新しい Slack ワークフローをつかって Google Meet の URL を発行する](https://howdy39.dev/ja/blog/2023-11-08-zenn-slack-workflow-google-meet-url.md): 新しい Slack ワークフローの Google Meet のステップを使って、Slack から Meet の URL を発行して、チャンネルに投稿する方法を解説しました。以前は Meet の API がなく、Google カレンダーに予定を作る回避策とコードが必要でしたが、ノーコードで「/meet」のようなコマンドを作れます。有料プランが前提で、Private チャンネルには投稿できない、といった制約も書いています。 - [Google Apps Script で作成したアドオンをドメイン内ユーザーに配布する](https://howdy39.dev/ja/blog/2023-11-05-zenn-gas-addon-domain-distribution.md): GAS で作ったアドオンを、ドメイン内のユーザーに配布する手順を解説しました。一般公開のアドオンとほぼ同じで、Google Workspace Marketplace SDK を使います。GAS と Google Cloud プロジェクトの紐づけ、OAuth 同意画面、SDK の設定とインストールまでを説明しています。特権ユーザーで作業しないと強制配布はできず、手動でのインストールになる点も書いています。 ## Blog › 2023/10 - [Google Apps Script でスプレッドシードの超シンプルなアドオンを作る](https://howdy39.dev/ja/blog/2023-10-29-zenn-gas-simple-spreadsheet-addon.md): GAS でスプレッドシートのアドオンを使っている人をあまり見かけないので、作り方の第一弾として、超シンプルなアドオンを作る手順を解説しました。サイドバーにアドオンの画面を表示して、入力した文字列を、選択しているセルに入力します。アドオンのインストールの仕組みや、サイドバーの HTML と GAS の連携も説明しています。 ## Blog › 2023/09 - [API ロールと API クライアントを使った Jamf Pro API の使い方入門](https://howdy39.dev/ja/blog/2023-09-03-zenn-jamf-pro-api-roles-clients.md): 2023年8月に Jamf Pro 10.49.0 で実装された、API ロールと API クライアントを使って、Jamf Pro の API を使う方法を、入門として解説しました。これまでは、ユーザーを作って Basic 認証で Bearer トークンを取得していたため、生のパスワードを送る形でしたが、権限を絞ったアクセストークンを簡単に作れるようになりました。GAS のコード例で、旧方式との違いを示しています。 ## Blog › 2023/08 - [事業スピードを落とさない攻めの情シス。400人のアカウント引越しを叶え今、目指すこと](https://howdy39.dev/ja/blog/2023-08-30-stores-note-interview-400-account-migration.md): STORES note に、インタビューを掲載していただきました。社名変更に伴う、およそ400人のアカウントの引越しと、全社会(レビュー会)の配信対応を中心に、これまでのキャリアと、情シスとして目指していることを話しています。SIer からフロントエンドエンジニア、そして情シスへの経緯、「マイナスをゼロにする」仕事、事業に寄り添い、加速させる情シスについて紹介されています。 - [新しいSlackワークフローを使った簡易チケット管理システムの作り方](https://howdy39.dev/ja/blog/2023-08-17-zenn-slack-workflow-simple-ticketing.md): 新しい Slack ワークフローを使った、簡易チケット管理システムの作り方を解説しました。依頼のフォームを Slack ワークフローで作り、依頼とチケットをスプレッドシートに書き込みます。必須なのはこの2つで、通知を GAS と Slack ワークフローで、可視化を Looker Studio で行う、というオプションも紹介しています。 ## Blog › 2023/04 - [GASを使ってドメイン内のすべてのGoogleグループ設定を出力する](https://howdy39.dev/ja/blog/2023-04-30-zenn-gas-export-google-groups-settings.md): GAS で、ドメイン内のすべての Google グループの設定を、スプレッドシートに出力するコードを解説しました。AdminDirectory と AdminGroupsSettings のサービスを使います。実行ユーザーからドメインを取る方法など、実装時のポイントも書いているので、グループの設定を出力しない人も、GAS の書き方の参考になるはずです。 - [ChatGPTを使った社内ドキュメントを読み込んで回答できるアシスタントBotを作りました!](https://howdy39.dev/ja/blog/2023-04-24-note-chatgpt-internal-assistant-bot.md): 社内向けに、ChatGPT を使ったアシスタント Bot(Slack Bot)を開発してリリースしたので、その紹介を書きました。社内ドキュメントツールの esa の、help 階層の記事の内容に回答する Bot で、フィードバックを行える機能もあります。細かい調整の話と、作るまでの長い道のりも書いています。ChatGPT は API で利用していて、入れているのは、社内の誰でも見てよい情報だけです。 - [Google Apps Scriptの社内研修をやりました! 〜研修の進め方 & GAS初心者に何を教えたのか〜](https://howdy39.dev/ja/blog/2023-04-14-note-gas-internal-training.md): 2022年の11月〜12月に、社内向けに GAS 研修を行ったので、研修の進め方と、GAS の初心者に何を教えたのかを書きました。GAS でやりたいことの多くは、フォーム送信をきっかけに動かす、スプレッドシートを読み書きする、Gmail の検索・送信をする、の3パターンに定型化できると考え、これをベースにしています。資料作りと当日の進行は Miro を使い、参加希望は Slack の絵文字で集めました。 - [社名変更に伴うGoogle Workspaceアカウントの引越し手順を解説します](https://howdy39.dev/ja/blog/2023-04-03-stores-product-blog-google-workspace-account-migration-rename.md): 社名変更(ヘイ株式会社から STORES 株式会社)に伴う、Google Workspace のアカウントの引越し手順を解説しました。ドメインエイリアスの追加で済ませず、アカウントを引越しにした理由と、全体像、タイムラインを説明したうえで、アカウントの発行、Google グループとカレンダーの引越しの手順を、スクリプトの Tips とあわせて紹介しています。STORES PX Advent Calendar 2023 Spring の1日目の記事です。 - [STORES PX Advent Calendar 2023 Spring を開催します! #STORESアドカレ](https://howdy39.dev/ja/blog/2023-04-03-note-stores-px-advent-calendar-spring.md): STORES の PX 部門(People eXperience)で、4月の平日を使って、「PX Advent Calendar 2023 Spring」を開催するお知らせと、記事の一覧を書きました。PX には、採用、労務、カルチャー、IT、広報の5つのチームがあり、そこで働く人たちの仕事を知ってもらうことが、開催のきっかけです。記事へのリンクは随時更新しています。 ## Blog › 2023/03 - [DocsBot AI を使ってみた](https://howdy39.dev/ja/blog/2023-03-14-zenn-docsbot-ai-trial.md): 任意のドキュメントを読み込んで検索できる SaaS の、DocsBot AI(裏側は ChatGPT)を、無料プランで試した個人用メモです。アカウント登録、Bot の作成、Zenn の記事を .txt にして Source に追加、チャットして試すまでの流れと、日本語での挙動が少し怪しいことなどの所感を書いています。 ## Blog › 2023/01 - [GoogleフォームとGASを使って利便性高くセキュアな共有ドライブ運用を作る](https://howdy39.dev/ja/blog/2023-01-01-zenn-secure-shared-drive-operation.md): Google フォームと GAS を使って、利便性が高く、セキュアな共有ドライブの運用を作る方法を解説しました。マイドライブで外部共有ができると、やりたい放題になり、ファイルのオーナーが退職したときの扱いにも困るため、組織のファイルは共有ドライブに置きたいのですが、共有ドライブにも癖があります。その解決として、作りたいものの全体図、OU の設定、コードを説明しています。 ## Blog › 2022/03 - [情シスがDeveloper eXperienceを考えた結果、エンジニア貸与PCをいつでも交換できるようにしました](https://howdy39.dev/ja/blog/2022-03-07-note-engineer-pc-anytime-replacement.md): hey のエンジニアに貸与している PC を、いつでも交換できる制度を作ったので、その意思決定をした理由を書きました。もともとは3年で交換でしたが、3年に大きな意味はなく、開発 PC の交換を深く考えていなかっただけでした。いまは、エンジニアだけでなく、デザイナーやプロダクトマネージャーなど、開発に関わる職種が、同じスペックの PC を、いつでも交換できます。 ## Blog › 2021/12 - [2021年振り返り](https://howdy39.dev/ja/blog/2021-12-31-note-2021-review.md): 2021年を振り返りました。今年やったこととして、チームを2つに分けたことと、社内の IT 環境をいろいろ改善したことを書き、来年やりたいことにも触れています。2020年の振り返りに書いた、ソフトウェアエンジニアに戻ることはない、という気持ちは今も同じで、最近は、情シスの領域に限らず、コーポレート IT のマネージャー兼なんでも屋のような仕事をしています。 - [Googleスライドを使ったビンゴカードの作り方](https://howdy39.dev/ja/blog/2021-12-06-zenn-google-slides-bingo-card.md): 会社のリモートビンゴで、数字の代わりに Slack の絵文字を使うことになり、ビンゴカードを自動で生成する GAS のコードを書いたので、その作り方を解説しました。ただ解説するだけでなく、こういうツールを GAS で作るときに何を考えているのかを、脳内を可視化する形で書いています。API を使うか GAS を使うかの選び方から、設計、スライドの生成までを説明しています。 ## Blog › 2021/08 - [野良ネコ用レンズ探しの旅 FE 85mm F1.8 SEL85F18](https://howdy39.dev/ja/blog/2021-08-22-note-stray-cat-lens-sel85f18.md): α7C のキットレンズで野良猫を撮っていましたが、ぴったりのレンズを探して、GooPass で借りた単焦点の FE 85mm F1.8(SEL85F18)で撮った感想を書きました。総評は「めちゃくちゃよかった!」で、明るさとボケ感が好みでした。85mm は、逃げられない距離で撮れるちょうどいい画角ですが、もっと遠くの子を撮るなら、ズームレンズが必要そうです。後半は、撮った写真を載せています。 - [ソフトウェアエンジニアがコーポレートエンジニアになると異世界転生が始まるのか](https://howdy39.dev/ja/blog/2021-08-16-note-software-engineer-to-corporate-engineer.md): ソフトウェアエンジニアがコーポレートエンジニアになると、異世界転生が始まる、というツイートについて、実際に社内異動で情シスになった立場から、なぜそう思うのかを書きました。「コードが書ける」には段階があり、基礎的なロジック、API、Git と GitHub、プロダクト開発の言語、インフラの構築までを、全部できると、作りたいシステムやツールを100%実現できます。 - [リマインドする者される者](https://howdy39.dev/ja/blog/2021-08-02-note-reminders.md): リマインドされる側だった人が、他の人にリマインドする側になっているのを見かけて、思ったことを書きました。リマインドは、完了を100%信用できていない、という気持ちから生まれ、される側は、する側の頭の中のリソースを使っていることを、忘れてはいけないと考えています。される者がする者になったときは、仕事のレベルが上がっているタイミングだと思います。 ## Blog › 2021/07 - [GASからSlackIDではなくメールアドレスを使ってメンションを送る方法](https://howdy39.dev/ja/blog/2021-07-14-zenn-gas-slack-mention-by-email.md): GAS から Slack でメンション付きのメッセージを送るとき、Slack のユーザー ID と Incoming Webhooks を使うやり方をよく見かけますが、最近は、Slack のワークフロービルダー(Webhook)を使っています。Google フォームの回答者に、メールアドレスから Slack でメッセージを送る例で、Webhook の作り方、変数のデータタイプを Slack ユーザーのメールアドレスにするポイント、GAS のコードを解説しました。 ## Blog › 2021/05 - [なぜ情シスがすべてのSaaSの管理をするとうまくいかないのか?](https://howdy39.dev/ja/blog/2021-05-31-note-why-corporate-it-should-not-manage-all-saas.md): 情シスがすべての SaaS の管理をすると、なぜうまくいかないのか、について、私なりの考えを書きました。理由は4つで、業務のスピードが落ちること、セキュリティリスクが上がること、評価が難しくなること、管理コストが大きくなることです。そのうえで、強い組織と弱い組織の違いと、では SaaS をどう管理すればいいのかも書いています。 ## Blog › 2021/02 - [heyでコーポレートエンジニアの追加募集をはじめました!](https://howdy39.dev/ja/blog/2021-02-15-note-hey-corporate-engineer-hiring-2021.md): hey で、コーポレートエンジニアを1名増員することにしたので、IT チームのことと、どんな人に来てほしいかを書きました。従業員数と IT チームのメンバーの推移、IT チームの特徴、求める技術力とオープンな活動、やってほしいこと、共通で欲しいスキル、どういう人が向いているかを説明しています。新しい人が決まり、募集は閉じています。 - [heyのレビュー会のオンライン配信を改善していったらTV撮影みたいになった話](https://howdy39.dev/ja/blog/2021-02-08-note-hey-review-meeting-online-streaming.md): hey の全社会(レビュー会)のオンライン配信を、少しずつ改善していったら、TV 撮影のようになった経緯を書きました。Google Meet と配信への移行、Slack のスレッドを一緒に見られるようにしたこと、社内に簡易スタジオを作ったこと、機材の購入、前日からの準備と当日の様子、見ていた人の反響を、順に説明しています。 ## Blog › 2020/12 - [2020年振り返り](https://howdy39.dev/ja/blog/2020-12-31-note-2020-review.md): 2020年の振り返りですが、中身は、13年間続けたソフトウェアエンジニアの仕事の振り返りになっています。SIer 時代、G Suite 時代(フリーランス)、GCP 時代(トップゲート)、フロントエンド時代(STORES.jp)の4つに分けて振り返り、2020年にコーポレートエンジニアにジョブチェンジしたことと、総括も書いています。 - [情シスのマネージャーにジョブチェンジしてソフトウェアエンジニアのもつ良い文化をチームに取り入れている話](https://howdy39.dev/ja/blog/2020-12-23-note-it-manager-software-engineering-culture.md): hey のアドベントカレンダー2020の記事として、4月に社内異動で情シスになり、7月にマネージャーになってからの半年で、ソフトウェアエンジニアの良い文化を、チームに取り入れた話を書きました。心理的安全性を上げること(1on1 とチームビルディング)、評価のフィードバックをアジャイルに行うこと、ペア作業・モブ作業の導入、マネージャーにしかできないことを優先することなどを紹介しています。 ## Blog › 2020/07 - [heyの社内ITを支えるITサポートを探しています!](https://howdy39.dev/ja/blog/2020-07-17-note-hey-it-support-hiring.md): hey の社内 IT を支える IT サポートを募集するにあたって、その背景と、どんな人に来てほしいかを書きました。人が辞めて補充しているわけではなく、従業員数の増加に対して、IT の人員が足りていなかったのを改善しています。守るフェーズから攻めるフェーズに移るので、ヘルプデスクというより、EX(Employee Experience)の改善をお願いしたいポジションです。 - [heyの社内ITを支えるコーポレートエンジニアを探しています!](https://howdy39.dev/ja/blog/2020-07-03-note-hey-corporate-engineer-hiring-2020.md): hey の社内 IT を支えるコーポレートエンジニアを1名増員することにしたので、4月の異動からやってきたことと、どんな人に来てほしいかを書きました。2Q(4〜6月)は立て直しのフェーズで、タスク管理、ワークフローの整備、セキュリティの改善、ドキュメンテーションに取り組み、3Q(7月)からは攻めのフェーズです。内定承諾をもらえたため、募集は閉じています。 ## Blog › 2020/03 - [フロントエンドエンジニアからコーポレートエンジニアにジョブチェンジします](https://howdy39.dev/ja/blog/2020-03-31-note-job-change-to-corporate-engineer.md): 2020年4月1日から、フロントエンドエンジニアから、コーポレートエンジニア(開発寄り)にジョブチェンジすることになり、その思いを記録として書きました。所属は STORES.jp のままで、持株会社の hey に異動します。フロントエンドチームの中で自分の役割が減ったことと、もともと社内システムをずっと作っていたことが理由で、いま社内システムを作ったら、以前とは違うのではないか、とも考えています。 ## Blog › 2019/12 - [2019年の振り返り](https://howdy39.dev/ja/blog/2019-12-31-note-2019-review.md): 2019年を振り返りました。仕事、副業、技術書の執筆、LT、Qiita、OSS、英語、買い物、投資に分けて、総括も書いています。仕事は昨年に引き続き STORES で、フロントエンドの記事をきっかけに、社内で記事を書く動きが生まれ、STORES のアドベントカレンダーにつながったことなどに触れています。 - [Nuxt.js、Google Apps Script、スプレッドシート(DB)を組み合わせて検索アプリケーションを作ってみた](https://howdy39.dev/ja/blog/2019-12-23-qiita-nuxt-gas-search.md): Nuxt.js(SPA モード)で作った検索アプリを、GAS のウェブアプリとして公開する方法を書きました。データはスプレッドシートに置いて、画面は Google Sites に埋め込んでいます。GAS は HTML と JS をそのままホストできないので、ビルド結果の JS を html ファイルに変換して include で読み込む仕組みを、スクリプトで自動化しました。clasp でのデプロイや、SPA のルーティングを index.vue にまとめる設定も載せています。 ## Blog › 2019/11 - [GitHub, GAS, Google Data Studioを活用した週替わり運用・カイゼン担当の仕組み](https://howdy39.dev/ja/blog/2019-11-17-qiita-weekly-kaizen-rotation.md): STORES のフロントエンドチームで、週替わりで運用・カイゼンの担当者を割り当てている仕組みを紹介しました。担当になった人は、日々の不具合の調査や対応と、手が回りにくい技術的負債の返済などを行います。チケットの管理には GitHub のプロジェクトを使い、カンバンの列は8つに分類し、進捗は GAS、スプレッドシート、Data Studio で自動でグラフにしています。 ## Blog › 2019/10 - [STORES.jp (hey) に入社してちょうど1年経ったので、STORESのフロントエンド開発について書きます](https://howdy39.dev/ja/blog/2019-10-01-note-stores-frontend-development.md): STORES.jp(hey)に入社してちょうど1年経ったので、2019年10月時点の、STORES のフロントエンド開発について書きました。入社した当時は3名だったチームが9名になり、1年で作ったもの、開発の進め方、言語・ライブラリ、テスト、UI の実装、エラー監視、ドキュメントの作成、社内勉強会を紹介しています。 ## Blog › 2019/07 - [Google スライドで登壇用スライドを作る際のテクニック](https://howdy39.dev/ja/blog/2019-07-23-qiita-google-slides-presentation-techniques.md): Google スライドで登壇用のスライドを作るときに、私が意識しているテクニックを紹介しました。勉強会の登壇資料として使う前提で、実際に作ったスライドを例にしています。文字サイズ、色、位置の調整は、スライドごとではなく、マスターで行うのが基本で、CSS で class を使うのに近いイメージです。マスター、レイアウト、スライドの関係と、それぞれで設定する内容を説明しています。 ## Blog › 2019/04 - [#技術書典 6 にサークル参加してきたので被チェック数の傾向とか感想とかつらつら書きます](https://howdy39.dev/ja/blog/2019-04-14-note-tech-book-fest-6.md): 技術書典6にもサークル参加したので、被チェック数の傾向と、感想を書きました。被チェック数は、前回の411を超えて479になり、新刊の Network 編を415部、既刊の Console 編を195部ほど頒布しました。Console 編の紙版は、今回が最後の頒布なので、500円に値下げして売り切りを狙いました。通販と決済手段のことも書いています。 ## Blog › 2018/12 - [NuxtでYouTubeプレイヤーを埋め込む](https://howdy39.dev/ja/blog/2018-12-30-qiita-nuxt-youtube-player.md): Nuxt で YouTube のプレイヤーを埋め込むには、vue-youtube というライブラリを読み込んで使えばよい、という内容の記事です。YouTube の iframe 向けの YouTube Player API を実装した youtube-player を、vue-youtube が組み込んでいる形です。再生や一時停止などの制御は、iframe API のものをそのまま使え、イベントは emit で発火します。動作を確認できるデモページもあります。 - [2018年の振り返り](https://howdy39.dev/ja/blog/2018-12-30-note-2018-review.md): 2018年を振り返りました。仕事、技術書典、Qiita、OSS、個人サービス、英語、買い物に分けて、総括も書いています。仕事は、トップゲートを退職して、10月から STORES.jp(hey)に入社し、ストアデザイン画面のリニューアルとして、AngularJS(1系)を Nuxt.js に置き換えながら、機能を強化したことなどに触れています。 - [Nuxt.jsでユーザーエージェントを判別するプラグインの紹介](https://howdy39.dev/ja/blog/2018-12-25-qiita-nuxt-user-agent-plugins.md): Nuxt.js で、ユーザーエージェントによって処理を切り替えたいときに便利な、プラグインを2つ紹介しました。ググって探した、nuxt-device-detect と nuxt-user-agent です。nuxt-device-detect は、モバイルか PC かをシンプルに判定したいときに向いていて、判定の処理が70行未満と短いので、自分で簡易判定を書くときの参考にもなります。デモページも用意しています。 - [vue.jsでクリックのデフォルトイベントを止めるディレクティブを作る](https://howdy39.dev/ja/blog/2018-12-24-qiita-vue-prevent-click-directive.md): クリック時に event.preventDefault() を実行する、Vue.js のディレクティブ(v-prevent-click)の作り方を解説しました。ストアの Web 画面を作るエディタ画面では、本番ではリンクになる部分を、押しても反応しないリンクとして見せる必要があり、全タグの @click に定義するのは大変なので作りました。基本的には使わない、かなりレアなケースです。 - [Nuxtで直接アクセスを禁止にするmiddlewareを作る](https://howdy39.dev/ja/blog/2018-12-24-qiita-nuxt-block-direct-access-middleware.md): SPA で、初期処理を別のページで行う場合に、深いページへの直接アクセスを禁止にする、Nuxt の middleware の作り方を紹介しました。直接アクセスしたときは、初期処理をするページにリダイレクトします。仕組みはシンプルで、from.name と route.name が一致した場合に、直接アクセスと判断しています。デモページと、全コードも公開しています。 - [マウスホバーで離れた位置になにか表示したいときの便利ワザ](https://howdy39.dev/ja/blog/2018-12-15-qiita-mouse-hover-display-tricks.md): マウスホバーで、離れた位置に別の要素を表示するときの、便利なテクニックを紹介しました。カテゴリメニューの子カテゴリなどで、要素の外にカーソルが出た瞬間に消えてしまうのを防ぐ方法です。:hover を使う方法、@mouseenter と @mouseleave を使う方法、それに debounce を組み合わせる方法の3パターンを、サンプルとあわせて比較しています。サンプルは Vue.js です。 - [Nuxt, netlify, Firebase を使ったWebサービス開発と個人開発における技術選定のポイント](https://howdy39.dev/ja/blog/2018-12-09-qiita-nuxt-netlify-firebase-tech-choices.md): Nuxt、Netlify、Firebase を使って作った、Google カレンダーの表示・非表示を一括で切り替える Web サービスを例に、個人開発の技術選定のポイントを解説しました。画面の構築、デプロイ、ドメインと SSL、Google カレンダーの操作、データの保存先、アクセス解析とエラーログの収集を、順に説明しています。作るのにかかった時間も書いています。 - [NuxtMeetUp#6 にブログ枠で参加してきました](https://howdy39.dev/ja/blog/2018-12-08-note-nuxt-meetup-6.md): 2018年12月6日の NuxtMeetUp#6 に、ブログ枠で参加してきたので、その様子を書きました。一般参加枠は抽選で、参加できるかわからなかったため、ブログ枠で申し込んでいます。会場でもらったものと、トップバッターから6番手までの発表を、順に紹介しています。 ## Blog › 2018/11 - [Nuxt, ElementUI, Storybook 構成のVueプロジェクトの始め方](https://howdy39.dev/ja/blog/2018-11-18-qiita-nuxt-elementui-storybook-setup.md): Nuxt、ElementUI、Storybook の構成で始めようとしたときに、Storybook に ElementUI を適用させるのに手こずったので、その手順を残しました。Nuxt のプロジェクトを element-ui で作成し、コンポーネントを作って動作を確認してから、Storybook を追加し、webpack.config.js を作って ElementUI を使えるようにします。最終的なソースは、ボイラープレートとして GitHub に公開しています。 - [Step by Step で始める Vue.js の CSSトランジション](https://howdy39.dev/ja/blog/2018-11-04-qiita-vue-css-transition-step-by-step.md): Vue.js の CSS トランジションを使ったアニメーションを、Step by Step で解説しました。実装自体はシンプルですが、公式サイトが少しわかりにくいと思ったので、アニメーションしていない画面から始めて、 でくくって .v-enter を足すところから、.v-enter-active、.v-enter-to、.v-leave を使った消えるタイミング、トランジションに名前を付けるところまで、順に進めます。属性値がどう変わるかも追っています。 ## Blog › 2018/10 - [STORES.jp (hey) に入社してちょうど1ヶ月経った感想](https://howdy39.dev/ja/blog/2018-10-31-note-stores-one-month-impressions.md): STORES.jp(hey)に入社してちょうど1ヶ月経ったので、会社についての感想と、自分がやっていく必要がありそうなことを書きました。働く時間(フレックス)、リモートワーク、会社の場所、福利厚生などの紹介と、フロントエンドのレガシーの問題や、サービス改善が優先されてしまう問題など、これから取り組みたいことを挙げています。これから hey に入ろうとする人の参考になれば、と思って書きました。 - [Chromeデベロッパーツール本の通販開始のお知らせ と 初サークル参加の感想 #技術書典 5](https://howdy39.dev/ja/blog/2018-10-14-note-chrome-devtools-book-sales-tech-book-fest-5.md): 技術書典5で頒布した Chrome デベロッパーツール本が、予備を含めて512部すべて完売し、再発注したので、通販の開始をお知らせするとともに、初めてサークル参加した感想を書きました。サークル参加したいけど少し怖い、という人に向けて、当日の到着の様子や、席に届いていた本の様子などを、初参加の目線で書いています。 ## Blog › 2018/09 - [Chrome デベロッパーツール本を書き始めたきっかけから入稿完了までの物語 #技術書典 5](https://howdy39.dev/ja/blog/2018-09-21-note-chrome-devtools-book-story.md): 技術書典に出す本を入稿した日に、書き始めたきっかけから入稿までの物語を書きました。Google I/O 2018 のセッションで、Chrome デベロッパーツールの Eager evaluation を知り、Qiita の記事を書いたのが始まりで、それが技術書典へのサークル参加、初執筆で500冊を刷ること、さらに転職にもつながった、という話です。 - [Chrome の Custom Object Formatters 機能を使ったオブジェクトのデバッグ](https://howdy39.dev/ja/blog/2018-09-13-qiita-chrome-custom-object-formatters.md): Chrome の Custom Object Formatters 機能を使って、オブジェクトを独自の形式で表示する方法を、簡単に解説しました。console.log(obj) で表示される内容を、オリジナルの形式にでき、デバッグの役に立つかもしれません。Console を開いた状態でないと有効にならない点や、Custom Formatter Object の作り方(htmlTemplate、header、hasBody、body)を、デモ付きで説明しています。 ## Blog › 2018/08 - [Cloud Functions with Puppeteer + Google Apps Script でスクレイピングサーバーをサクッと作る](https://howdy39.dev/ja/blog/2018-08-21-qiita-cloud-functions-puppeteer-gas-scraping.md): 2018年8月16日に Cloud Functions が Puppeteer に対応したので、Cloud Functions と GAS を組み合わせて、スクレイピングサーバーを作る方法を解説しました。環境構築が不要で、Web ブラウザだけで作れるのが最大のメリットです。例として、Qiita の人気記事を取得して、スプレッドシートに書き出すものを作ります。Cloud Functions を単体で使うと使い勝手が悪いので、GAS と併用します。 ## Blog › 2018/07 - [スプレッドシートをWebAPI化するサービスの作り方](https://howdy39.dev/ja/blog/2018-07-29-qiita-spreadsheet-web-api-service.md): スプレッドシートを Web API 化するサービスの作り方を解説しました。GAS を使う方法には、URL を自由に設定できない、リクエスト数などの制限がある、といった弱点があるため、サーバーやクライアントなど、好きな環境からスプレッドシートを読み込む手法と、それを使った Web API のサービスの作り方を書いています。サービスアカウントを使う手法のメリットとデメリットも整理しています。 ## Blog › 2018/05 - [Chrome デベロッパーツールの Console を使いこなす](https://howdy39.dev/ja/blog/2018-05-20-qiita-chrome-devtools-console.md): Chrome デベロッパーツールの Console に備わっている便利機能を、解説しました。コマンドライン API($$(selector)、$(selector)、$_、copy、clear、table、inspect、dir など)と、実際に Qiita の画面を解析して、トレンド記事のタイトルと URL を取得する手順、リアルタイムで評価結果を返す Eager Evaluation を取り上げています。Web 画面からの情報抽出や、Chrome 拡張機能の開発に役立ちます。 ## Blog › 2018/04 - [スプレッドシートにマクロ機能が追加されたので試してみた](https://howdy39.dev/ja/blog/2018-04-13-qiita-sheets-macros.md): Google スプレッドシートにもマクロの記録機能が追加されたので、さっそく試しました。スプレッドシートにドット絵で「HOWDY39」を書く、という例で、マクロの記録の開始から、保存、実行までの手順を、画面付きで紹介しています。マクロで記録されたコードも載せています。 ## Blog › 2018/03 - [Google Apps Script のデプロイを Circle CI から行う](https://howdy39.dev/ja/blog/2018-03-22-qiita-gas-deploy-circleci.md): GAS のデプロイを、Circle CI から行う方法を解説しました。ローカル環境で GAS を開発するためのテンプレートに、CI/CD を足すものです。clasp の仕組み(.clasprc.json)を理解したうえで、デプロイスクリプトと Circle CI の設定ファイルを作り、master ブランチへのマージでデプロイされることを確認します。 - [Google Apps Script をローカル環境で快適に開発するためのテンプレートを作りました](https://howdy39.dev/ja/blog/2018-03-19-qiita-gas-clasp-starter.md): Google Apps Script をローカル環境で開発するためのテンプレート、gas-clasp-starter を作ったので、その紹介を書きました。google/clasp をベースに、webpack、TypeScript、TSLint、Prettier、Jest を使ったテンプレートです。GAS は新しい構文に対応していない、ソース管理やテスト、Lint ができない、といった悩みへの答えで、メリットと、使う流れ(クローン、ビルド、デプロイ)を説明しています。 ## Blog › 2018/02 - [GASにGoogleカレンダーのイベント変更検知機能が実装されたので試してみた](https://howdy39.dev/ja/blog/2018-02-28-qiita-gas-calendar-event-triggers.md): 2018年2月26日に GAS に追加された、Google カレンダーのイベント変更の検知機能(Calendar event triggers)を試したので、サンプルのコードを書きました。自分のカレンダーに予定が書き込まれたときや、会議室のカレンダーに予定が登録されたときなどに応用できます。Calendar の高度なサービスを有効にし、トリガーを設定して、実際に予定を作って動かすところまで説明しています。 ## Blog › 2018/01 - [Google App Maker と Apps Script dashboard](https://howdy39.dev/ja/blog/2018-01-12-qiita-app-maker-apps-script-dashboard.md): GAS に追加された Dashboard の機能を、App Maker の目線で確認したメモです。App Maker は、プロジェクトの一覧には出てこず、実行数の画面では、サーバーサイドスクリプトとして認識されていて、関数名が doGet になっている、といった点を書いています。 ## Blog › 2017/12 - [GAS と Stackdriver(Logging, Error Reporting) を連携させる](https://howdy39.dev/ja/blog/2017-12-30-qiita-gas-stackdriver-logging.md): GAS から Stackdriver Logging にログを出力する方法を解説しました。以前書いた、Google ドキュメントにログを出力する記事の後で、Stackdriver がかなり便利だとわかったので、console を使ったログの出力、動作確認用のコード、Stackdriver Logging での確認の流れを説明しています。Apps Script Advent Calendar 2017 の最終日の記事です。 - [Google App Maker ー AppLoader で描画前に処理を行う](https://howdy39.dev/ja/blog/2017-12-29-qiita-app-maker-apploader.md): App Maker の AppLoader を使って、画面を描画する前に処理を挟む方法を解説しました。AppLoader を使わない場合は、ページが読み込まれてからデータの読み込みが始まりますが、使うと、事前にデータを読み込めます。そこまで重要な機能ではないものの、そういう機能がある、と知っておくとよい、という内容です。 - [Google App Maker ー Popup の使い方](https://howdy39.dev/ja/blog/2017-12-28-qiita-app-maker-popup.md): 2017年12月の初めに追加された、App Maker の Popup 系の画面モジュールを使うときに、知っておくとよいことをメモしました。Popup の種類は6つで、clickOutsideToClose、navigateToClose、hasGlass、escapeToClose などの共通オプションがあります。公式にサポートされて、リッチなアプリを作りやすくなりました。 - [Google App Maker ー Resources の使い方](https://howdy39.dev/ja/blog/2017-12-27-qiita-app-maker-resources.md): App Maker の RESOURCES(ファイルのアップロード機能)の使い方をメモしました。アップロードしたファイルは、サイトの Favicon や画像として使えます。最大ファイルサイズは 16MB で、ファイル数は 30 ほどまで確認しました。公式のサイトでも触れられていないので、とっつきにくい部分です。 - [Google App Maker ー Transformerを使いこなす](https://howdy39.dev/ja/blog/2017-12-26-qiita-app-maker-transformers.md): App Maker の Binding Transformers(バインディングのオプション)のうち、よく使うものを厳選して解説しました。#formatDate、#formatNumber、#join、組み合わせ、projection、#readonly などです。表示の仕方を変えられ、スクリプトの行数も減らせるので、使いこなしたい機能です。 - [Google App Maker ー Calculated モデルを使ってスプレッドシートのデータを表示する](https://howdy39.dev/ja/blog/2017-12-26-qiita-app-maker-calculated-model.md): App Maker の Calculated モデルで、スプレッドシートのデータを表示する方法を解説しました。Calculated は読み取り専用で、任意のデータをデータソースにできます。スクリプトからデータを作るパターンと、スプレッドシートから読み込むパターンで、データソースの作り方を説明し、Tables ウィジェットで表示します。 - [Google App Maker ー オーナーや編集者でアプリケーションを公開した場合に実行できることの違い](https://howdy39.dev/ja/blog/2017-12-25-qiita-app-maker-owner-editor-publish.md): App Maker のアプリを、オーナーが公開した場合と、編集者が公開した場合で、実行できることの違いをまとめました。バグが多いので、編集者での公開や、オーナーの変更は、しないほうがよい、というのが結論です。VIEW LOGS が、権限がなく動かない点なども書いています。 - [Google App Maker ー アプリを別のサイトに埋め込む](https://howdy39.dev/ja/blog/2017-12-25-qiita-app-maker-embed-app.md): App Maker のアプリを、別のサイトに埋め込む方法を解説しました。アプリの URL は長くてわかりにくく、作り直したときの再周知も面倒なので、iframe で埋め込むことが多いです。新しい Google サイトに埋め込む場合と、それ以外の場合(Allow embedding app を ON にする)の、2通りを説明しています。 - [Google App Maker ー Roleでモデルと画面を制御する](https://howdy39.dev/ja/blog/2017-12-24-qiita-app-maker-roles.md): App Maker の Role の使い方を解説しました。Role は、定義(APP SETTINGS)と割り当て(DEPLOYMENTS)の2段階で作り、環境ごとに割り当てを変えられます。モデルのデフォルトは AdminsOnly、画面のデフォルトは Everyone で、これらに Role を設定して、セキュリティを考えたアプリを作ります。 - [Google App Maker ー Application 実行アカウントについて](https://howdy39.dev/ja/blog/2017-12-24-qiita-app-maker-execution-account.md): App Maker のサーバースクリプトを、User's account で実行するか、Developer's account で実行するかの違いを解説しました。デフォルトは User's account で、メールの送信元、スプレッドシートの権限、Quota の消費の違いで、使い分けます。 - [Google App Maker ー デフォルトアクションの一覧](https://howdy39.dev/ja/blog/2017-12-12-qiita-app-maker-default-actions.md): App Maker に、デフォルトで用意されているアクション(Custom Action、Navigate to Page、Reload Datasource、Create New Item、Delete Current Item、Open Dialog など)の一覧と概要を、まとめました。コードを書かずに、デフォルトアクションを使って、サクサクアプリを作るための記事です。 - [App Maker 2017年の個人的な総括](https://howdy39.dev/ja/blog/2017-12-01-qiita-app-maker-2017-review.md): 2017年の App Maker との関わりを、個人的に総括しました。2017年7月ごろに始めたきっかけ、日本語の情報がなく、公式のドキュメントやリファレンスで勉強したこと、社内での導入、トレーニング、登壇・LT、Qiita での発信、感想を書いています。 ## Blog › 2017/11 - [Google App Maker ー Drive Tables のバックアップ方法](https://howdy39.dev/ja/blog/2017-11-12-qiita-app-maker-drive-tables-backup.md): App Maker の標準の DB、Drive Tables のバックアップ方法を解説しました。日付フィールドがなければ標準のエクスポート、あればスクリプトを書く、Relation も使っているならさらに頑張ってスクリプトを書く、お金があるなら Cloud SQL を使う、という結論です。エクスポート機能と、スクリプトの2つの方法を説明しています。 ## Blog › 2017/10 - [Google App Maker ー 検索時に日本語を使えるようにする](https://howdy39.dev/ja/blog/2017-10-03-qiita-app-maker-japanese-search.md): App Maker で、データソースのクエリのパラメータに日本語を使うとエラーになる問題の、回避方法を解説しました(2017年10月3日時点)。パラメータの設定側に encodeURIComponent、クエリの実行側に decodeURIComponent を付けると、エラーが出ずに、日本語で検索できます。 - [Google App Maker ー スクリプトから開いているURLを取得する方法](https://howdy39.dev/ja/blog/2017-10-02-qiita-app-maker-get-current-url.md): App Maker のスクリプトから、開いている URL を取得する方法を調べたメモです。サーバーサイドは ScriptApp.getService().getUrl()、クライアントサイドは google.script.url や window.parent.document.referrer を使います。後者は階層構造が変わる可能性があるので、おすすめしません。App Maker の構造についても書いています。 ## Blog › 2017/09 - [Cloud Translation API を使用する際のポイント](https://howdy39.dev/ja/blog/2017-09-27-qiita-cloud-translation-api-points.md): Google の翻訳 API、Cloud Translation API を使うときのポイントをメモしました。POST での変換方法、GET で使うときは URL エンコードが必須なこと、デフォルトのニューラル機械翻訳(NMT)などの2種類の翻訳、言語のサポート、価格、文字数について書いています。 - [Chrome 拡張機能 ー コンテキストメニュー(ContextType/ItemType)](https://howdy39.dev/ja/blog/2017-09-25-qiita-chrome-extension-context-menu.md): Chrome 拡張機能で、コンテキストメニュー(右クリックのメニュー)に項目を追加するときの、ContextType と ItemType をまとめました。background.js での書き方と、contexts に複数の ContextType を指定する方法、chrome.contextMenus.create で複数追加する方法を説明しています。 - [Google App Maker ー PageFragmentインスタンスのハマりやすいところ](https://howdy39.dev/ja/blog/2017-09-17-qiita-app-maker-pagefragment-instance.md): App Maker の PageFragment のインスタンスで、ハマりやすいところをまとめました。PageFragment の使い方は、複数のページにまたがる共通部品と、ページの部品として何度も使う部品の2種類あり、後者がインスタンスです。インスタンスから親ページへのバインドはできますが、親ページからインスタンスへは、できません(スクリプトからは値を取得できます)。 - [Google App Maker ー 実行時のURLパラメータについて](https://howdy39.dev/ja/blog/2017-09-11-qiita-app-maker-url-parameters.md): App Maker の実行時の URL パラメータ、console と devConsoleProjectId について解説しました。PREVIEW で、デバッグ用の画面が出るのは、PREVIEW だからではなく、この URL パラメータのためです。理解すると、PREVIEW でも本番と同じ画面を確認でき、本番環境でも、デバッグの画面を出せます。 - [Google App Maker ー Query を使った検索のテクニック](https://howdy39.dev/ja/blog/2017-09-08-qiita-app-maker-query-techniques.md): App Maker で、一覧の上に絞り込みの条件を入れるときのテクニックを紹介しました。Query Filter は、AND 検索になってしまい、OR の指定ができないので、OR 検索をしたいときは、Query Builder を使います。基本的な使い方と、応用した使い方を、説明しています。 ## Blog › 2017/08 - [Google App Maker ー Drive Tables へのデータ投入方法](https://howdy39.dev/ja/blog/2017-08-31-qiita-app-maker-drive-tables-data-import.md): App Maker の Drive Tables に、データを投入する3つの方法を解説しました。Form ウィジェット、Import Data From Sheet、自分でスクリプトを書く方法です。開発時に何度もデータを登録するときや、本番環境の初期データの登録に使えます。一括削除と、日付を扱うときのタイムゾーンの注意も、書いています。 - [Google App Maker ー 環境の違いを理解する](https://howdy39.dev/ja/blog/2017-08-28-qiita-app-maker-environments.md): App Maker の「環境」の考え方を、メモしました。環境は、PREVIEW、検証、本番のほかに、いくつでも作れること、PUBLISH した時点のソースから配備されること、環境ごとに、プロジェクト ID、Drive Table、Role が、別に用意されることなどを、図つきで、整理しています。 ## Blog › 2017/07 - [Google Domains と G Suiteを使って独自ドメインのメールアドレスを作成する](https://howdy39.dev/ja/blog/2017-07-26-qiita-google-domains-gsuite-custom-email.md): Google Domains が日本でも使えるようになったので、Google Domains と G Suite を使って、独自ドメインのメールアドレスを作る方法を、画面つきで紹介しました。MX レコードの設定などが、自動で行われるので、設定不要で、簡単に作れます。前提は、Google Domains を契約済みで、G Suite は未契約であることです。 - [JsonnetをVisual Studio Codeで使う](https://howdy39.dev/ja/blog/2017-07-06-qiita-jsonnet-vscode.md): Jsonnet を、Visual Studio Code で使うための、拡張機能(vscode-jsonnet)を紹介しました。拡張機能を入れるだけでは動かないので、Homebrew で Jsonnet をインストールします。実行すると、デフォルトでは、YAML 形式で出力されます。 - [Google Apps Scriptのコード補完を徹底解説 #gasja](https://howdy39.dev/ja/blog/2017-07-02-qiita-gas-code-completion.md): GAS のスクリプトエディタの、コード補完のルールを、徹底的に解説しました。変数へ代入された型は補完される、コメントアウトされていても補完される、配列の中身や関数の引数までは、考慮されない、といったルールを、順に説明しています。補完のルールを理解して、GAS をより楽しく便利に使うための記事です。 ## Blog › 2017/06 - [Google Apps Scriptのログ設計 #gasja](https://howdy39.dev/ja/blog/2017-06-25-qiita-gas-logging-design.md): GAS を使い始めて、いちばん辛いと思った、ログ出力(デバッグ)を、なんとかする方法を書きました。Logger.log() や Browser.msgBox() の辛さを整理したうえで、開発時に必要なログは Google ドキュメントに書き込み、処理の結果はメールで送る、というログ設計を紹介しています。のちに、Stackdriver を使う記事を、書きました。 - [Google Sheets APIでセルの値を書き込む方法](https://howdy39.dev/ja/blog/2017-06-14-qiita-sheets-api-write-cells.md): Google Sheets API で、セルの値を書き込む3つの方法の、使い方と違い、どれを使えばよいかを、まとめました。UpdateCellsRequest を、spreadsheets.batchUpdate で使う方法などを、Path parameters、Request body、start や range のプロパティなどとあわせて説明しています。読み込み方法の記事も、あります。 - [Google Sheets APIでセルの値を読み込む方法](https://howdy39.dev/ja/blog/2017-06-03-qiita-sheets-api-read-cells.md): Google Sheets API で、セルの値を読み込む3つの方法の、使い方と違い、どれを使えばよいかを、まとめました。1つ目の spreadsheets.get では、includeGridData、ranges、fields で、セルの情報、範囲、取得する情報を、指定します。値が3つ返ってくる理由も、説明しています。 ## Blog › 2017/05 - [PostmanでOAuthの設定をしてGoogle APIを実行する手順](https://howdy39.dev/ja/blog/2017-05-30-qiita-postman-oauth-google-api.md): Postman で、OAuth の設定をして、Google API を実行する手順を解説しました。Google 側で、OAuth クライアント ID を作り、Postman の認証情報の設定画面に入力して、トークンを取得します。Google API の検証に使っている手順ですが、OAuth に対応したサービスなら、似た方法で使えます。 - [Google Apps Scriptを使った独自メニューの作り方](https://howdy39.dev/ja/blog/2017-05-28-qiita-gas-custom-menu.md): GAS で、スプレッドシート、ドキュメント、フォームに、独自のメニューを追加する方法を、解説しました。Ui クラスの取得、メニューの作成、項目の追加、メニューの追加の流れと、区切り線、サブメニュー、ソースの整え方を、説明しています。メニューから、自分で定義した GAS の処理を動かせます。 - [GoogleスプレッドシートAPIの高速化](https://howdy39.dev/ja/blog/2017-05-18-qiita-sheets-api-speedup.md): Google スプレッドシート API を、高速化するコツを書きました。愚直に、セルへ値を設定するリクエストを送ると、とても遅くなるので、人が画面で操作する要領で、リクエストを書きます。100行×100列の、10,000セルへの書き込みを例に、悪い例と、良い例(updateCells)を、比べています。 - [Google Classroomが一般公開されました](https://howdy39.dev/ja/blog/2017-05-07-qiita-google-classroom-public.md): Google Classroom が、一般の Gmail にも開放されたので、その概要と使い方を、まとめました。クラスを作る(担任)、テーマを変える(教師)、副担任を追加する、といった操作を、画面つきで紹介しています。IT の勉強会や研修で、便利になるかもしれないので、導入の足がかりになる記事です。 ## Blog › 2017/03 - [Google Video Intelligence APIのデモを触ってみた](https://howdy39.dev/ja/blog/2017-03-09-qiita-video-intelligence-api-demo.md): 2017年3月9日に、プライベートベータで公開された、Google の Video Intelligence API の、デモを触ってみました。API を使うには申請が必要ですが、デモページなら、誰でもすぐに試せます。デモページへのアクセス、動画の選択、画面の構成、しばらく放置したときの様子を、紹介しています。 ## Blog › 2017/02 - [GitHubにトピック(タグ)機能が追加されました](https://howdy39.dev/ja/blog/2017-02-01-qiita-github-topics.md): 2017年2月1日に、GitHub に追加された、トピック(タグ)機能を、紹介しました。リポジトリに、自由にトピックを設定でき、トピックで検索もできます。設定の方法、自動で提案されるタグ(機械学習で提案されるが、まだ賢くない)、トピックでの検索の様子を、書いています。 ## Blog › 2017/01 - [Qiitaをより便利にするChrome拡張機能をつくりました](https://howdy39.dev/ja/blog/2017-01-09-qiita-qiita-chrome-extension-q-accelerator.md): 「Qiita にこういう機能があったら、もっと使いやすいのに」と思っていた機能を、Chrome 拡張機能として作ったので、紹介しました。名前は、Q Accelerator で、Qiita での活動を加速させるもの、という意味です。行番号の表示、記事の更新時間の表示などの機能があり、設定画面で選べます。 ## Blog › 2016/11 - [Step by Stepで始めるESLint](https://howdy39.dev/ja/blog/2016-11-28-qiita-eslint-step-by-step.md): JavaScript の静的検証ツール、ESLint を、Step by Step で始める方法を解説しました。チームで統一された、きれいなコードを作るためのツールです。2016年11月時点で、jshint や JSCS と比べて ESLint が伸びていること、環境の準備から、package.json の作成、設定までの流れを、説明しています。 - [Google Slides APIが公開されたので使ってみた](https://howdy39.dev/ja/blog/2016-11-14-qiita-google-slides-api-first-look.md): 2016年11月10日に公開された、Google スライドを操作する API、Google Slides API を、使ってみました。Google スライドとは何か、API の実装例(Markdown からスライドを作る md2gslides など)、ブラウザ上で動くデモ、リファレンスを読む前に知っておくとよいことを、紹介しています。 ## Blog › 2016/10 - [図で理解するJavaScriptのプロトタイプチェーン](https://howdy39.dev/ja/blog/2016-10-03-qiita-javascript-prototype-chain.md): JavaScript のプロトタイプチェーンを、図で理解する記事を書きました。MDN のリファレンスを、より読めるようにすることと、Object や Array など基本型の構造を理解することが目的です。Chrome 52 のコンソールで、ES5 で、説明のしやすさのために `__proto__` を使って、シンプルなオブジェクトから順に、見ています。 ## Blog › 2016/09 - [Chrome拡張機能「Falcon」でWeb閲覧履歴をサクッと検索](https://howdy39.dev/ja/blog/2016-09-20-qiita-chrome-extension-falcon.md): GitHub でトレンド入りしていた、Chrome 拡張機能 Falcon を紹介しました。サイトの中身まで検索の対象にできる、閲覧履歴の検索ツールです。オムニボックスに「f 検索したい文字列」を入れて使います。使い方、オプション、サイトを開いたときの処理と、検索するときの処理の、技術的な解説を、書いています。 - [Granim.jsでグラデーションをアニメーション表示してWebサイトをリッチにしよう](https://howdy39.dev/ja/blog/2016-09-15-qiita-granim-js-gradient-animation.md): GitHub でトレンド入りしていた JavaScript ライブラリ、Granim.js の紹介記事です。グラデーションを、アニメーションで表示して、Web サイトをリッチにできます。デモや API を見ても、わかりづらかった点を中心に、使い方と、API の補足を、書いています。 - [cssnextから学ぶ次世代CSS](https://howdy39.dev/ja/blog/2016-09-08-qiita-cssnext-next-generation-css.md): cssnext が使える、策定中の CSS の機能を、一覧で紹介しました。cssnext は、CSS 版の Babel で、PostCSS のプラグインをまとめたものです。vendor prefix の自動付与、custom properties と var()、@apply、calc() の簡略化などを、取り上げています。策定中の CSS の知識をつけることが目的です。 - [Step by Stepで始めるPostCSS](https://howdy39.dev/ja/blog/2016-09-05-qiita-postcss-step-by-step.md): PostCSS を使って、CSS をモダン化する流れを、Step by Step で解説しました。Sass の代替というより、CSS のエコシステムを作るための共通基盤、という位置づけです。Sass すら使っていない人や、CSS 界隈のライブラリがよくわからない人に向けて、サンプルのページを作るところから始めています。 ## Blog › 2016/08 - [step by stepで始めるwebpack](https://howdy39.dev/ja/blog/2016-08-08-qiita-webpack-step-by-step.md): webpack を、手を動かしながら学べる、初学者向けの資料を作りました(webpack 1 系の記事)。公式のチュートリアルはありますが、webpack を使った OSS のボイラープレートを見ると、世の中の使われ方に沿っていないかもしれない、と思って書きました。最終形のソースも公開しています。 ## Blog › 2016/07 - [Googleクラウド自然言語APIを使ってみた](https://howdy39.dev/ja/blog/2016-07-21-qiita-google-cloud-natural-language-api.md): Google が公開した、クラウド自然言語 API を、使ってみました。どのような API が実装されたのか、API の種類と対応言語、エンティティ分析(Entities)などを紹介しています。デモが用意されているので、試せます。2017年11月に、記事を最新の状態に更新しました。 - [GoogleのWebAPI設計とWebAPI設計のベストプラクティスを比較してみる](https://howdy39.dev/ja/blog/2016-07-19-qiita-google-web-api-design-vs-best-practices.md): 「WebAPI 設計のベストプラクティス」の内容と、普段使っている Google の WebAPI(Calendar API の予定情報)を、項目ごとに、比べてみました。RESTful な URL、SSL、バージョンを URL に含める、フィルタやソートをパラメータで行う、などの項目を、表で整理しています。Google の API デザインガイドへのリンクも、追記しました。 - [Gmailの設定を操作するAPIが開放されました](https://howdy39.dev/ja/blog/2016-07-13-qiita-gmail-api-settings-endpoints.md): 2016年7月7日に追加された、Gmail の設定を操作する API について、何ができるようになるかを、メモがてら解説しました。フィルタの設定、IMAP/POP の設定、転送設定などがあり、メールを送るサービスの開発者や、メールクライアントの開発者、システム管理者が、対象です。 ## Blog › 2016/06 - [GoogleスプレッドシートでGopherを描く with Go](https://howdy39.dev/ja/blog/2016-06-30-qiita-draw-gopher-in-google-sheets-with-go.md): Google スプレッドシートに、Go で、Go のマスコットの Gopher を描いてみました。Excel で絵を描く記事の、スプレッドシート版です。ブラウザで画面を開きながら、裏で API を実行すると、リアルタイムに描かれていきます。1 つの API で同時に変更できるセル数や、連続実行、行列の幅の仕様などの知見も、書いています。 - [Google Pickerを使ってWebサイトのUXを向上させよう](https://howdy39.dev/ja/blog/2016-06-08-qiita-google-picker-ux.md): Google Picker を使って、Web サイトの UX を向上させる方法を紹介しました。Gmail にある、Google ドライブのファイルを選んで貼り付ける機能を、JavaScript を少し書くだけで、自分のサイトに埋め込めます。ドライブのほか、Google フォトなどのピッカーもあり、`` のクラウド版のようなものです。デモも用意しました。 ## Blog › 2016/05 - [Googleスプレッドシートをプログラムから操作](https://howdy39.dev/ja/blog/2016-05-22-qiita-google-sheets-api-intro.md): Google I/O 2016 で、Spreadsheet API v4 がリリースされ、今までのAPI が、システムに組み込めるレベルまで強化されたので、スプレッドシートをプログラムから操作する方法と、実際に何ができるのかを解説しました。データ系と操作系でできること、できないことを、サンプルのスプレッドシートで、試しています。 - [step by stepで始めるKarma](https://howdy39.dev/ja/blog/2016-05-16-qiita-karma-step-by-step.md): Karma を使った、フロントエンドの単体テストを、Step by Step で解説しました。Karma は、ブラウザ上で単体テストを実行する、テストランナーで、ファイルの変更の監視や、結果のレポートの出力もできます。特定のフレームワークに依存せず、プラグインで拡張できます。最後に、重要だと思われる補足も、書いています。 ## Blog › 2016/04 - [フロントエンドにテストを導入](https://howdy39.dev/ja/blog/2016-04-27-qiita-frontend-testing-introduction.md): フロントエンドの、画面の JavaScript のテストを、まったくやったことがない人に向けて、導入の流れを、全体を通して解説しました。Mocha、webpack、Karma のそれぞれの解説は、よく見かけますが、全体像がわからない、という人のために、テストする対象のアプリを作るところから、順に、導入していきます。 ## Blog › 2016/03 - [Google People APIを使ってみる](https://howdy39.dev/ja/blog/2016-03-01-qiita-google-people-api.md): Google の People API が公開されたので、簡単な解説を書きました。Google+ API と Contacts API を合わせたような API で、people.get、people.getBatchGet、people.connections.list などを紹介しています。2017年7月に、登録・更新・削除の機能が追加され、Contacts API を置き換えると明言されたので、追記しました。 ## Blog › 2016/02 - [GoogleAPIを高速化しよう](https://howdy39.dev/ja/blog/2016-02-09-qiita-speeding-up-google-apis.md): Google API を、高速化する方法を、紹介しました。主な方法は4つで、Batch Request、gzip 圧縮、fields パラメータの指定、GAE・GCE です。大量のデータを登録するときは Batch Request が必須で、画面などから API を何度も実行するときは、gzip、fields、GAE・GCE の組み合わせが、効果的です。カレンダーの予定を使って、検証しています。 - [Google APIのBatch Requestの仕組みを理解する](https://howdy39.dev/ja/blog/2016-02-03-qiita-google-api-batch-request.md): Google API の、複数の API をまとめて実行する仕組み、Batch Request を、解説しました。リクエスト数が減ると、API を発行する側の実行速度が上がり、Google 側の負荷も減るので、基本的にデメリットはありません。Drive API でファイルの一覧を取得する例を、Batch Request に変換して、送り方まで説明しています。 ## Speaking › 2026/11 - [Business Technology Conference Japan 2026 スポンサーセッション ビジネスの現場に立ってわかった、情シスにできること](https://howdy39.dev/ja/talks/2026-11-28-btconjp-sponsor-session.md): 2026年11月28日、Business Technology Conference Japan 2026 スポンサーセッション ビジネスの現場に立ってわかった、情シスにできること(登壇)。 ## Speaking › 2026/09 - [マネーフォワードi主催 「情シスから事業会社へ転職した真意」と「Adminaエバンジェリスト」とは?](https://howdy39.dev/ja/talks/2026-09-02-mfi-admina-evangelist-webinar.md): 2026年9月2日、マネーフォワードi主催 「情シスから事業会社へ転職した真意」と「Adminaエバンジェリスト」とは?(登壇)。 ## Speaking › 2026/08 - [Business Notion Community主催 ビジネス利用におけるNotionのリアルな権限管理](https://howdy39.dev/ja/talks/2026-08-22-business-notion-community-permissions.md): 2026年8月22日、Business Notion Community主催 ビジネス利用におけるNotionのリアルな権限管理(登壇)。 - [DXER株式会社主催 情シスの現場からVol. 11「情シス卒業」の中野氏に聞く、変化に強い組織づくりと社内ITの未来 〜「人が足りない」からの脱却と社内ITのカスタマーサクセス〜](https://howdy39.dev/ja/talks/2026-08-06-dxer-syskul-vol11.md): 2026年8月6日、DXER株式会社主催 情シスの現場からVol. 11「情シス卒業」の中野氏に聞く、変化に強い組織づくりと社内ITの未来 〜「人が足りない」からの脱却と社内ITのカスタマーサクセス〜(登壇)。 ## Speaking › 2026/07 - [AI活用・導入の壁と越え方:AIヘルプデスク、結局どう作る? 自作・ノーコード・SaaSの3つを比べてみる](https://howdy39.dev/ja/talks/2026-07-29-ai-helpdesk-pasona-mfi.md): 2026年7月29日、AI活用・導入の壁と越え方:AIヘルプデスク、結局どう作る? 自作・ノーコード・SaaSの3つを比べてみる(登壇)。 ## Speaking › 2025/08 - [Notionウェビナー:業務効率を劇的に改善!STORES社に学ぶ、Notion全社導入の成果とリアルな活用術](https://howdy39.dev/ja/talks/2025-08-22-notion-webinar-stores.md): 2025年8月22日、Notionウェビナー:業務効率を劇的に改善!STORES社に学ぶ、Notion全社導入の成果とリアルな活用術(登壇)。 - [JMUG:JMUG #33 Notionで夏休みの宿題もJNUCも。](https://howdy39.dev/ja/talks/2025-08-07-jmug-33.md): 2025年8月7日、JMUG:JMUG #33 Notionで夏休みの宿題もJNUCも。(登壇)。 ## Speaking › 2025/07 - [IIJ Webセミナー:情シスのチーム力を最大限に引き出す秘訣!ソフトウェアエンジニアリング文化の取り入れ方](https://howdy39.dev/ja/talks/2025-07-11-iij-webinar.md): 2025年7月11日、IIJ Webセミナー:情シスのチーム力を最大限に引き出す秘訣!ソフトウェアエンジニアリング文化の取り入れ方(登壇)。 ## Speaking › 2025/06 - [Beyond Corp IT DAY 2025:SaaS導入に立ちふさがる3つの壁 - Notion導入事例から学ぶ実践プロセス](https://howdy39.dev/ja/talks/2025-06-25-beyond-corp-it-day.md): 2025年6月25日、Beyond Corp IT DAY 2025:SaaS導入に立ちふさがる3つの壁 - Notion導入事例から学ぶ実践プロセス(登壇)。 ## Speaking › 2025/05 - [マネーフォワードi, Notion Labs Japan 共同主催:成長企業の"今"を直撃STORESとNOT A HOTELに聞く情シス業務の効率化](https://howdy39.dev/ja/talks/2025-05-22-stores-not-a-hotel.md): 2025年5月22日、マネーフォワードi, Notion Labs Japan 共同主催:成長企業の"今"を直撃STORESとNOT A HOTELに聞く情シス業務の効率化(登壇)。 ## Speaking › 2025/04 - [うちの情シス: 株式会社マクアケ - 情シスが情シスに聞く7つの質問 ファシリテーター](https://howdy39.dev/ja/talks/2025-04-15-uchi-no-joshisu-makuake.md): 2025年4月15日、うちの情シス: 株式会社マクアケ - 情シスが情シスに聞く7つの質問 ファシリテーター(ファシリテーター)。 ## Speaking › 2025/03 - [うちの情シス: STORES 株式会社 - 情シスが情シスに聞く7つの質問](https://howdy39.dev/ja/talks/2025-03-19-uchi-no-joshisu-stores.md): 2025年3月19日、うちの情シス: STORES 株式会社 - 情シスが情シスに聞く7つの質問(登壇)。 ## Speaking › 2024/10 - [CorpEn Night #1 Dify導入で目指すAIドリブンな組織](https://howdy39.dev/ja/talks/2024-10-18-corpen-night-1.md): 2024年10月18日、CorpEn Night #1 Dify導入で目指すAIドリブンな組織(登壇)。 - [Findy主催 ビジネスを加速させる情シス、コーポレートITとは? "LT『Slackbot × RAG で実現する社内情報検索の最適化』"](https://howdy39.dev/ja/talks/2024-10-02-findy-lt.md): 2024年10月2日、Findy主催 ビジネスを加速させる情シス、コーポレートITとは? "LT『Slackbot × RAG で実現する社内情報検索の最適化』"(LT)。 - [Slackbot × RAG で実現する社内情報検索の最適化](https://howdy39.dev/ja/talks/2024-10-02-slides-slackbot-rag.md): 2024年10月2日、Slackbot × RAG で実現する社内情報検索の最適化(スライド)。 ## Speaking › 2024/09 - [うちの情シス Connect + i (コネクト アイ) キーセッション "AI新時代:情シスが向き合うべきAI活用戦略"](https://howdy39.dev/ja/talks/2024-09-20-connect-i-keynote.md): 2024年9月20日、うちの情シス Connect + i (コネクト アイ) キーセッション "AI新時代:情シスが向き合うべきAI活用戦略"(基調講演)。 - [AI新時代 情シスが向き合うべきAI活用戦略](https://howdy39.dev/ja/talks/2024-09-20-slides-ai-strategy.md): 2024年9月20日、AI新時代 情シスが向き合うべきAI活用戦略(スライド)。 ## Speaking › 2024/07 - [ITmedia 激増するSaaSをどう管理する? 200超のSaaSを利用する企業の情シスが見つけた「理想の姿」](https://howdy39.dev/ja/talks/2024-07-26-itmedia-saas-management.md): 2024年7月26日、ITmedia 激増するSaaSをどう管理する? 200超のSaaSを利用する企業の情シスが見つけた「理想の姿」(メディア)。 - [ITmedia デジタル戦略EXPO 2024 夏 SaaS管理 基調講演 "アカウント管理の理想の実現に向けてSaaS管理ツールを活用しよう"](https://howdy39.dev/ja/talks/2024-07-17-itmedia-expo-keynote.md): 2024年7月17日、ITmedia デジタル戦略EXPO 2024 夏 SaaS管理 基調講演 "アカウント管理の理想の実現に向けてSaaS管理ツールを活用しよう"(基調講演)。 ## Speaking › 2024/04 - [マネーフォワードi主催 Adminaの導入から6ヶ月! STORESがAdmina導入で実現したアカウントライフサイクルの効率化と現在地](https://howdy39.dev/ja/talks/2024-04-17-admina-six-months.md): 2024年4月17日、マネーフォワードi主催 Adminaの導入から6ヶ月! STORESがAdmina導入で実現したアカウントライフサイクルの効率化と現在地(登壇)。 ## Speaking › 2023/10 - [GAS x スプレッドシート x Looker Studio を組み合わせたデバイス管理](https://howdy39.dev/ja/talks/2023-10-11-slides-device-management.md): 2023年10月11日、GAS x スプレッドシート x Looker Studio を組み合わせたデバイス管理(スライド)。 ## Speaking › 2023/05 - [ChatGPTを使った 社内アシスタントBOTを作りました](https://howdy39.dev/ja/talks/2023-05-12-slides-chatgpt-bot.md): 2023年5月12日、ChatGPTを使った 社内アシスタントBOTを作りました(スライド)。 > The links below point to documentation indexes. Follow each `/_llms/` index recursively until you reach documentation pages. ## Indexes - [English (190 pages)](https://howdy39.dev/_llms/en.md): Documentation for English. This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.