見出し画像

【スキマ学習】ガチ初心者と一緒に、Excelでnoteのタグ解析ができるツールを作ってみよう《4》

プログラムの仕組みがほんのり感じ取れてきたところで、作ろうとしているツールそのものに話を戻しましょう。

設計と言うと大仰に聞こえますが、要は全体像を把握してみようという回ですので、肩の力を抜いて気軽に読み進めて頂ければ幸いです。

・会社にいてもちょっとしたスキマ時間に実践できるよう、一回の分量をなるべく少なくしてお送りします。
・特別な準備は要りません。オフィスのPCにだいたい入ってるエクセルとGoogleクロームだけを使って作ります。記事も無料です。

前回の記事はこちら

今回の内容はこんな感じです↓

目的をはっきりさせる

画像1

複数のエンジニアで一つの大きな仕組みを構築する際に最も大切なのが、この設計段階です。

プログラムを組んでいく作業は、実際に私たちの目で見る世界とは大きく異なった論理で進んでいきますので、本来の用途から外れたものが出来上がらないよう、目的地をはっきりさせておく必要があるわけです。

チームに限らず、個人で簡単なツールを作っていく場合でも用途を明確にしておくことは重要です。

ひとりだと柔軟に路線変更ができる分、余計な機能や思いつきで仕組みがどんどん複雑になり、最終的に何がしたかったのか分からなくなることもしばしばあります。

《0》で確認したように、今回つくりたいツールはこんな用途でした。

noteのタグ検索画面から必要な情報を一気に回収するツール

具体的に知りたい情報は、下のような内容だと思います。

・タイトル
・書き出し
・記事のURL
・スキ数
・ハッシュタグ
・画像
・著者名
・投稿日時

これを達成するために必要十分な機能を設計していきましょう。


必要なリソースを明らかにする

画像2

では上記の目的を達成するために必要な材料は何でしょうか。

なにやらnoteからデータをもらって来てくちゃぐちゃする...ってことは分かりますが、まだまだぼんやりしていますね。ひとつずつ整理してみましょう。

・Excel

まずはプログラムを動かすためのExcelですね、これがないと始まりません。最終的にはデータを可視化する表としても使えそうです。

ExcelVBAは、実はExcelの外側までもアクセスすることが可能です。PC内のファイルの移動や編集なんかもできちゃうので、慣れると色々なことが自動化できます。ノンプログラマーたちの強い味方です。


・noteを見るためのブラウザ

noteからデータをもらってくるとなると、いろいろな方法が考えられます。しかし「データ下さい」とメールをしたところで、くれる理由もありませんから、自分から取りに行く必要がありますね。

最も直感的なのは、Webブラウザでnoteにアクセスして、そこからコピー&ペーストでデータをもらってくることです。

今回はとりあえずこれで行きましょう。


・データを持ってくる方法

コメント 2019-12-11 164114

試しにnoteのタグ検索の画面で「Ctrl+A」を押してみてください。(画面上で右クリックをして「すべて選択」を実行しても同じことができます。)

これをコピーして、Excelに適当なシートを作って貼り付けてみましょう。

むむっ、なんか重いぞ...?

コメント 2019-12-11 164419

なにやらリンクやら画像やらがA列にぎっしり貼り付けられてしまいました。ちょっとこれだと扱いが面倒そうですね。一旦消してしまいましょう。


気を取り直して、私たちが欲しいのは基本的には文字の情報でした。

ということは、リンクの情報や画像など難しいものは一旦置いておいて、テキストだけ貼り付けができればなんとかなりそうです。

コメント 2019-12-11 165320

noteの画面をコピーした状態で、セルを右クリックしてみてください。

貼り付けのオプションに「貼り付け先の書式に合わせる」という項目があります。これで貼り付けてみましょう。

コメント 2019-12-11 165415

エクセルのA列にテキストのデータのみが貼り付けられました。これをうまく並び替えることができれば、立派な表になりそうです。



作業の順番を考える

画像3

いま確認した作業を、実際にフローとして手順にまとめてみましょう。

①noteからデータをコピーしてくる。

②Excelに貼り付ける。

③並び替えて表にする。

なんだかさっくりしてますね。そうなんです。人が意識している「手順」は、実はあいまいで目的のみを表しています。

もちろん、これではプログラムは動きません。この大きな手順をプログラムが実行できるように、目的に照らして手段を細分化してあげる必要があります。

①noteからデータをコピーしてくる。

・ブラウザを開く

・noteのURLにアクセスする

・任意のタグで検索をかける

