{
    "componentChunkName": "component---src-templates-blog-post-jsx",
    "path": "/post/improve-your-work-with-alfred/",
    "result": {"data":{"site":{"siteMetadata":{"title":"WEB EGG","author":"Leko - CTO at Yuimedi"}},"markdownRemark":{"id":"3d8d52db-0e26-5494-b7b4-2d4c447f5327","excerpt":"こんにちは。 最近は、Alfredというアプリに大変お世話になっております。 アプリを起動するのにいちいちトラックパッドを使わなくて済むので、すごく捗ります。 Alfred には、色々な便利機能があるのですが、 今回はもう少し突っ込んだことについて書きたいので、 参考になった記事を貼っておきます。 Mac…","html":"<p>こんにちは。<br>\n最近は、<a href=\"http://www.alfredapp.com/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Alfred</a>というアプリに大変お世話になっております。<br>\nアプリを起動するのにいちいちトラックパッドを使わなくて済むので、すごく捗ります。</p>\n<p>Alfred には、色々な便利機能があるのですが、</p>\n<p>今回はもう少し突っ込んだことについて書きたいので、<br>\n参考になった記事を貼っておきます。</p>\n<blockquote>\n<p><a href=\"http://macwin.org/mac/alfred-2-workflows/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Mac 仕事効率化！Spotlight を完全に超えた神ランチャーアプリ「Alfred 2」の使い方とおすすめ Workflows10 選。[Mac] | MacWin Ver.1.0</a></p>\n</blockquote>\n<!---->\n<blockquote>\n<p><a href=\"http://fujitaiju.com/blog/apple/mac/mac-launch-app-alfred-ver-2/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">[太]Mac のランチャーアプリ Alfred ver2 の新機能「workflows」が結構凄そう。 | Fujitaiju Blog</a></p>\n</blockquote>\n<p>ここからが本題です。<br>\nAlfred には<strong>Workflows</strong>という機能があります。</p>\n<p>この Workflows が非常に強力で、</p>\n<ul>\n<li>Evernote のクリップしてある記事から検索をかけたり</li>\n<li>リマインダーにワンライナーでタスクを追加したり</li>\n<li>Amazon の商品検索のサジェスト機能を使ったり</li>\n<li>カラーコードを入力すると該当する色を表示してくれたり</li>\n<li>URL を入力すると、短縮 URL が生成されてクリップボードにコピーできたり</li>\n</ul>\n<p>と、他にも色々ありますが、 Alfred というアプリ上で、<strong>一つのまとまった作業を一気に行うことができます</strong>。</p>\n<p>で、この中から<br>\n<strong>Web で API が公開されているサービスに何らかの問い合わせをし、<br>\nその結果を元に、何かアクションを起こす</strong></p>\n<p>といったタスクを行う Workflows を作ってみようと思います。</p>\n<p>ググっても、チュートリアル系の記事が１件も見つからなかったので、 ソースを読んで作り方を学んでいきます。</p>\n<p>今回は、日付を入力すると、<br>\n速水もこみちが MOCO’s キッチンで使ったオリーブオイルの量を検索出来る API<br>\n<a href=\"\">MOCO’S キッチンオリーブオイル API</a>を利用した Workflows を作ります。</p>\n<!--more-->\n<h2 id=\"alfred-workflows-の前提知識\" style=\"position:relative;\"><a href=\"#alfred-workflows-%E3%81%AE%E5%89%8D%E6%8F%90%E7%9F%A5%E8%AD%98\" aria-label=\"alfred workflows の前提知識 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Alfred Workflows の前提知識</h2>\n<p>まず、Alfred というアプリをインストールしないと始まらないので、<br>\n<a href=\"http://www.alfredapp.com/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">公式</a>か App Store からインストールをします。<br>\n<strong>インストール+利用は無料</strong>です。</p>\n<a href=\"https://itunes.apple.com/jp/app/alfred/id405843582?mt=12&uo=4\" rel=\"nofollow\" target=\"_blank\">\n<p><img src=\"https://a3.mzstatic.com/us/r1000/069/Purple/v4/b4/7b/51/b47b5118-5ba5-a359-0bc6-e71494225963/appicon.60x60-50.png\" alt=\"undefined\"></p>\n<p><b>Alfred</b></p>\n<p><br /> </a>カテゴリ: 仕事効率化<br>\n価格: 無料<br /></p>\n<p>そして、残念ですが、注意事項です。</p>\n<p><strong>Alfred Workflows(以下 workflows)を利用するには、課金が必要です</strong>。</p>\n<p>価格にして、15 英ポンド、2013/05/21 現在<strong>¥2,300 くらい</strong>です。<br>\nしかし、<strong>それだけのお金を払う価値は十分にある</strong>と思います。</p>\n<p>ここから先の内容は、<br>\nAlfred の有料機能を使うための PowerPack を買った人を対象に進めます。</p>\n<h2 id=\"サンプルの-google-suggest-を利用してみる\" style=\"position:relative;\"><a href=\"#%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AE-google-suggest-%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B\" aria-label=\"サンプルの google suggest を利用してみる permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>サンプルの Google Suggest を利用してみる</h2>\n<p>PowerPack を購入すると、workflows が利用できるようになります。</p>\n<p>まずは感覚をつかむために、<br>\nGoogle Suggest というサンプルを利用します。</p>\n<h3 id=\"1-google-suggest-を作成\" style=\"position:relative;\"><a href=\"#1-google-suggest-%E3%82%92%E4%BD%9C%E6%88%90\" aria-label=\"1 google suggest を作成 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Google Suggest を作成</h3>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 466px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 64.07185628742515%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'257\\'%20viewBox=\\'0%200%20400%20257\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M168%2058v58h27l26-1-2-9c-4-11-4-12%201-8l4%204%2021-53c12-32%2013-33%209-3-4%2021-8%2061-8%2062l3-1c8-3%209-2%203%203l-5%206h42c37%200%2042%200%2043%202%202%201%202%204%202%2015v13h-92l-91%201-1%207v8h184v44l1%2041c0-5%202-7%206-10%204-2%2059-2%2059%201l-1%201c-2%200-3%202-1%202v3c-1%203-1%205%201%203a11141%2011141%200%20001-244V0H168v58m10%2094c-3%203%201%208%205%206%201-2%202-2%203%200h8c2%201%202%201%200%201l-2%201h5l1-4c0-4%200-5-2-5l-3%201h-2c-2-2-5-1-6%201l-1%202v-2c-1-2-5-3-6-1m-92%2011H22v7l-1%208%2065%201h64v-17l-64%201m-46%207c0%204%201%205%204%205l4-1h6l3%201c3%200%203-1%201-7%200-2-4-1-4%201%201%202-1%205-2%203v-3c2-1%200-3-1-1h-3c-2-2-3%200-1%201%202%202%200%204-3%204s-3-2%200-3h3l-3-1c-3%200-3-2%200-2l2-1-3-1c-3%200-3%200-3%205m109%2054l-74%201H1v32h149v-17a146%20146%200%2000-1-16\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/3251ecd147da285e3102b1e26974dd4c/5251b/20130521_step1.webp 167w,\n/static/3251ecd147da285e3102b1e26974dd4c/7390e/20130521_step1.webp 334w,\n/static/3251ecd147da285e3102b1e26974dd4c/fbab0/20130521_step1.webp 466w\"\n              sizes=\"(max-width: 466px) 100vw, 466px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/3251ecd147da285e3102b1e26974dd4c/21521/20130521_step1.png 167w,\n/static/3251ecd147da285e3102b1e26974dd4c/86d36/20130521_step1.png 334w,\n/static/3251ecd147da285e3102b1e26974dd4c/fc1a1/20130521_step1.png 466w\"\n            sizes=\"(max-width: 466px) 100vw, 466px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/3251ecd147da285e3102b1e26974dd4c/fc1a1/20130521_step1.png\"\n            alt=\"Googl\"\n            title=\"Googl\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n    </span></p>\n<p>workflows の下の方にある**[+]**を押し、<br>\n<strong>Examples→Google Suggest</strong>をクリックすると、作成完了です。 workflows のリストに Google Suggest というのが表示されたと思います。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 327px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 22.754491017964074%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'92\\'%20viewBox=\\'0%200%20400%2092\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M35%2012c0%2016-1%2025-2%2025-2%200-5%203-5%205l1%202v3l1%204c0%202%200%203%202%203s3%205%203%2024v14a933%20933%200%20000-80m11-5c0%207%200%207%203%209%203%203%206%204%2011%203a667%20667%200%200113-3c3-3%205-12%204-14%200-2-4-3-4%200%200%202-2%201-3-1s-4%202-4%205v3l-2-7c1-2%201-2-4-2l-7%201h-1l-3-1c-2%200-3%201-3%207m296%2028v57h58V72a5346%205346%200%20000-53V0h-58v35M46%2031c-4%207%204%2017%209%2012%204-4%201-14-5-14l-4%202m16%202c1%204%200%2010-3%2011s-3%204%201%208c5%205%206%208%204%2013l-2%203h7c12%200%2012%200%2012-20s0-19-12-19h-9l2%204m-45%206l-2%201-3%201c-1%201-1%201%201%202%203%200%203%201%200%205-3%203-4%204-1%204h1l3%201h5c3%202%204%200%204-5l-2-5v-1l-2-1-2-1-1-2-1%201m29%2038c-3%206%201%2014%206%2014s7-8%202-13c-3-3-6-4-8-1m14-1l1%202c2%202%202%208-1%2011l-2%203h23v-6c0-10-1-11-12-11l-9%201\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/95bf52c3e5f4aba1345ab080d3afdc36/5251b/20130521_step2.webp 167w,\n/static/95bf52c3e5f4aba1345ab080d3afdc36/e25e9/20130521_step2.webp 327w\"\n              sizes=\"(max-width: 327px) 100vw, 327px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/95bf52c3e5f4aba1345ab080d3afdc36/21521/20130521_step2.png 167w,\n/static/95bf52c3e5f4aba1345ab080d3afdc36/00e65/20130521_step2.png 327w\"\n            sizes=\"(max-width: 327px) 100vw, 327px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/95bf52c3e5f4aba1345ab080d3afdc36/00e65/20130521_step2.png\"\n            alt=\"Googl\"\n            title=\"Googl\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n    </span></p>\n<p>これは、Alfred にあらかじめサンプルとして入っている workflows で、<br>\nこのまま利用できます。</p>\n<h3 id=\"2-使ってみる\" style=\"position:relative;\"><a href=\"#2-%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B\" aria-label=\"2 使ってみる permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. 使ってみる</h3>\n<p>では早速使ってみます。<br>\nAlfred を起動し、<code>g 検索ワード(何でもいい)</code>と入力します。</p>\n<p>例えば<code>g jQ</code>と入力すると、このようなリストが表示されます。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 427px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 75.44910179640719%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'302\\'%20viewBox=\\'0%200%20400%20302\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M0%20151v151h102c101%200%20102%200%20102-2s1-2%2097-2a1078%201078%200%200099%201%208057%208057%200%2000-1-296l-12-1-11-1h-7l-4%201-2-1-1-1-1%201h-47l-1-1-1%201-4%201-4-1-1-1-2%201-3%201-3-1h-6l-6%201c-3%200-3%200-1-1V0l-4%201h-4l-2%201-1-1h-9c-1-1-4-1-5%201l-2-1h-6l-4%201c-2%200-3%200-2-1l-1-1-1%201-19%201-19-1-101-1H0v151M77%2023v8l-2-4c-6-10-22-4-20%208%200%208%205%2012%2013%2011h7c2-1%202-1%202%203l1-14a177%20177%200%2000-1-12m-16%205c-3%203-3%2010%200%2012s6%203%205%201c0-2%202-3%203-2%202%201%203-1%203-6%200-4-3-7-6-7l-5%202m-35%202c-6%206-2%2017%205%2015%203%200%204%201%202%203-2%201-6%200-6-1h-4c-1%202%203%205%207%205%206%200%208-3%208-14%200-8%200-9-2-9l-5-1c-2%200-3%200-5%202m363%2067l1%2029%201-29-1-29-1%2029M22%2074c-1%201-2%203-2%207%200%205%200%205%204%207%206%202%206%205%201%207l-4%201v5c0%207%201%207%2017%207%2018%200%2018%200%2018-13V85l-5-1-9-1-4%201%201-4c0-5-2-8-6-8h-3l2%203c3%204%202%2012-2%2012-5%200-9-8-6-12%202-3%201-4-2-1m0%2044c-1%201-2%203-2%207%200%205%201%206%205%208%205%201%204%204%200%206l-4%201v5c0%207%201%207%2017%207%2018%200%2018%200%2018-13v-10l-5-1-9-1-4%201%201-4c0-5-2-8-6-8h-3l2%203c3%204%202%2012-2%2012-5%200-9-8-6-12%202-3%201-4-2-1m54%205c-2%205%200%2011%204%209%202%200%202%200%202%202l1%202%201-7v-8h-3c-3%200-4%201-5%202m-54%2039c-1%201-2%203-2%207%200%205%201%206%205%208%205%201%204%204%200%206l-4%201v5c0%207%201%207%2017%207%2018%200%2018%200%2018-13v-10l-5-1-9-1-4%201%201-4c0-5-2-8-6-8s-4%200-1%203%202%2010%200%2011c-5%203-11-6-8-11%202-3%201-4-2-1m144%200l-1%207v7h3c4%201%206-1%206-5%200-3-2-6-4-6l-2-2c0-2-1-3-2-1m-90%205c-2%204%200%2011%204%2010%201-1%201%200%202%201%201%204%202%202%202-5v-8h-3c-3%200-4%201-5%202m-54%2039c-1%201-2%203-2%207%200%205%201%206%205%208%205%201%204%204-1%206l-4%201%201%205c1%207%201%207%2017%207%2018%200%2018%200%2018-13v-10l-6-1-8-1-4%201%201-4c0-5-2-8-6-8s-4%200-1%203c4%204%202%2012-3%2012-4%200-8-9-5-13l1-2-3%202m54%205c-2%204%200%2010%204%2010l2%202%201%201%201-7v-8h-3c-3%200-4%201-5%202m-54%2039c-4%205-2%2015%204%2015l2%202c1%202%200%203-4%204l-4%201%201%205c1%207%201%207%2017%207%2018%200%2018%200%2018-13v-10l-6-1-8-1-4%201%201-4c0-5-2-8-6-8s-4%200-1%203c4%204%202%2012-3%2012-4%200-8-9-5-13l1-2-3%202m54%205c-2%204%200%2010%204%2010l2%202%201%201%201-7v-8h-3c-3%200-4%201-5%202\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/0377bd311cac2fb01ac2050d2769b30e/5251b/20130521_step3.webp 167w,\n/static/0377bd311cac2fb01ac2050d2769b30e/7390e/20130521_step3.webp 334w,\n/static/0377bd311cac2fb01ac2050d2769b30e/b957b/20130521_step3.webp 427w\"\n              sizes=\"(max-width: 427px) 100vw, 427px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/0377bd311cac2fb01ac2050d2769b30e/21521/20130521_step3.png 167w,\n/static/0377bd311cac2fb01ac2050d2769b30e/86d36/20130521_step3.png 334w,\n/static/0377bd311cac2fb01ac2050d2769b30e/a7c74/20130521_step3.png 427w\"\n            sizes=\"(max-width: 427px) 100vw, 427px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/0377bd311cac2fb01ac2050d2769b30e/a7c74/20130521_step3.png\"\n            alt=\"Googl\"\n            title=\"Googl\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n    </span></p>\n<p>表示されたものを選択し、Enter を押すと、<br>\nその検索結果ページがブラウザで開かれます。</p>\n<h3 id=\"3-つまり\" style=\"position:relative;\"><a href=\"#3-%E3%81%A4%E3%81%BE%E3%82%8A\" aria-label=\"3 つまり permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. つまり</h3>\n<p>このように、<strong>Google の検索窓で打つのと同じことを、<br>\nAlfred 上で完結できます</strong>。</p>\n<p>今回、<br>\n<strong>url を叩いて json やら xml を入手して、その結果を元に処理を行う</strong>ことがしたいので、<br>\nこのサンプルは非常に参考になります。</p>\n<p>Examples に、同様の機能を持った<strong>Amazon Suggest</strong>というものもあるんですが、<br>\nこちらはコードがあまりシンプルじゃなかったので、Google Suggest の方を見ていきます。</p>\n<h2 id=\"サンプルのコードを読む\" style=\"position:relative;\"><a href=\"#%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E8%AA%AD%E3%82%80\" aria-label=\"サンプルのコードを読む permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>サンプルのコードを読む</h2>\n<p>まず、Google Suggest のコードを、全部貼っつけてみます。<br>\nあまり行数はないです。PHP で書かれています。</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\"><span class=\"token keyword\">require_once</span><span class=\"token punctuation\">(</span><span class=\"token string double-quoted-string\">\"workflows.php\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$wf</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Workflows</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$orig</span> <span class=\"token operator\">=</span> <span class=\"token string single-quoted-string\">'{query}'</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$xml</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$wf</span><span class=\"token operator\">-></span><span class=\"token function\">request</span><span class=\"token punctuation\">(</span> <span class=\"token string single-quoted-string\">'http://google.com/complete/search?output=toolbar&amp;q='</span><span class=\"token operator\">.</span><span class=\"token function\">urlencode</span><span class=\"token punctuation\">(</span> <span class=\"token variable\">$orig</span> <span class=\"token punctuation\">)</span> <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$xml</span> <span class=\"token operator\">=</span> <span class=\"token function\">simplexml_load_string</span><span class=\"token punctuation\">(</span> <span class=\"token function\">utf8_encode</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$xml</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$int</span> <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">foreach</span><span class=\"token punctuation\">(</span> <span class=\"token variable\">$xml</span> <span class=\"token keyword\">as</span> <span class=\"token variable\">$sugg</span> <span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n  <span class=\"token variable\">$data</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$sugg</span><span class=\"token operator\">-></span><span class=\"token property\">suggestion</span><span class=\"token operator\">-></span><span class=\"token function\">attributes</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token operator\">-></span><span class=\"token property\">data</span><span class=\"token punctuation\">;</span>\n  <span class=\"token variable\">$wf</span><span class=\"token operator\">-></span><span class=\"token function\">result</span><span class=\"token punctuation\">(</span> <span class=\"token variable\">$int</span><span class=\"token operator\">.</span><span class=\"token string double-quoted-string\">\".\"</span><span class=\"token operator\">.</span><span class=\"token function\">time</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'$data'</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'$data'</span><span class=\"token punctuation\">,</span> <span class=\"token string double-quoted-string\">\"Search Google for \"</span><span class=\"token operator\">.</span><span class=\"token variable\">$data</span><span class=\"token punctuation\">,</span> <span class=\"token string double-quoted-string\">\"icon.png\"</span> <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token variable\">$int</span><span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">endforeach</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$results</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$wf</span><span class=\"token operator\">-></span><span class=\"token function\">results</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span> <span class=\"token function\">count</span><span class=\"token punctuation\">(</span> <span class=\"token variable\">$results</span> <span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span> <span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n  <span class=\"token variable\">$wf</span><span class=\"token operator\">-></span><span class=\"token function\">result</span><span class=\"token punctuation\">(</span> <span class=\"token string double-quoted-string\">\"googlesuggest\"</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$orig</span><span class=\"token punctuation\">,</span> <span class=\"token string double-quoted-string\">\"No Suggestions\"</span><span class=\"token punctuation\">,</span> <span class=\"token string double-quoted-string\">\"No search suggestions found. Search Google for \"</span><span class=\"token operator\">.</span><span class=\"token variable\">$orig</span><span class=\"token punctuation\">,</span> <span class=\"token string double-quoted-string\">\"icon.png\"</span> <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">endif</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">echo</span> <span class=\"token variable\">$wf</span><span class=\"token operator\">-></span><span class=\"token function\">toxml</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>これで分かる方なら、もう早速作り始められると思います。<br>\n備忘録のために、これを部分的に掻い摘んでいきます。</p>\n<h3 id=\"0-言語について\" style=\"position:relative;\"><a href=\"#0-%E8%A8%80%E8%AA%9E%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6\" aria-label=\"0 言語について permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>0. 言語について</h3>\n<p>その前に、workflows 作成に利用できる言語について。</p>\n<p>Google Suggest も Amazon Suggest も<strong>PHP</strong>で書かれています。<br>\nですが、もちろん<strong>他の言語でも書くことができます</strong>。</p>\n<p>他に対応している言語は、</p>\n<ul>\n<li>bash</li>\n<li>zsh</li>\n<li>Ruby</li>\n<li>Python</li>\n<li>Perl</li>\n</ul>\n<p>があります。</p>\n<p>PHP で書く際の注意点は、<br>\n<strong>ファイルの先頭、末尾に<code>&#x3C;\\?php</code>と<code>?></code>を入れない</strong>こと、くらいです。</p>\n<p><strong>今回は、Google Suggest に倣って書くので、PHP で書きます</strong>。<br>\nご了承下さい。</p>\n<p><span class=\"line-through\">というか PHP 以外の言語あまり分かりません。<span></span></span></p>\n<h3 id=\"1-workflowsphp-と-workflows-クラス\" style=\"position:relative;\"><a href=\"#1-workflowsphp-%E3%81%A8-workflows-%E3%82%AF%E3%83%A9%E3%82%B9\" aria-label=\"1 workflowsphp と workflows クラス permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. workflows.php と Workflows クラス</h3>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\"><span class=\"token keyword\">require_once</span><span class=\"token punctuation\">(</span><span class=\"token string single-quoted-string\">'workflows.php'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$wf</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Workflows</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>この部分、いかにもなクラスを require しています。<br>\nWorkflows クラスは、workflows を作る上でのユーティリティです。</p>\n<p>これのお陰で、通信などの処理を自前で書かずとも、<br>\n簡単に workflows が作成できるようになっています。</p>\n<p><strong>workflows.php は、workflows を作成すると自動的に生成される</strong>ので、<br>\n自前で揃える必要はありません。</p>\n<h3 id=\"2-入力値の格納\" style=\"position:relative;\"><a href=\"#2-%E5%85%A5%E5%8A%9B%E5%80%A4%E3%81%AE%E6%A0%BC%E7%B4%8D\" aria-label=\"2 入力値の格納 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. 入力値の格納</h3>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\"><span class=\"token variable\">$orig</span> <span class=\"token operator\">=</span> <span class=\"token string double-quoted-string\">\"{query}\"</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>とありますが、これは workflows 上での<strong>おまじない</strong>です。</p>\n<p><code>\"{query}\"</code>という文字列は、Google Suggest で設定されている、<br>\n<code>g</code>キーワード以降に入力された文字列に置き換えられます。</p>\n<p>例えば、<code>g jQuery</code>と入力すると、<br>\n$orig には、<code>\"{query}\"</code>ではなく、変換後の<code>jQuery</code>という文字列が入ります。</p>\n<p>どのタイミングで置換が行われるかは、調査はしていません。</p>\n<h3 id=\"3-wf-requesr-url-\" style=\"position:relative;\"><a href=\"#3-wf-requesr-url-\" aria-label=\"3 wf requesr url  permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. $wf->requesr( url )</h3>\n<p>Workflows クラス大活躍です。<br>\nurl を渡すだけでレスポンスを取得できます。</p>\n<p>必要に応じて、<strong>urlencode</strong>を使ってエンコードして下さい。</p>\n<h3 id=\"4-wf-result\" style=\"position:relative;\"><a href=\"#4-wf-result\" aria-label=\"4 wf result permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. $wf->result()</h3>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\"><span class=\"token keyword\">foreach</span><span class=\"token punctuation\">(</span> <span class=\"token variable\">$xml</span> <span class=\"token keyword\">as</span> <span class=\"token variable\">$sugg</span> <span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token variable\">$data</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$sugg</span><span class=\"token operator\">-></span><span class=\"token property\">suggestion</span><span class=\"token operator\">-></span><span class=\"token function\">attributes</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token operator\">-></span><span class=\"token property\">data</span><span class=\"token punctuation\">;</span>\n    <span class=\"token variable\">$wf</span><span class=\"token operator\">-></span><span class=\"token function\">result</span><span class=\"token punctuation\">(</span> <span class=\"token variable\">$int</span><span class=\"token operator\">.</span><span class=\"token string single-quoted-string\">'.'</span><span class=\"token operator\">.</span><span class=\"token function\">time</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string double-quoted-string\">\"<span class=\"token interpolation\"><span class=\"token variable\">$data</span></span>\"</span><span class=\"token punctuation\">,</span> <span class=\"token string double-quoted-string\">\"<span class=\"token interpolation\"><span class=\"token variable\">$data</span></span>\"</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'Search Google for '</span><span class=\"token operator\">.</span><span class=\"token variable\">$data</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'icon.png'</span> <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token variable\">$int</span><span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">endforeach</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>レスポンスを取得したら、<br>\n必要なデータを抜き出して<code>$wf->result</code>に突っ込んでいます。</p>\n<p>result()に突っ込まれたデータが、Alfred 上で表示されます。</p>\n<p>この$wf->result()の引数が分かりにくいので、<br>\nWorkflows.php の中身を見てみました。</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\"><span class=\"token comment\">/**\n * Description:\n * Helper function that just makes it easier to pass values into a function\n * and create an array result to be passed back to Alfred\n *\n * @param $uid – the uid of the result, should be unique\n * @param $arg – the argument that will be passed on\n * @param $title – The title of the result item\n * @param $sub – The subtitle text for the result item\n * @param $icon – the icon to use for the result item\n * @param $valid – sets whether the result item can be actioned\n * @param $auto – the autocomplete value for the result item\n * @return array – array item to be passed back to Alfred\n */</span>\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">function</span> <span class=\"token function-definition function\">result</span><span class=\"token punctuation\">(</span> <span class=\"token variable\">$uid</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$arg</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$title</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$sub</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$icon</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$valid</span><span class=\"token operator\">=</span><span class=\"token string single-quoted-string\">'yes'</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$auto</span><span class=\"token operator\">=</span><span class=\"token constant\">null</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$type</span><span class=\"token operator\">=</span><span class=\"token constant\">null</span> <span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// …</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>という引数になっています。<br>\nリストに見える部分は、$titleと$sub、$icon です。</p>\n<p>$arg は、取得結果を表示した<strong>次のアクションに渡される値</strong>です。</p>\n<p>例えば、取得結果に URL が存在する場合には、その URL を$argに渡しておくと、<br>\n次のURLを開くアクションなどで$arg の値を渡すことができます。</p>\n<h3 id=\"5-echo-wf-toxml\" style=\"position:relative;\"><a href=\"#5-echo-wf-toxml\" aria-label=\"5 echo wf toxml permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5. echo $wf->toxml();</h3>\n<p>workflows は、<code>echo $wf->toxml()</code>で echo された xml 文字列を受け取って、リスト表示するようです。</p>\n<h3 id=\"6-まとめ\" style=\"position:relative;\"><a href=\"#6-%E3%81%BE%E3%81%A8%E3%82%81\" aria-label=\"6 まとめ permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>6. まとめ</h3>\n<p>これらの処理をすごくざっくりまとめると、</p>\n<ol>\n<li>$wf->request()で API を叩く</li>\n<li>レスポンスから、使いたいデータを$wf->result()に突っ込む</li>\n<li>echo $wf->toXML()でリスト表示させる</li>\n</ol>\n<p>と言った３ステップになると思います。</p>\n<h3 id=\"補足-キーワード--\" style=\"position:relative;\"><a href=\"#%E8%A3%9C%E8%B6%B3-%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89--\" aria-label=\"補足 キーワード   permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>補足. キーワード？ ？ ？</h3>\n<p><code>g 検索ワード</code>のように、<br>\n<code>g</code>というキーワードにこの workflows が反応させるように決めます。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 233px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 82.63473053892216%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'330\\'%20viewBox=\\'0%200%20400%20330\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M0%20165v165h401V0H0v165m144-88l1%201%2027%2017c0%201-3%203-24%2014-23%2013-31%2016-31%2015l4-7c4-7%204-7-1-8l-7-1c-11-2-14-2-14%200a1590%201590%200%20001%20122c4%208-3%207%20103%207h94l3-4%204-3v-30l1-29h8c10-1%2014-2%2017-8l2-3h68v-7h-68l-2-3c-3-5-6-6-16-7h-9l-1-29c-1-33-1-33-7-36-4-2-153-3-153-1m53%2014c-3%204%200%2012%205%2010l1%201-3%202c-4%200-5%201-2%202%206%201%209-5%208-13-1-3-7-4-9-2m-28%2025c-12%2013%206%2042%2019%2029%206-7%205-18-3-27-3-4-4-4-9-4-4%200-6%200-7%202m29%201c8%209%206%2020-3%2029-7%207-7%209%202%2017l9%2010c2%206%201%2018-3%2021-3%201%200%202%2014%202%2026%200%2025%202%2025-42v-33l-4-4-3-3h-39l2%203m-37%2030v21l5-1%209-2h5l-1-4c-1-3-2-5-1-6%201-2%200-3-5-4l-9-3-3-1\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/ca0021645ef8ff4f7e12e981a277d3ed/5251b/20130521_step4.webp 167w,\n/static/ca0021645ef8ff4f7e12e981a277d3ed/55df6/20130521_step4.webp 233w\"\n              sizes=\"(max-width: 233px) 100vw, 233px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/ca0021645ef8ff4f7e12e981a277d3ed/21521/20130521_step4.png 167w,\n/static/ca0021645ef8ff4f7e12e981a277d3ed/a1d58/20130521_step4.png 233w\"\n            sizes=\"(max-width: 233px) 100vw, 233px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/ca0021645ef8ff4f7e12e981a277d3ed/a1d58/20130521_step4.png\"\n            alt=\"Scrip\"\n            title=\"Scrip\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n    </span></p>\n<p>反応させるキーワードは、図の上部に書かれた文字を見れば分かります。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 338px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 34.13173652694611%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'136\\'%20viewBox=\\'0%200%20400%20136\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M0%204l1%205v1l-1%207v6h401V0H0v4m125%2038v28c2%202%20175%202%20177%200V42c-2-2-175-2-177%200m2%204v12l1%2010h172V46l-86-1-87%201m198%202l-7%201c-7%200-8%201-8%209%200%207%201%208%2010%208h7v-8l1-9c1-1%201-3-1-3l-2%202m29%205c0%202-1%203-3%201s-3%200-2%205c0%204%201%205%205%204%202%200%203-1%203-3%201-4%203-4%203%200l1%203%201-4c0-4%200-4-2-4s-3-1-3-2l-1-2-2%202m-221%202l-2%204%202%204v1c-3%200-2%202%201%203%204%200%206-2%206-8-1-5-3-6-7-4m-73%201c-2%202-1%204%201%206s5%202%206%200l-2-1h-2c-1-1%200-1%201-1%202%200%203-1%203-2l2%202v5c0%202%200%202%201%201l2-1%202-5%201-3%201%203c2%204%203%204%205%201%201-2%201-2%201%200%200%204%203%203%205-2l1-3v3c0%205%205%207%208%203%202-5%200-7-6-7-4%200-5%201-5%202l-1%201-1-1-1-2-2%202-1%201-1-1c0-3-5-2-6%200%200%202%200%202-2%200-1-2-8-3-10-1m66%2038v13h275l-137-1H127V82h137l137-1H126v13m0%2034v9l1-9v-8h137l137-1H126v9\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/729a17f2a5636d536336da4ba57454a7/5251b/20130521_step5.webp 167w,\n/static/729a17f2a5636d536336da4ba57454a7/7390e/20130521_step5.webp 334w,\n/static/729a17f2a5636d536336da4ba57454a7/9a593/20130521_step5.webp 338w\"\n              sizes=\"(max-width: 338px) 100vw, 338px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/729a17f2a5636d536336da4ba57454a7/21521/20130521_step5.png 167w,\n/static/729a17f2a5636d536336da4ba57454a7/86d36/20130521_step5.png 334w,\n/static/729a17f2a5636d536336da4ba57454a7/2b41d/20130521_step5.png 338w\"\n            sizes=\"(max-width: 338px) 100vw, 338px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/729a17f2a5636d536336da4ba57454a7/2b41d/20130521_step5.png\"\n            alt=\"反応させたいキーワードを入力する\"\n            title=\"反応させたいキーワードを入力する\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n    </span></p>\n<p>反応キーワードを変更したい場合には、<br>\nこの図をダブルクリックして、keyword を変更すれば OK です。</p>\n<h2 id=\"今回作るものの詳細\" style=\"position:relative;\"><a href=\"#%E4%BB%8A%E5%9B%9E%E4%BD%9C%E3%82%8B%E3%82%82%E3%81%AE%E3%81%AE%E8%A9%B3%E7%B4%B0\" aria-label=\"今回作るものの詳細 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>今回作るものの詳細</h2>\n<p>冒頭でも話しましたが、<br>\n今回は、<a href=\"\">MOCO’s キッチンオリーブ API</a>を利用したサンプルを作ります。</p>\n<p>今回使用するキーワードは、<code>mocos</code>として、</p>\n<ul>\n<li><code>mocos 日付(YYYY-MM-DD)[,日付…]</code>と入力する</li>\n<li>該当する日付に使われたオリーブの数とレシピの名前を表示</li>\n<li>レシピを選択して Enter キーを押すとブラウザでレシピが見える</li>\n<li><code>YYYY/MM/DD</code>形式でも入力を受け付ける</li>\n</ul>\n<p>と言った機能を作ります。 完成図はこんな感じ。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 428px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 42.51497005988024%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'171\\'%20viewBox=\\'0%200%20400%20171\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M0%2086v85h102c89%200%20101%200%20101-2l36-1a305%20305%200%200142%201h23l1-1%201%201c-1%201%200%201%202%201l4-1c0-2%2010-1%2010%200-1%201%201%202%204%202s5-1%205-2l2-1%202%202%201%201%201-1c0-1%201-2%203-2%201%200%202%200%201%201-2%200-1%202%201%202l2-1c0-2%204-2%204%200l2%201v-1c0-2%201-2%203-2l3%201c-1%201%200%201%202%201s2%200%201-1-1-1%201-1l3%201c-1%201%200%201%202%201l2-1c-1-1%200-1%202-1l2%201c-1%201%200%201%202%201s2%200%201-1-1-1%201-1l3%201c-1%201%200%201%202%201l2-1c-1-1%201-1%204-1l5%201c-1%201%200%201%201%201l2-1c-1-1%200-1%201-1l1%201c-1%201%200%201%202%201h3V85l-1-74-1%2012V5l-98-1c-97%200-98%200-98-2s-1-2-101-2H0v86m22-50l1%2018%201-3c0-3%200-4%202-4l1-5%202-7c3-4%204-2%204%206%200%205%200%206%202%206s2-1%202-6c0-6%201-8%204-7l1%207c0%205%200%206%202%206s2-1%202-7c0-9-1-10-12-10l-10%201v-7l-1-6-1%2018m100-9c-2%202-2%206%200%207l1-2c1-3%203-4%206-3s2%204-1%206c-5%203-8%207-9%209v3h8c9-1%2012-3%203-3-7%200-7-1-1-5s7-7%204-11c-2-3-8-4-11-1m17%200c-4%204-4%2015-1%2019%203%202%207%202%2010%200%204-4%204-16%200-19-3-3-7-3-9%200m20%200l-3%202-2%202%203%201c2%200%202%200%202%208%200%206%200%207%202%207s2-1%202-11c0-11-1-14-4-9m13%200c-2%202-3%206%200%206l1-1c0-3%204-4%206-3%202%202%201%205-2%205l-2%202%201%201c3%200%205%203%204%205-2%203-6%203-7-1-1-2-3-2-4%200-1%205%208%209%2012%205%203-2%204-8%202-10v-2c3-6-6-13-11-7m25%200c-5%204-4%2018%202%2020s10-2%2010-11c0-10-6-14-12-9m16%202c-2%208-1%2011%203%208%201-2%206%200%206%202%200%205-5%207-7%204%200-2-4-3-4-1%200%206%2010%208%2014%203%203-6%200-12-6-12-2%200-3%200-3-2s1-2%205-2c3%200%204%200%204-2%200-1-2-2-6-2h-6v4m25-2c-2%202-2%206%200%207l2-2c1-4%203-5%206-3%202%202%201%204-4%207-4%203-6%206-6%209%200%202%201%202%208%202l7-1c0-2-1-2-5-2-7%200-7-1-1-5%204-2%206-5%206-8%200-5-9-8-13-4m21%200l-3%202-2%202%203%201c2%200%202%200%202%208%200%206%200%207%202%207s2-1%202-11c0-11-1-14-4-9m21%200l-2%204c0%204%203%204%203%201%201-3%203-4%206-3s2%204-1%206c-5%203-9%208-9%2010s0%202%208%202c9-1%2012-3%203-3-7%200-7-1-1-5s7-7%204-11c-2-3-7-4-11-1m16%200c-5%206-3%2018%203%2020s10-3%2010-11c0-10-7-14-13-9m21%200l-3%202-2%202%203%201c2%200%202%200%202%208%200%206%200%207%202%207s2-1%202-11c0-11-1-14-4-9m12%201c-2%202-2%205%201%205l1-1c0-3%204-4%206-3%202%202%201%205-2%205l-2%202%201%201c3%200%205%203%204%205-2%203-6%203-7-1-1-2-3-2-4%200-1%205%208%209%2012%205%203-2%204-8%202-10v-2c4-7-7-13-12-6m26-1c-5%204-4%2018%202%2020s10-2%2010-11c0-10-6-14-12-9m16-1l-1%206c-1%206%200%207%204%205%202-2%205%200%206%202%201%204-5%207-7%204%200-2-4-3-4-1%200%204%205%206%209%205%208-1%208-14-1-14-2%200-3%200-3-2s1-2%205-2c3%200%204%200%204-2-1-2-12-3-12-1m-229%203c-3%202-4%208-2%2012%201%203%204%204%206%202s1-12-1-13c-1-2-1-2-3-1m58%201c-3%202-2%2012%200%2013%203%202%205-1%205-7%200-7-2-10-5-6m99-1c-3%204-2%2015%202%2015%203%200%204-3%204-8%200-7-3-10-6-7M50%2032c-5%206-1%2017%206%2016%205-1%207-4%207-9%200-8-8-12-13-7m16%201c-2%203-3%209-1%2011%204%205%2013%204%2013-2%200-3-2-2-4%200-2%203-5%203-6%200-1-7%203-11%206-7%202%202%204%203%204%200%200-5-8-7-12-2m15-1c-5%206-1%2017%206%2016%204-1%206-3%207-6%202-10-6-16-13-10m17%200c-4%203-2%207%205%208l3%203c0%202-6%202-6%200-1-3-4-2-4%200%201%206%2010%206%2013%201%202-4%200-6-6-7-3-1-4-3-1-4l3%201c2%202%204%202%204%201%200-5-7-6-11-3M20%2092v17h18l18-1-4-5c-4-4-5-4-8-3h-5l-2-1%202-1c8-4%208-12%201-15-4-2-2-3%206-2%206%200%208-1%206-4l-1-3H20v18m188%2026l-2%201-3%201c0%201-1%201-2-1l-3-1c-1%201%203%205%204%204l1%205c0%203%200%204-1%201%200-3-4-5-4-2l1%201c2%200%201%204%200%205l-1%202h17v-6l-1-6c-1%200-2%200-1-1h1l1-1-2-1-4-1h-1M20%20136v17h18l18-1-4-5c-4-4-5-4-8-3h-5l-2-1%203-1c6-4%207-12%200-15-4-2-2-3%206-2%206%200%208-1%206-4l-1-3H20v18m199-16l-1%203v10c-1%202%200%202%207%202%208%200%2010-1%208-3s-1-7%200-7v-1l-1-4c0-2%200-2-6-2-7%200-7%200-7%202m-142%201c-4%203-2%2013%203%2013%203%200%204-3%204-8%200-4-2-7-4-7l-3%202m44-1v13c2%202%206%201%207-1%204-7-2-17-7-12m45%200v13c2%202%206%201%207-1%204-7-2-17-7-12\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/3f7cebfb74bc7412a0b0d3f8e5d1425d/5251b/20130521_step6.webp 167w,\n/static/3f7cebfb74bc7412a0b0d3f8e5d1425d/7390e/20130521_step6.webp 334w,\n/static/3f7cebfb74bc7412a0b0d3f8e5d1425d/3b73a/20130521_step6.webp 428w\"\n              sizes=\"(max-width: 428px) 100vw, 428px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/3f7cebfb74bc7412a0b0d3f8e5d1425d/21521/20130521_step6.png 167w,\n/static/3f7cebfb74bc7412a0b0d3f8e5d1425d/86d36/20130521_step6.png 334w,\n/static/3f7cebfb74bc7412a0b0d3f8e5d1425d/47730/20130521_step6.png 428w\"\n            sizes=\"(max-width: 428px) 100vw, 428px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/3f7cebfb74bc7412a0b0d3f8e5d1425d/47730/20130521_step6.png\"\n            alt=\"MOCO&#39;sキッチンオリーブAPIのWorkflow完成図\"\n            title=\"MOCO&#39;sキッチンオリーブAPIのWorkflow完成図\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n    </span></p>\n<p>この API はパラメータは１種類しか取らず、<br>\nその書式もはっきりしているので Hello world に最適だと思います。</p>\n<h2 id=\"今回利用する-api-について学ぶ\" style=\"position:relative;\"><a href=\"#%E4%BB%8A%E5%9B%9E%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B-api-%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E5%AD%A6%E3%81%B6\" aria-label=\"今回利用する api について学ぶ permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>今回利用する API について学ぶ</h2>\n<p>MOCO’s キッチンオリーブ API の URL は、<br>\n<code>GET:</code> です。</p>\n<p>パラメータは<code>date</code>のみで、<br>\n値は、<code>YYYY-MM-DD</code>形式の日付です。<br>\nカンマ区切りで複数書くこともできます。</p>\n<p><span class=\"removed_link\" title=\"http://pastak.cosmio.net/mocoDB/oliveAPI/getJson.php?date=2013-05-21\"></span><br>\nにアクセスして、レスポンスを整形したものが以下です。</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token punctuation\">{</span> <span class=\"token string\">\"2013-05-21\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span> <span class=\"token string\">\"menu\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"もこみち流　ペンネのミネストローネ\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"http://www.ntv.co.jp/zip/mokomichi/397800.html\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"olive\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"大２\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"thumb\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"http://pastak.cosmio.net/mocoDB/oliveAPI/img/thumb_800.jpg\"</span> <span class=\"token punctuation\">}</span> <span class=\"token punctuation\">}</span></code></pre></div>\n<p>レスポンスは、上記の形式で得られます。</p>\n<h2 id=\"コードの説明\" style=\"position:relative;\"><a href=\"#%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E8%AA%AC%E6%98%8E\" aria-label=\"コードの説明 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>コードの説明</h2>\n<p>先ほどの Google Suggest にならって作ったコードがこちらです。</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\"><span class=\"token php language-php\"><span class=\"token delimiter important\">&lt;?php</span>\n\n <span class=\"token keyword\">require_once</span><span class=\"token punctuation\">(</span><span class=\"token string single-quoted-string\">'workflows.php'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token variable\">$wf</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Workflows</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token variable\">$in</span> <span class=\"token operator\">=</span> <span class=\"token string double-quoted-string\">\"{query}\"</span><span class=\"token punctuation\">;</span> <span class=\"token function\">define</span><span class=\"token punctuation\">(</span><span class=\"token string double-quoted-string\">\"REQUEST_URL\"</span><span class=\"token punctuation\">,</span> <span class=\"token string double-quoted-string\">\"http://pastak.cosmio.net/mocoDB/oliveAPI/getJson.php\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// YYYY/MM/DD形式の場合パラメータを変換 $in = str_replace(\"/\", \"-\", $in); $url = REQUEST_URL.\"?date=\".$in; $json = json_decode($wf->request($url)); // エラーがある場合 if ( $json->error ) { $wf->result(time(), \", $json->error, \", 'icon.png'); // 正常に取得ができた場合 } else { foreach($json as $menu => $info) { $title = $menu.\": \".$info->olive.\"オリーブ\"; $wf->result(time(), $info->url, $title, $info->menu, 'icon.png'); } } echo $wf->toXML();</span></span></code></pre></div>\n<p>先ほどの Google Suggest の例を見れば、<br>\n特に難しいことは無いと思います。</p>\n<p>PHP で JSON のパースを行うには、<code>json_decode()</code>を利用します。</p>\n<p>ポイントは、<br>\n<strong>result()の第２引数$arg に、レシピの URL を設定している</strong>ところです。</p>\n<p>これによって、この後に続く**「URL を開く」という処理が可能に**なります。</p>\n<p>workflows の全体図と open URL の設定内容がこちらです。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 36.52694610778443%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'146\\'%20viewBox=\\'0%200%20400%20146\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M0%2073v73h401V0H0v73m140%203c-2%202-2%203-2%2028l1%2027c1%202%203%202%2037%202%2042%200%2038%202%2038-16v-12h47l48%201v12l1%2014c2%202%2071%202%2073%200l1-28c0-25%200-27-2-28-2-3-68-3-71-1-2%201-2%204-2%2015v13h-95V90c0-12%200-13-2-14-2-2-7-2-36-2-33%200-34%200-36%202m47%2013v1l1%202c-1%202-2%202-7%202l-6%201c-1%201%200%201%201%201%204%200%206%204%205%207%200%202%200%202-1%201-1-2-1-2-1%200%201%202%201%203-1%204-3%202-1%203%203%203%203-1%204-1%205%201%205%206%205%205%205-10%200-13%200-14-2-14l-2%201\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/0c4e96de820785fb0fa79b0bdc07edad/5251b/20130521_step71.webp 167w,\n/static/0c4e96de820785fb0fa79b0bdc07edad/7390e/20130521_step71.webp 334w,\n/static/0c4e96de820785fb0fa79b0bdc07edad/e88ff/20130521_step71.webp 600w\"\n              sizes=\"(max-width: 600px) 100vw, 600px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/0c4e96de820785fb0fa79b0bdc07edad/21521/20130521_step71.png 167w,\n/static/0c4e96de820785fb0fa79b0bdc07edad/86d36/20130521_step71.png 334w,\n/static/0c4e96de820785fb0fa79b0bdc07edad/0a47e/20130521_step71.png 600w\"\n            sizes=\"(max-width: 600px) 100vw, 600px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/0c4e96de820785fb0fa79b0bdc07edad/0a47e/20130521_step71.png\"\n            alt=\"Workflows全体図\"\n            title=\"Workflows全体図\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n    </span></p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 29.34131736526946%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'117\\'%20viewBox=\\'0%200%20400%20117\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M52%208l-1%207v7l1-7%201-6%20137-1h138v14h33a396%20396%200%20001-1h-33V8h33l33%201v3l1%204V8L224%207%2052%208m27%205c0%202%200%202-1%201-2-2-5-1-5%201v3l-1-3c-1-2-2-3-4-1h-1c0-2-2-1-2%201s0%202-1%200c-1-3-6-2-7%201%200%202%200%203%202%203h9c7%200%207%200%207-2s0-2%201-1v3l1%201%202-1h1l2%201%201-4c-1-5-2-6-4-3M51%2083v7l1%205h182l-91-1H53l-1-6v-6h4l5-1h-5c-4%200-5%200-5%202m-40%204c0%204%200%204%203%204s4-1%204-2c1-2%201-2%202%200s3%203%205%201h1c0%201%204%201%205-1h1c0%201%201%202%204%202l3-1v-1l1-1-2-2-2%202h-1v-1l-2-1-3%201h-1l-7-1-6-1c-2-3-5-1-5%202m92%200c0%204%200%204%204%204%202%200%203-1%203-2%200-2%200-2%201%200s3%203%205%201h7l2%201%202-1h1c1%202%206%201%207-2%201-2%201-2-1-2l-1%201h-25c-1%201-1%201-1-1l-2-2c-2%200-2%201-2%203\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/d1b0f159918dcc70081862f2e4343af2/5251b/20130521_step8.webp 167w,\n/static/d1b0f159918dcc70081862f2e4343af2/7390e/20130521_step8.webp 334w,\n/static/d1b0f159918dcc70081862f2e4343af2/e88ff/20130521_step8.webp 600w\"\n              sizes=\"(max-width: 600px) 100vw, 600px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/d1b0f159918dcc70081862f2e4343af2/21521/20130521_step8.png 167w,\n/static/d1b0f159918dcc70081862f2e4343af2/86d36/20130521_step8.png 334w,\n/static/d1b0f159918dcc70081862f2e4343af2/0a47e/20130521_step8.png 600w\"\n            sizes=\"(max-width: 600px) 100vw, 600px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/d1b0f159918dcc70081862f2e4343af2/0a47e/20130521_step8.png\"\n            alt=\"ope\"\n            title=\"ope\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n    </span></p>\n<p>繰り返しますが、<strong>$wf->result()の第二匹数$arg は、次の処理へ渡す値を指定しています</strong>。<br>\nそして、<strong>次の処理でも同様に<code>\"{query}\"</code>という文字列で値を取ることが出来る</strong>ようです。</p>\n<h2 id=\"まとめ\" style=\"position:relative;\"><a href=\"#%E3%81%BE%E3%81%A8%E3%82%81\" aria-label=\"まとめ permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>まとめ</h2>\n<p>web API と連携した Alfred Workflows の作り方は、<br>\nこのような感じになっています。</p>\n<p>シンプルな MOCO’s キッチン API だから簡単だったわけではなく、<br>\n他の API を利用しても同様の方法でかなり簡単に書けます。</p>\n<p>これを機に、是非皆さんも workflow 製作者になってみては如何でしょうか。</p>\n<ul>\n<li>\n<p><a href=\"http://www.alfredapp.com/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Alfred App – Productivity App for Mac OS X</a></p>\n</li>\n<li>\n<p><a href=\"http://veadardiary.blog29.fc2.com/blog-entry-4425.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Alfred 2 のユーザ体験をロケットスタートで始めるための 13 の偉大な Workflow – Mac の手書き説明書</a></p>\n</li>\n<li>\n<p><a href=\"http://veadardiary.blog29.fc2.com/blog-entry-4435.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Alfred 2 の Workflow をまとめたサイト『Alfred 2 Workflow List』が宝の山</a></p>\n</li>\n<li>\n<p><a href=\"http://appdrill.net/63089/alfred2-workflows.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">[Mac] バージョンアップした Alfred2 で使える、おすすめ Workflows まとめ 20 個。 « Appdrill</a></p>\n</li>\n</ul>","timeToRead":13,"frontmatter":{"title":"Alfred2のWorflowsを自作して作業を効率化する","tags":["Alfred Workflows","PHP"],"date":"May 22, 2013","featuredImage":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='143'%20viewBox='0%200%20400%20143'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%2072v71h401V0H0v72m59-55l-9%206c-13%2013-11%2034%204%2043%203%202%204%203%203%204v3l-1%203c-1%201%200%202%201%203%204%202%205%201%206-4%201-6%201-6%205-6%203%200%2010-3%2013-6l4-2h2c4-5%205-9%202-7-1%201-1%201-1-1l2-5c0-3%201-3%202-3%202%201%202%201%202-5-2-17-18-27-35-23m1%203c2%200%201%201-2%203-9%207-13%2021-9%2030l3%205v2c-2%201%203%205%209%206%208%202%2013%200%2019-6%2010-10%2011-25%202-34-6-5-9-7-17-7-4%200-6%200-5%201m152%2010l1%201%201%2010-1%209-1%202%205%201%204-1-1-2-1-11V28h-3c-3%200-4%200-4%202m16%200l-2%204-1%202-2%202%202%201%201%205-1%206c-4%202-2%203%203%203s7-1%204-3c-3-1-3-11%200-11l2-1-2-2-2-2%202-3%202-2c0-2-4-1-6%201m52-1l2%202c2%201%201%206-1%205-6-1-9%202-9%208-1%207%204%2011%209%208h2l3%201%203-1-1-2-1-11V28h-3l-4%201m-90%2010l-6%2011c-2%203-1%203%203%203s4%200%203-2c0-3%201-4%206-4%205-1%207%201%205%204-1%202-1%202%203%202%205%200%207-1%204-3l-6-11c-3-9-4-10-6-10s-3%201-6%2010m47-2l2%202c2%201%202%2010-1%2012-2%201-1%202%205%202%204%200%204-1%203-2-4-3-2-11%202-11%201%200%203-2%203-4l-6%201h-8m18%202c-6%207%202%2017%2011%2013%204-1%202-3-2-3-3%201-4%201-5-1-3-2-2-3%204-3s7-1%205-5c-3-5-10-6-13-1m3%2046l2%202c2%201%202%2019-1%2019-2%202%200%203%204%204%204%200%206-2%204-4l-2-3v-2l2%202%204%205c2%202%206%202%207%200l-1-1-5-4-2-3%203-4c5-4%205-4-1-4-3%200-4%200-4%202v3c-2%204-3%202-3-5v-8h-3l-4%201m26%201l-2%204-2%202v2c1%201%202%203%202%207l-2%206c-2%201%200%203%205%203%204-1%205-2%203-3-3-2-2-11%201-12%202%200%202-2-1-3-3%200-3-4%201-5l2-1c-1-2-5-2-7%200m10-1c-1%201-1%202%201%202s2%2019-1%2019c-2%202%200%203%204%204%204%200%206-2%204-4-2-1-2-3-2-11V84h-3l-3%201m-111%201l1%202%204%2010c3%2012%203%2012%206%2011l4-8c3-10%203-10%206-1%204%2014%206%2013%2011-2%201-6%203-10%204-10l1-1c0-2-1-2-4-2-4%200-5%200-5%202l1%201-1%206-2%207-3-8c-4-11-5-10-9%201l-3%208-2-7-1-7c3-1%201-3-3-3l-5%201m43%207c-2%200-4%205-4%208%200%209%2013%2011%2016%204%203-8-4-16-12-12m16%200l2%202c2%201%202%2011-1%2011-2%201-1%203%203%204%204%200%207-3%204-4v-9l3-1c1%200%203-2%203-4l-6%201h-2c0-2-6-1-6%200m66%201c-6%206-2%2015%206%2015%207%200%2011-11%205-15-3-3-8-3-11%200m17%200l1%201%203%207c2%206%202%207%204%207s3-1%204-5c2-7%203-7%204-1%202%209%205%209%209-2l3-6%201-1c0-2-1-2-4-2-5%200-6%201-4%203v5l-1%205-2-6c-2-9-5-9-8-1l-1%206-2-4v-5c2-2%201-3-3-3s-5%200-4%202m34-1c-4%201-3%206%202%209%204%202%204%202%203%204h-5c-1-3-3-2-3%201%200%202%200%202%203%202%205%200%206%200%208-2%203-3%202-5-3-8l-3-3h5c1%203%202%202%202-1s0-3-4-3l-5%201'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":2.783333333333333,"src":"/static/b72978eac58fe18d3788a3e680ae77d8/f32f2/featured-image.jpg","srcSet":"/static/b72978eac58fe18d3788a3e680ae77d8/466a3/featured-image.jpg 334w,\n/static/b72978eac58fe18d3788a3e680ae77d8/f32f2/featured-image.jpg 569w","srcWebp":"/static/b72978eac58fe18d3788a3e680ae77d8/3d427/featured-image.webp","srcSetWebp":"/static/b72978eac58fe18d3788a3e680ae77d8/cd98f/featured-image.webp 334w,\n/static/b72978eac58fe18d3788a3e680ae77d8/3d427/featured-image.webp 569w","sizes":"(max-width: 569px) 100vw, 569px"}}}}}},"pageContext":{"slug":"/improve-your-work-with-alfred/","previous":{"fields":{"slug":"/aoj-1135-ohgas-fortune/"},"frontmatter":{"title":"[AOJ] 1135 Ohgas' Fortune","tags":["AOJ","JavaScript"]}},"next":{"fields":{"slug":"/aoj-1179-mysterious-worm/"},"frontmatter":{"title":"[AOJ] 0179 Mysterious Worm","tags":["AOJ","C++"]}}}},
    "staticQueryHashes": ["2585454260","2954598359"]}