<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>プログラミングの成長記録/備忘録</title>
<link>https://ameblo.jp/yekatsf6take/</link>
<atom:link href="https://rssblog.ameba.jp/yekatsf6take/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>プログラミング初心者です。プログラミングでやったこと，学んだことを記録として残します。一緒に頑張るモチベーションになったら嬉しいです。そして初心者の成長を温かく見守りたい中上級者の方も大歓迎です！！</description>
<language>ja</language>
<item>
<title>Pythonでスプレッドシートのtodayを固定する</title>
<description>
<![CDATA[ <p>以前、スプレッドシートを一か月ごとに生成するスラックアプリ作りました。</p><p>この件の付けたしです。</p><p>&nbsp;</p><div class="ogpCard_root"><article class="ogpCard_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="ogpCard_link" data-ogp-card-log="" href="https://ameblo.jp/yekatsf6take/entry-12770807502.html" rel="noopener noreferrer" style="display:flex;justify-content:space-between;overflow:hidden;box-sizing:border-box;width:620px;max-width:100%;height:120px;border:1px solid #e2e2e2;border-radius:4px;background-color:#fff;text-decoration:none" target="_blank"><span class="ogpCard_content" style="display:flex;flex-direction:column;overflow:hidden;width:100%;padding:16px"><span class="ogpCard_title" style="-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;max-height:48px;line-height:1.4;font-size:16px;color:#333;text-align:left;font-weight:bold;overflow:hidden">『slackアプリを作成　毎月末にスプレッドシートを作成してURLをslackに流す』</span><span class="ogpCard_description" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.6;margin-top:4px;color:#757575;text-align:left;font-size:12px">バイト先で自動化の需要がありそうだと思って作成しました。月末の度に誰かがシートとメッセージをコピペで作成して流すということをしていたので...&nbsp;最終的に作成し…</span><span class="ogpCard_url" style="display:flex;align-items:center;margin-top:auto"><span class="ogpCard_iconWrap" style="position:relative;width:20px;height:20px;flex-shrink:0"><img alt="リンク" class="ogpCard_icon" height="20" loading="lazy" src="https://c.stat100.ameba.jp/ameblo/symbols/v3.20.0/svg/gray/editor_link.svg" style="position:absolute;top:0;bottom:0;right:0;left:0;height:100%;max-height:100%" width="20"></span><span class="ogpCard_urlText" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#757575;font-size:12px;text-align:left">ameblo.jp</span></span></span><span class="ogpCard_imageWrap" style="position:relative;width:120px;height:120px;flex-shrink:0"><img alt="" class="ogpCard_image" data-ogp-card-image="" height="120" loading="lazy" src="https://stat.ameba.jp/user_images/20221023/18/yekatsf6take/61/4c/j/o1282031215192487516.jpg" style="position:absolute;top:50%;left:50%;object-fit:cover;min-height:100%;min-width:100%;transform:translate(-50%,-50%)" width="120"></span></a></article></div><p>&nbsp;</p><p>&nbsp;</p><p>テンプレートのシートがあって、それを毎月複製するっていう感じでした。</p><p>&nbsp;</p><p>=today()がテンプレ内にあるのですが、複製したほうのシートでもtodayは毎日更新されていきます。</p><p>&nbsp;</p><p>これを固定する方法を記述します。テンプレでは日々更新されて、複製した先で固定されるので便利。</p><p>しかもびっくりするほど簡単です。</p><p>&nbsp;</p><p>todayのセルを上書きでコピペするだけ。</p><p>&nbsp;</p><p>これをpythonのコード上で実装したものが下。</p><p>&nbsp;</p><div class="limited036_block04" data-entrydesign-count-input="part" data-entrydesign-part="limited036_block04" data-entrydesign-tag="div" data-entrydesign-type="block" data-entrydesign-ver="1.54.1" style="display:block;max-width:100%;margin:4px auto;box-sizing:border-box;color:#333"><div style="background:url(https://stat100.ameba.jp/ameblo/entry_designs/v1/sources/assets/limited036_block_line.png) repeat-x 0 0;background-size:16px 4px;padding-top:12px"><div style="background:url(https://stat100.ameba.jp/ameblo/entry_designs/v1/sources/assets/limited036_block_line.png) repeat-x 0 100%;background-size:16px 4px;padding-bottom:12px"><div data-entrydesign-content="" style="background-color:transparent;font-size:16px;line-height:1.6;min-height:26px;overflow-wrap:break-word"><p style="text-align: center;">&nbsp; &nbsp; &nbsp; &nbsp; new.update_acell("E3" ,new.acell("E3").value)</p></div></div></div></div><p>&nbsp;</p><p>newは複製したスプレッドシートで、そのE3セルにtodayがあるときのコードです。</p><p>&nbsp;</p><p>日付を入力しているわけではなくてセルをコピペして上書きしただけなので、もしテンプレートを編集してtodayがずれても支障はないのが嬉しい。</p><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/yekatsf6take/entry-12778199812.html</link>
<pubDate>Wed, 07 Dec 2022 15:26:43 +0900</pubDate>
</item>
<item>
<title>slackアプリを作成　毎月末にスプレッドシートを作成してURLをslackに流す</title>
<description>
<![CDATA[ <p>バイト先で自動化の需要がありそうだと思って作成しました。月末の度に誰かがシートとメッセージをコピペで作成して流すということをしていたので...</p><p>&nbsp;</p><p>最終的に作成したslackアプリは下の写真みたいな感じです。送っているスプレッドシートのURLはモザイクかけてます。</p><p><a href="https://stat.ameba.jp/user_images/20221023/18/yekatsf6take/61/4c/j/o1282031215192487516.jpg"><img alt="" contenteditable="inherit" height="102" src="https://stat.ameba.jp/user_images/20221023/18/yekatsf6take/61/4c/j/o1282031215192487516.jpg" width="420"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>基本的なslackアプリの作り方や使い方に関しては下の記事を参考にしました。</p><p>&nbsp;</p><div class="ogpCard_root"><article class="ogpCard_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="ogpCard_link" data-ogp-card-log="" href="https://qiita.com/geeorgey/items/c1e147eda40f6d652446" rel="noopener noreferrer" style="display:flex;justify-content:space-between;overflow:hidden;box-sizing:border-box;width:620px;max-width:100%;height:120px;border:1px solid #e2e2e2;border-radius:4px;background-color:#fff;text-decoration:none" target="_blank"><span class="ogpCard_content" style="display:flex;flex-direction:column;overflow:hidden;width:100%;padding:16px"><span class="ogpCard_title" style="-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;max-height:48px;line-height:1.4;font-size:16px;color:#333;text-align:left;font-weight:bold;overflow:hidden">Slack Bolt for Pythonを使ってのbot構築。ローカル開発からHerokuデプロイまで - Qiita</span><span class="ogpCard_description" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.6;margin-top:4px;color:#757575;text-align:left;font-size:12px">Slackは多用しているものの、botkit以来すっかりbot開発している時間がなかったため時間が空いてしまったのですが、python使って作ろう！と決めて初学者が躓く最初の最初についての解説。 Boltはチュートリアルもしっかりし...</span><span class="ogpCard_url" style="display:flex;align-items:center;margin-top:auto"><span class="ogpCard_iconWrap" style="position:relative;width:20px;height:20px;flex-shrink:0"><img alt="リンク" class="ogpCard_icon" height="20" loading="lazy" src="https://c.stat100.ameba.jp/ameblo/symbols/v3.20.0/svg/gray/editor_link.svg" style="position:absolute;top:0;bottom:0;right:0;left:0;height:100%;max-height:100%" width="20"></span><span class="ogpCard_urlText" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#757575;font-size:12px;text-align:left">qiita.com</span></span></span><span class="ogpCard_imageWrap" style="position:relative;width:120px;height:120px;flex-shrink:0"><img alt="" class="ogpCard_image" data-ogp-card-image="" height="120" loading="lazy" src="https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&amp;w=1200&amp;mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9U2xhY2slMjBCb2x0JTIwZm9yJTIwUHl0aG9uJUUzJTgyJTkyJUU0JUJEJUJGJUUzJTgxJUEzJUUzJTgxJUE2JUUzJTgxJUFFYm90JUU2JUE3JThCJUU3JUFGJTg5JUUzJTgwJTgyJUUzJTgzJUFEJUUzJTgzJUJDJUUzJTgyJUFCJUUzJTgzJUFCJUU5JTk2JThCJUU3JTk5JUJBJUUzJTgxJThCJUUzJTgyJTg5SGVyb2t1JUUzJTgzJTg3JUUzJTgzJTk3JUUzJTgzJUFEJUUzJTgyJUE0JUUzJTgxJUJFJUUzJTgxJUE3JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1hM2QyY2NkYjc2Y2IxYWFlZmFlODg0MmNjM2FmM2M2OA&amp;mark-x=142&amp;mark-y=112&amp;blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwZ2Vlb3JnZXkmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTRjZDFmNGEyMGVhMjc2YTNlZTE1YzMzNzZkNzFhMmUx&amp;blend-x=142&amp;blend-y=491&amp;blend-mode=normal&amp;s=f8dc0f8cb4fd0b7da05694720bb4dc9c" style="position:absolute;top:50%;left:50%;object-fit:cover;min-height:100%;min-width:100%;transform:translate(-50%,-50%)" width="120"></span></a></article></div><p>&nbsp;</p><p>&nbsp;</p><p>今回は受け取ったメッセージに応じて返信する、などの双方向的なやり取りをするBotではなく、アプリから一方的に送るだけなので、Webclientだけでできました（完成するまで気が付かなかったから遠回りした...）。結局Slack Boltは全く使わなかった。</p><p>&nbsp;</p><p>&nbsp;</p><p>少し凝った＆詰まったのが、アプリが投稿するメッセージに自分でリアクションのスタンプをつけること。</p><p>あらかじめスタンプつけておくことで、このスタンプを最初に押す人も楽になるのは何気に大きい...!!</p><p>スタンプを伴って送信などの関数は用意されていないからどうやるのか悩んでいたけど、メッセージ送信の関数に返り値があって、メッセージの情報を持っていた。これからtimestampを取得すればなんと簡単にできた。</p><p>&nbsp;</p><p>&nbsp;</p><p>最後にこれをGCPにあげて、cloud schedulerで毎月25日20時とかに実行されるようにしておけば完成です。</p><p>以前の株価アラートでこの辺はやったことあったのでわりとすんなりクリア。</p><p>全くの初見と一回触れたことあるのはだいぶ違うなと。もっと経験を積み重ねていきたい.....</p><p>&nbsp;</p><p>&nbsp;</p><p>最後にmain.pyのコードも一応載せておきます。</p><p>&nbsp;</p><div class="limited036_block04" data-entrydesign-count-input="part" data-entrydesign-part="limited036_block04" data-entrydesign-tag="div" data-entrydesign-type="block" data-entrydesign-ver="1.53.2" style="display:block;max-width:100%;margin:4px auto;box-sizing:border-box;color:#333"><div style="background:url(https://stat100.ameba.jp/ameblo/entry_designs/v1/sources/assets/limited036_block_line.png) repeat-x 0 0;background-size:16px 4px;padding-top:12px"><div style="background:url(https://stat100.ameba.jp/ameblo/entry_designs/v1/sources/assets/limited036_block_line.png) repeat-x 0 100%;background-size:16px 4px;padding-bottom:12px"><div data-entrydesign-content="" style="background-color:transparent;font-size:16px;line-height:1.6;min-height:26px;overflow-wrap:break-word"><pre><code>import osfrom slack_sdk import WebClientimport gspreadfrom oauth2client.service_account import ServiceAccountCredentialsimport datetimeimport config  # 同ディレクトリにあるconfig.pydef isExist(worksheets, filename):    """    worksheetsの中にfilenameのシートがあるかを調べる。    filenameがあればtrue, なければfalse    """    for ws in worksheets:        if (filename == ws.title):            return True    return Falsedef make_and_get_new_sheet(gs, SPREADSHEET_KEY):    """    スプレッドシート(gs)を操作する。今月分のシートを作成して、新しいシートを返す。    """    # 今月の月を取得    dt = datetime.datetime.now()    this_year = dt.year    this_month = dt.month    workbook = gs.open_by_key(SPREADSHEET_KEY)    # 現状ではtemplateのシートはあることが前提    template = workbook.worksheet("template給与計算")    worksheets = workbook.worksheets()    filename = f"給与計算{this_year}-{this_month}"    # すでに今月分のシートが用意されていたら上書きはしないように分岐。    # 今月分のシートがない場合のみtemplateのコピーを新規作成    if(isExist(worksheets,filename) == False):        workbook.duplicate_sheet(source_sheet_id=template.id, new_sheet_name=filename)    new = workbook.worksheet(filename)    return newdef get_sheet_url(new_sheet, SPREADSHEET_KEY):    """    sheetを受け取って、urlを作って返す    """    top_url = "https://docs.google.com/spreadsheets/d"    new_URL = os.path.join(top_url, SPREADSHEET_KEY, f"edit#gid={new_sheet.id}")    return new_URLdef main(event, context):    """    templateコピーしてその月分のシートを作成し、slackで投稿する    """    # jsonファイルを使ってスプレッドシートの認証情報を取得    scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"]    json_keyfile = config.json_keyfile    c = ServiceAccountCredentials.from_json_keyfile_name(json_keyfile, scope)    # 認証情報を使ってスプレッドシートの操作権を取得    gs = gspread.authorize(c)    # 共有したスプレッドシートのキー    SPREADSHEET_KEY = config.SPREADSHEET_KEY    # 今月分のsheetを作成    new_sheet = make_and_get_new_sheet(gs, SPREADSHEET_KEY)    # 今月分のsheetのURLを取得    new__sheet_URL = get_sheet_url(new_sheet, SPREADSHEET_KEY)    # 今月の月を取得    dt = datetime.datetime.now()    this_month = dt.month    # slack投稿用のの設定    SLACK_BOT_TOKEN = config.SLACK_BOT_TOKEN    client = WebClient(token=SLACK_BOT_TOKEN)    channel_id = config.channel_id    #slackへ投稿    result = client.chat_postMessage(            channel=channel_id,            text=f"{this_month}月分の入力をお願いします。\nまた、{this_month}月分で、生徒のお休みなどでコマ数が減っている場合は、生徒の名前、減ったコマ数、日付を返信で教えてください。\n以前報告したという方も、念のため、もう一度教えてください。\n調整なしの方は:white_check_mark:スタンプをお願いします。\nよろしくお願いします。\n{new__sheet_URL}"        )    # 先ほど投稿したものに自分でリアクション（緑のチェックマーク例）    ts = result["ts"]  # timestamp取得    client.reactions_add(        channel=channel_id,        name="white_check_mark",        timestamp=ts    )    return</code></pre></div></div></div></div><p>&nbsp;</p><p>&nbsp;</p><p>LINEのBOTもslackのアプリも作れるようになって成長を感じます。少しづつ世界が広がってきたような気がします。</p><p>読んでいただきありがとうございました。</p>
]]>
</description>
<link>https://ameblo.jp/yekatsf6take/entry-12770807502.html</link>
<pubDate>Sun, 23 Oct 2022 13:00:20 +0900</pubDate>
</item>
<item>
<title>line botでやりたいことリスト(firestore + heroku)</title>
<description>
<![CDATA[ <p>以前の投稿で、line botをdeployしたことを書いた。</p><p>この記事では、firebaseのデータベースから情報を取得してline botで送信することができなかったと書いた。</p><p>&nbsp;</p><div class="ogpCard_root"><article class="ogpCard_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="ogpCard_link" data-ogp-card-log="" href="https://ameblo.jp/yekatsf6take/entry-12763506057.html" rel="noopener noreferrer" style="display:flex;justify-content:space-between;overflow:hidden;box-sizing:border-box;width:620px;max-width:100%;height:120px;border:1px solid #e2e2e2;border-radius:4px;background-color:#fff;text-decoration:none" target="_blank"><span class="ogpCard_content" style="display:flex;flex-direction:column;overflow:hidden;width:100%;padding:16px"><span class="ogpCard_title" style="-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;max-height:48px;line-height:1.4;font-size:16px;color:#333;text-align:left;font-weight:bold;overflow:hidden">『line bot &amp; firebase』</span><span class="ogpCard_description" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.6;margin-top:4px;color:#757575;text-align:left;font-size:12px">始めてfirebaseを使った。下サイトを参考に、line botにて、webhookでfirebaseを繋げることもした。これをdeployすることもできた…</span><span class="ogpCard_url" style="display:flex;align-items:center;margin-top:auto"><span class="ogpCard_iconWrap" style="position:relative;width:20px;height:20px;flex-shrink:0"><img alt="リンク" class="ogpCard_icon" height="20" loading="lazy" src="https://c.stat100.ameba.jp/ameblo/symbols/v3.20.0/svg/gray/editor_link.svg" style="position:absolute;top:0;bottom:0;right:0;left:0;height:100%;max-height:100%" width="20"></span><span class="ogpCard_urlText" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#757575;font-size:12px;text-align:left">ameblo.jp</span></span></span><span class="ogpCard_imageWrap" style="position:relative;width:120px;height:120px;flex-shrink:0"><img alt="" class="ogpCard_image" data-ogp-card-image="" height="120" loading="lazy" src="https://stat.profile.ameba.jp/profile_images/common/noimage_default.gif" style="position:absolute;top:50%;left:50%;object-fit:cover;min-height:100%;min-width:100%;transform:translate(-50%,-50%)" width="120"></span></a></article></div><p>&nbsp;</p><p>&nbsp;</p><p>今回は、この点をクリアできた。</p><p>&nbsp;</p><p>line botで入力した内容をデータベースに格納し、これまで追加してきたやりたいことをすべて取得し、返信する。</p><p>またオプションとして、「一覧」と入力すると、これまで追加した内容の一覧を表示できるようにした。</p><p>&nbsp;</p><p>現状でのおためし動作の様子は下の写真のような感じ。</p><p><a href="https://stat.ameba.jp/user_images/20220924/22/yekatsf6take/47/c7/j/o0780077815179254956.jpg"><img alt="" contenteditable="inherit" height="279" src="https://stat.ameba.jp/user_images/20220924/22/yekatsf6take/47/c7/j/o0780077815179254956.jpg" width="280"></a></p><p>なお、「・」スタートでないと下のような文章を送るようにしている。</p><p><a href="https://stat.ameba.jp/user_images/20220924/22/yekatsf6take/cc/81/j/o0780025615179255627.jpg"><img alt="" contenteditable="inherit" height="138" src="https://stat.ameba.jp/user_images/20220924/22/yekatsf6take/cc/81/j/o0780025615179255627.jpg" width="420"></a></p><p>&nbsp;</p><p>何気に凝っているのは、「・」スタートじゃないと認識しないし、返信の一覧の内容も「・気球」のように「・」スタートだが、データベースには単に「気球」と入っていること。</p><p>&nbsp;</p><p>&nbsp;</p><p>以下参考文献</p><p>ベースとしては下サイトを参考にした。</p><div class="ogpCard_root"><article class="ogpCard_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="ogpCard_link" data-ogp-card-log="" href="https://qiita.com/kro/items/67f7510b36945eb9689b" rel="noopener noreferrer" style="display:flex;justify-content:space-between;overflow:hidden;box-sizing:border-box;width:620px;max-width:100%;height:120px;border:1px solid #e2e2e2;border-radius:4px;background-color:#fff;text-decoration:none" target="_blank"><span class="ogpCard_content" style="display:flex;flex-direction:column;overflow:hidden;width:100%;padding:16px"><span class="ogpCard_title" style="-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;max-height:48px;line-height:1.4;font-size:16px;color:#333;text-align:left;font-weight:bold;overflow:hidden">PythonでLine botを作ってみた - Qiita</span><span class="ogpCard_description" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.6;margin-top:4px;color:#757575;text-align:left;font-size:12px">#はじめに Seleniumを使ってみたの続き(？)にあたります。 ゆくゆくは活用したいと思いますが今のところはオウム返しするだけです。 初めて触ったので間違いがあればご指摘いただけると幸いです。 #環境 OS X 10.11.1 ...</span><span class="ogpCard_url" style="display:flex;align-items:center;margin-top:auto"><span class="ogpCard_iconWrap" style="position:relative;width:20px;height:20px;flex-shrink:0"><img alt="リンク" class="ogpCard_icon" height="20" loading="lazy" src="https://c.stat100.ameba.jp/ameblo/symbols/v3.20.0/svg/gray/editor_link.svg" style="position:absolute;top:0;bottom:0;right:0;left:0;height:100%;max-height:100%" width="20"></span><span class="ogpCard_urlText" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#757575;font-size:12px;text-align:left">qiita.com</span></span></span><span class="ogpCard_imageWrap" style="position:relative;width:120px;height:120px;flex-shrink:0"><img alt="" class="ogpCard_image" data-ogp-card-image="" height="120" loading="lazy" src="https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&amp;w=1200&amp;mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9UHl0aG9uJUUzJTgxJUE3TGluZSUyMGJvdCVFMyU4MiU5MiVFNCVCRCU5QyVFMyU4MSVBMyVFMyU4MSVBNiVFMyU4MSVCRiVFMyU4MSU5RiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9NGYyZGM2ODMzMmE5MjlmYmY0NzU5ODczNDYyNTY0MzA&amp;mark-x=142&amp;mark-y=112&amp;blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwa3JvJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz00ZjI1ZDhkZWNjZDUxNjJlZmNhYWM3OWMwYzM5OWRjOA&amp;blend-x=142&amp;blend-y=491&amp;blend-mode=normal&amp;s=772d1e5d45f8ff710ab71b6b5426150f" style="position:absolute;top:50%;left:50%;object-fit:cover;min-height:100%;min-width:100%;transform:translate(-50%,-50%)" width="120"></span></a></article></div><p>&nbsp;</p><p>ただ、firebaseを組み合わせたときにrequirements.txtの内容でめちゃめちゃつまづいた（そこが原因であることにもなかなか気が付かなかった。ログの中身を見ることの大切さを本当に実感した）。</p><p>結局、requirements.txtの内容は以下にした（過剰かもしれない）。特に、google-から始まるものが抜けていたのになかなか気が付けなかった。</p><p>&nbsp;</p><div class="limited019_block02" data-entrydesign-count-input="part" data-entrydesign-part="limited019_block02" data-entrydesign-tag="div" data-entrydesign-type="block" data-entrydesign-ver="1.53.1" style="display:block;width:343px;max-width:100%;margin:0 auto 12px;box-sizing:border-box;color:#333"><div style="background:url(https://stat100.ameba.jp/ameblo/entry_designs/v1/sources/assets/limited019_block_line.png) no-repeat 50% 0%;background-size:342px 2px;padding-top:0.92em"><div style="background:url(https://stat100.ameba.jp/ameblo/entry_designs/v1/sources/assets/limited019_block_line.png) no-repeat 50% 100%;background-size:342px 2px;padding-bottom:0.88em"><div data-entrydesign-content="" style="background-color:transparent;font-size:16px;line-height:1.4;min-height:22px;word-breake:break-word"><p>line-bot-sdk==1.5.0<br>future==0.16.0<br>requests==2.18.0<br>Werkzeug==1.0.1<br>Flask==1.1.2<br>click==6.7<br>itsdangerous==0.24<br>Jinja2==2.10.1<br>MarkupSafe==0.23<br>Flask-Login==0.5.0<br>Flask-WTF==0.14.3<br>google-api-core==1.31.5<br>google-auth==1.35.0<br>google-cloud-ndb==1.11.1<br>google-cloud-tasks==2.7.1<br>firebase-admin==5.2.0</p></div></div></div></div><p>&nbsp;</p><p>&nbsp;</p><p>最後の方で参考にしたもの。</p><div class="ogpCard_root"><article class="ogpCard_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="ogpCard_link" data-ogp-card-log="" href="https://expy-style.net/python/firebase-admin/" rel="noopener noreferrer" style="display:flex;justify-content:space-between;overflow:hidden;box-sizing:border-box;width:620px;max-width:100%;height:120px;border:1px solid #e2e2e2;border-radius:4px;background-color:#fff;text-decoration:none" target="_blank"><span class="ogpCard_content" style="display:flex;flex-direction:column;overflow:hidden;width:100%;padding:16px"><span class="ogpCard_title" style="-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;max-height:48px;line-height:1.4;font-size:16px;color:#333;text-align:left;font-weight:bold;overflow:hidden">PythonでFirebaseを操作する</span><span class="ogpCard_description" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.6;margin-top:4px;color:#757575;text-align:left;font-size:12px">Cloud FirestoreはWEBアプリや管理コンソールで操作、表示できますが、Excelの呪縛にとらわれ続ける我々はどうしてもExcelファイルとして取り出さなければならないのです！ そこで、PythonでFirebaseを操作できるfirebase-adminモジュールを使って、この任務を完遂します。</span><span class="ogpCard_url" style="display:flex;align-items:center;margin-top:auto"><span class="ogpCard_iconWrap" style="position:relative;width:20px;height:20px;flex-shrink:0"><img alt="リンク" class="ogpCard_icon" height="20" loading="lazy" src="https://c.stat100.ameba.jp/ameblo/symbols/v3.20.0/svg/gray/editor_link.svg" style="position:absolute;top:0;bottom:0;right:0;left:0;height:100%;max-height:100%" width="20"></span><span class="ogpCard_urlText" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#757575;font-size:12px;text-align:left">expy-style.net</span></span></span><span class="ogpCard_imageWrap" style="position:relative;width:120px;height:120px;flex-shrink:0"><img alt="" class="ogpCard_image" data-ogp-card-image="" height="120" loading="lazy" src="https://expy-style.net/wp-content/uploads/2022/03/ec-py-fbadmin.png" style="position:absolute;top:50%;left:50%;object-fit:cover;min-height:100%;min-width:100%;transform:translate(-50%,-50%)" width="120"></span></a></article></div><div class="ogpCard_root">&nbsp;</div><p>&nbsp;</p><p>次これを進化させるとしたら</p><p>・line botのリッチメニューをつかうこと</p><p>・herokuがidlingになることをどうにかする</p><p>・現在すべてのタスクが同じところに格納されていくので、複数人が使えるように追加する人用のデータベース構造を作る</p><p>&nbsp;</p><p>firestoreからデータの取得はできたものの、ほぼコピペなので、実際まだ理解はしていない。理解していきたい。</p><p>&nbsp;</p><p>&nbsp;</p><p>herokuの無料枠がなくなるらしい？</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/yekatsf6take/entry-12764352755.html</link>
<pubDate>Sat, 24 Sep 2022 22:36:38 +0900</pubDate>
</item>
<item>
<title>cloud functionsを用いて株価の条件によってline通知</title>
<description>
<![CDATA[ <p>特定の株価が設定した条件になったら通知をする。これによって、不必要に株価を見張っている必要がなくなると思い作成した。</p><p>&nbsp;</p><p>大筋としては下のサイトを参考にし、Cloud functionsとCloud Schedulerを用いて行った。</p><p>&nbsp;</p><div class="ogpCard_root"><article class="ogpCard_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="ogpCard_link" data-ogp-card-log="" href="https://gammasoft.jp/blog/schdule-running-python-script-by-serverless/" rel="noopener noreferrer" style="display:flex;justify-content:space-between;overflow:hidden;box-sizing:border-box;width:620px;max-width:100%;height:120px;border:1px solid #e2e2e2;border-radius:4px;background-color:#fff;text-decoration:none" target="_blank"><span class="ogpCard_content" style="display:flex;flex-direction:column;overflow:hidden;width:100%;padding:16px"><span class="ogpCard_title" style="-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;max-height:48px;line-height:1.4;font-size:16px;color:#333;text-align:left;font-weight:bold;overflow:hidden">サーバーレス ＋ Pythonで定期的にスクレイピングを行う方法 - ガンマソフト株式会社</span><span class="ogpCard_description" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.6;margin-top:4px;color:#757575;text-align:left;font-size:12px">目の前のパソコンではなく、サーバーを用いればプログラムを24時間体制で動かすことができます。Pythonで仕事を自動化するには様々な事例が考えられますが、さらに応用範囲が広がります。 そのためにはサー...</span><span class="ogpCard_url" style="display:flex;align-items:center;margin-top:auto"><span class="ogpCard_iconWrap" style="position:relative;width:20px;height:20px;flex-shrink:0"><img alt="リンク" class="ogpCard_icon" height="20" loading="lazy" src="https://c.stat100.ameba.jp/ameblo/symbols/v3.20.0/svg/gray/editor_link.svg" style="position:absolute;top:0;bottom:0;right:0;left:0;height:100%;max-height:100%" width="20"></span><span class="ogpCard_urlText" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#757575;font-size:12px;text-align:left">gammasoft.jp</span></span></span><span class="ogpCard_imageWrap" style="position:relative;width:120px;height:120px;flex-shrink:0"><img alt="" class="ogpCard_image" data-ogp-card-image="" height="120" loading="lazy" src="https://gammasoft.jp/pu7nk3cmg8/wp-content/uploads/2019/12/cloud-serverless.jpg" style="position:absolute;top:50%;left:50%;object-fit:cover;min-height:100%;min-width:100%;transform:translate(-50%,-50%)" width="120"></span></a></article></div><p>&nbsp;</p><p>&nbsp;</p><p>上サイトでは為替レートを定期的に送り付けるプログラムの解説をしていた。</p><p>&nbsp;</p><p>私は定期的に通知をしてくるものではなく、ある条件を満たした時にのみ通知を送ってくれるものを作りたかったので、その点は改良した。</p><p>これについては下サイトを参考に行った。webスクレイピングは初めてだったが、ほとんどコピペで、銘柄コードを変えさえすれば特定の銘柄の株価を取得できたので有難かった。</p><p>&nbsp;</p><div class="ogpCard_root"><article class="ogpCard_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="ogpCard_link" data-ogp-card-log="" href="https://kurima.hatenablog.com/entry/2020/05/10/220219" rel="noopener noreferrer" style="display:flex;justify-content:space-between;overflow:hidden;box-sizing:border-box;width:620px;max-width:100%;height:120px;border:1px solid #e2e2e2;border-radius:4px;background-color:#fff;text-decoration:none" target="_blank"><span class="ogpCard_content" style="display:flex;flex-direction:column;overflow:hidden;width:100%;padding:16px"><span class="ogpCard_title" style="-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;max-height:48px;line-height:1.4;font-size:16px;color:#333;text-align:left;font-weight:bold;overflow:hidden">Pythonで株価アラートをつくる(1) - てけとーぶろぐ。</span><span class="ogpCard_description" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.6;margin-top:4px;color:#757575;text-align:left;font-size:12px">「Raspberry Pi + Pythonでビットコイン自動取引」というところを目指して 何回かにわたって記事を書いていこうと思う。最終的にはビットコインなのだけど まずは手始めにより多くの人に馴染みがある日本の株式を扱う。プログラムで好きな銘柄の株価を取得して 取得するだけではつまらないので 株価が設定した条件を満たしたらメールで通知するようにしてみよう…</span><span class="ogpCard_url" style="display:flex;align-items:center;margin-top:auto"><span class="ogpCard_iconWrap" style="position:relative;width:20px;height:20px;flex-shrink:0"><img alt="リンク" class="ogpCard_icon" height="20" loading="lazy" src="https://c.stat100.ameba.jp/ameblo/symbols/v3.20.0/svg/gray/editor_link.svg" style="position:absolute;top:0;bottom:0;right:0;left:0;height:100%;max-height:100%" width="20"></span><span class="ogpCard_urlText" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#757575;font-size:12px;text-align:left">kurima.hatenablog.com</span></span></span><span class="ogpCard_imageWrap" style="position:relative;width:120px;height:120px;flex-shrink:0"><img alt="" class="ogpCard_image" data-ogp-card-image="" height="120" loading="lazy" src="https://ogimage.blog.st-hatena.com/12921228815720151789/26006613565181457/1590928049" style="position:absolute;top:50%;left:50%;object-fit:cover;min-height:100%;min-width:100%;transform:translate(-50%,-50%)" width="120"></span></a></article></div><p>&nbsp;</p><p>&nbsp;</p><p>これら2つのサイトを参考にすればメールでの通知は思ったよりすぐ実装できた。</p><p>そこで、LINEに紐づけることも勉強としてやってみるかと思って実装した。line notifyを使った。</p><p>&nbsp;</p><p>結果的には、line notifyでの通知は5行くらいコード書くと意外にも動いてしまう。</p><p>コードだけでいうと圧倒的にLINEの方がメールよりも短くてわかりやすい。</p><p>ただメールでの通知は上サイトのコピペだけでできたのに対し、LINE通知にしようとするとそこを改変する必要があったということでややてこずった。</p><p>&nbsp;</p><p>ローカル上でやろうとすると、定期的に動作させるのが複雑そうだった。</p><p>Cloud Schedulerを使ってやってみると、時間の管理はそっちがやってくれる。プログラムとしては、実行されたときに一回スクレイピングをすればいいだけだから、むしろ楽だった。</p>
]]>
</description>
<link>https://ameblo.jp/yekatsf6take/entry-12764028285.html</link>
<pubDate>Tue, 13 Sep 2022 02:51:01 +0900</pubDate>
</item>
<item>
<title>line bot &amp; firebase</title>
<description>
<![CDATA[ <p>始めてfirebaseを使った。下サイトを参考に、line botにて、webhookでfirebaseを繋げることもした。これをdeployすることもできた。</p><p>&nbsp;</p><p>サイトを丸写ししてlinebotに送った内容をfirestoreへの追加はできたものの、データの取得ができず、データ取得→line botで返信　というながれは実装できなかった。</p><p>&nbsp;</p><div class="ogpCard_root"><article class="ogpCard_wrap" contenteditable="false" style="display:inline-block;max-width:100%"><a class="ogpCard_link" data-ogp-card-log="" href="https://qiita.com/tinoue723/items/1807ae88cd5fa6dcbafb#-%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89" rel="noopener noreferrer" style="display:flex;justify-content:space-between;overflow:hidden;box-sizing:border-box;width:620px;max-width:100%;height:120px;border:1px solid #e2e2e2;border-radius:4px;background-color:#fff;text-decoration:none" target="_blank"><span class="ogpCard_content" style="display:flex;flex-direction:column;overflow:hidden;width:100%;padding:16px"><span class="ogpCard_title" style="-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;max-height:48px;line-height:1.4;font-size:16px;color:#333;text-align:left;font-weight:bold;overflow:hidden">linebot + cloud functions + firestore で家計簿みたいなbotを作る - Qiita</span><span class="ogpCard_description" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.6;margin-top:4px;color:#757575;text-align:left;font-size:12px"> できたもの firestoreに保存されている Botの内容について 一緒に住んでるような人と、費用を割り勘するためのbot 食費、電気代など、二人で割り勘する費用を保存していき、どっちが多く負担しているかを常に知...</span><span class="ogpCard_url" style="display:flex;align-items:center;margin-top:auto"><span class="ogpCard_iconWrap" style="position:relative;width:20px;height:20px;flex-shrink:0"><img alt="リンク" class="ogpCard_icon" height="20" loading="lazy" src="https://c.stat100.ameba.jp/ameblo/symbols/v3.20.0/svg/gray/editor_link.svg" style="position:absolute;top:0;bottom:0;right:0;left:0;height:100%;max-height:100%" width="20"></span><span class="ogpCard_urlText" style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#757575;font-size:12px;text-align:left">qiita.com</span></span></span><span class="ogpCard_imageWrap" style="position:relative;width:120px;height:120px;flex-shrink:0"><img alt="" class="ogpCard_image" data-ogp-card-image="" height="120" loading="lazy" src="https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&amp;w=1200&amp;mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9bGluZWJvdCUyMCUyQiUyMGNsb3VkJTIwZnVuY3Rpb25zJTIwJTJCJTIwZmlyZXN0b3JlJTIwJUUzJTgxJUE3JUU1JUFFJUI2JUU4JUE4JTg4JUU3JUIwJUJGJUUzJTgxJUJGJUUzJTgxJTlGJUUzJTgxJTg0JUUzJTgxJUFBYm90JUUzJTgyJTkyJUU0JUJEJTlDJUUzJTgyJThCJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0yNTM3ZjVhZDBjNTY1NDUxMzhhZGVkNTJjNDdiNDM5Nw&amp;mark-x=142&amp;mark-y=112&amp;blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwdGlub3VlNzIzJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0zMWE5NmJlZGFlNjFjYzg0NzQ1N2FmNzRlYTkwMjVkNQ&amp;blend-x=142&amp;blend-y=491&amp;blend-mode=normal&amp;s=9283e10e97d0d1fd6b204608aea94a9f" style="position:absolute;top:50%;left:50%;object-fit:cover;min-height:100%;min-width:100%;transform:translate(-50%,-50%)" width="120"></span></a></article></div><p>&nbsp;</p><p>&nbsp;</p><p>これから実装したいこととしては、firestoreからデータの取得ができたらよいし、データベースの内容（to do list）をwebアプリで表示したりできるようになりたい。</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/yekatsf6take/entry-12763506057.html</link>
<pubDate>Sat, 10 Sep 2022 02:00:13 +0900</pubDate>
</item>
<item>
<title>unityで大富豪を作りたい（備忘録）</title>
<description>
<![CDATA[ <p>中高生の時によくトランプをしていました。</p><p>&nbsp;</p><p>ローカルルールが大量にある大富豪で慣れていたので普通の大富豪アプリでは物足りなく、自分で作りたいと思った。</p><p>&nbsp;</p><p>まずはネットにあった記事を参考に簡単なblack jackを作成した。</p><p>&nbsp;</p><p>大富豪を作るためにはPhoton等を使って、リアルタイム対戦の実装が必要になる、ことは分かった。</p><p>&nbsp;</p><p>将棋の作り方などは記事がよくあるが、トランプゲームの作り方の記事や情報はまだ少ないので、完全初心者の私にはまだ取り掛かれずにいる。</p><p>&nbsp;</p><p>具体的には、</p><p>・3人以上の各プレイヤーが自分の手札は見えていて、他の人の手札を裏からは見えていること。</p><p>・プレイヤーは、他のプレイヤーの手札の裏が見えている（枚数はわかる）。</p><p>・プレイヤーの人数を固定ではなくして(4~8人など)、柔軟性を高めたい</p><p>&nbsp;</p><p>をPthotonを使って実装したいが、勉強不足でまだできていない。</p><p>&nbsp;</p><p>&nbsp;</p><p>学んだこと</p><p>・unityの基本的な使い方</p><p>・Photonの存在</p>
]]>
</description>
<link>https://ameblo.jp/yekatsf6take/entry-12763315337.html</link>
<pubDate>Thu, 08 Sep 2022 22:39:21 +0900</pubDate>
</item>
<item>
<title>機械学習(多クラス分類)をcolabで動かした</title>
<description>
<![CDATA[ <p>とりあえず機械学習のプログラムを実際に動かしてみました。内容は、与えられた画像が犬か猫かパンダか分類する、というものです。いままでコンソールとターミナル上で終わることしかやったことがなかったので、初めて外の世界とつながった感覚のようなものを抱きました笑。</p><p>&nbsp;</p><p>といっても、ほぼ完全にコピペです。下にあるサイトのコードを参考に使わせていただきました。google colabでやりました。まだほとんど内容も理解できてないです。</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/32/22/j/o1915084115036113113.jpg"><img alt="" contenteditable="inherit" height="184" src="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/32/22/j/o1915084115036113113.jpg" width="420"></a><a href="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/e6/6a/j/o1915084915036113116.jpg"><img alt="" height="186" src="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/e6/6a/j/o1915084915036113116.jpg" width="420"></a><a href="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/e7/1e/j/o1915085115036113120.jpg"><img alt="" height="187" src="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/e7/1e/j/o1915085115036113120.jpg" width="420"></a><a href="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/65/30/j/o1898085315036113124.jpg"><img alt="" height="189" src="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/65/30/j/o1898085315036113124.jpg" width="420"></a></p><p><a href="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/dd/a6/j/o1918085615036113128.jpg"><img alt="" height="187" src="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/dd/a6/j/o1918085615036113128.jpg" width="420"></a><a href="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/12/dc/j/o1908086115036113106.jpg"><img alt="" contenteditable="inherit" height="190" src="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/12/dc/j/o1908086115036113106.jpg" width="420"></a><a href="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/5b/49/j/o1911084715036113108.jpg"><img alt="" height="186" src="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/5b/49/j/o1911084715036113108.jpg" width="420"></a><a href="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/fa/c6/j/o1907085715036113111.jpg"><img alt="" height="189" src="https://stat.ameba.jp/user_images/20211123/21/yekatsf6take/fa/c6/j/o1907085715036113111.jpg" width="420"></a></p><p>&nbsp;</p><p>コピペにもかかわらず初心者にはハードルが高かったです汗。というのも、画像ファイルの読み込みでのエラーの解決がなかなかてこずってしまいました。超基礎的なことなので、調べてもよくわからないし。結局原因はコラボラトリ―ではローカルのファイルを参照できないことでした。ドライブにまず移してから、コラボラトリ―でドライブをマウントする方法があったのでそうしました。ほかに便利な方法あったら教えていただきたいです。</p><p>&nbsp;</p><p>このプログラムは、機械学習のモデルを実装することがメインで作られているので、学習用の画像は自分で手動で10枚ずつくらいとってきました。これだとまだ識別の精度は高くないので、webから一括で自動で画像をとってくるとこからやったらいい勉強になるし面白いなとおもいました。</p><p>&nbsp;</p><p>初めてコンソール外から入力するものを動かせたので、（ただのコピペなんですけど）感動しました笑。</p><p>また一歩成長しました。</p><p>&nbsp;</p><p>&nbsp;</p><p>学んだこと</p><p>・コラボラトリーでのファイル読み込み</p><p>&nbsp;</p><p>今後したいこと</p><p>・webからスクレイピングして画像分類の精度を高める</p><p>&nbsp;</p><p>参考：<a href="https://algorithm.joho.info/machine-learning/python-keras-convolutional-neural-network/">【Python/Keras】CNN（畳み込みニューラルネット）で画像の分類 | 西住工房 (joho.info)</a></p>
]]>
</description>
<link>https://ameblo.jp/yekatsf6take/entry-12711918320.html</link>
<pubDate>Tue, 23 Nov 2021 21:39:58 +0900</pubDate>
</item>
</channel>
</rss>