・画面上の要素を全て選択する

・コピーする


②Excelに貼り付ける。

・Excelを開く

・貼り付ける場所を選ぶ

・値のみ貼り付けを行う


③並び替えて表にする。

・必要な情報のみを抽出する

・どこまでが1記事なのか把握する

・情報を横一列に整列させる

・表に書き写す


とりあえずプログラムに何ができるのか、できたとしても難しいのかどうかよくわからないことが多いと思いますので、はじめはこのくらいの粒度に留めてしまって構いません。

12個の小さな命令を大きな3つの手続きのまとまりとして捉えている構造になっていますね。どこかで見たことがある気がしませんか?

この通りにできるかどうかはさておき、プログラムの書き方に当てはめてみましょう。

Sub noteからデータをコピーしてくる()

    ブラウザを開く

    noteのURLにアクセスする

    任意のタグで検索をかける

    画面上の要素を全て選択する

    コピーする

End Sub



Sub Excelに貼り付ける()

    Excelを開く

    貼り付ける場所を選ぶ

    値のみ貼り付けを行う

End Sub



Sub 並び替えて表にする()

    必要な情報のみを抽出する

    どこまでが1記事なのか把握する

    情報を横一列に整列させる

    表に書き写す

End Sub

だんだんそれっぽくなってきましたね!

これでプログラムが動いてくれる日が来ると良いのですが、今のところは上の文章をExcelVBAの言語に翻訳してあげる必要があります。


機械に任せるべきことから始める

全体像は何となく見えてきたものの、どこから手を付けたらいいのか分からないと始めようがありません。ひとまず優先順位をつけてみましょう。

プログラミングを勉強しながらコードを組んで行く際、私は下のようなことを考えながら優先順位を付けていきます。

・自動化した際の効果が高いこと

・Excelの内部で出来ること

・手続きの前半にあること

・以前に勉強したコードとの関連性があること

本格的に開発に携わる方から見るといくらか邪道なようですが、私たちの目的は単純作業の機械化でした。今回はガチ初心者の皆さんにも判断できそうなこととして、はじめに挙げた自動化の効果を軸に見ていきましょう。

この三つの大きな作業の内、最も自動化した際の効果が最も高いのはどれでしょうか。

①noteからデータをコピーしてくる。

②Excelに貼り付ける。

③並び替えて表にする。

まず①は、作業としては1回で済みますし、人間の手であっさりできてしまうようなことでした。これは最も作業効率化の効果の薄いものとして良いでしょう。

②もそうですね。貼り付け方を工夫しさえすれば、1回の作業でデータとして十分使用可能なものが抽出できたと思います。

③はどうでしょう。一列に並んだデータを記事ごとに切り分け、さらに一行ずつのデータに加工し直すのは、ちょっと骨が折れそうです。

Excel関数が得意な人なら、ちょっと工夫すればVBAなしで出来てしまいそうな内容でもありますが、やはり何かしらの仕組みは必要そうです。

さしあたり、③から手を付けてみるのが良いと思います。

Sub 並び替えて表にする()

    必要な情報のみを抽出する

    どこまでが1記事なのか把握する

    情報を横一列に整列させる

    表に書き写す

End Sub


大筋の指針が立ったところで、今回はこのへんにしておきましょう。

次回からは上の手続きをVBAの言語に翻訳していく手順の中で、新しい知識や概念に触れていくことになると思います。

相変わらずゆっくり進んでいきますので、焦らずに一歩一歩進んでいきましょう。

待ちきれない方は、ここまでやりたいことが具体化できていればGoogle検索でヒントをもらえるかもしれません。試しに「VBA 必要な情報 抽出」で検索してみると、それっぽいページがいくつか見つかると思います。

それではまた次回。お疲れ様でした。




ご読了ありがとうございました。
こんなやまびこですが、人生の時間をほんのちょっとだけ分けてあげてもいいよという方は、フォローを頂けると大変喜びます。


【だいたい平日18時頃に更新中】

Twitter:
https://twitter.com/echoyamabiko
@echoyamabiko

note:
https://note.com/echo_yamabiko

はてなブログ:
https://echo-yamabiko.hatenablog.com/

※内容は基本的に同じなので、一番身近なアカウントでのフォローをお勧め致します。


【匿名での質問や感想はこちらが便利です】

やまびこへの質問箱:
https://peing.net/ja/echo_yamabiko?event=0


記事は基本無料公開にしようと思うので、やまびこの明日のコーヒー代くらいは恵んでやってもいいぜという方は、お気軽にご支援ください。気長にお待ちしております。