CINXE.COM

おもちゃバコ

<!DOCTYPE html> <html lang="ja" data-admin-domain="//blog.hatena.ne.jp" data-admin-origin="https://blog.hatena.ne.jp" data-author="lambda410" data-avail-langs="ja en" data-blog="lambda00.hatenablog.com" data-blog-host="lambda00.hatenablog.com" data-blog-is-public="1" data-blog-name="おもちゃバコ" data-blog-owner="lambda410" data-blog-show-ads="1" data-blog-show-sleeping-ads="" data-blog-uri="https://lambda00.hatenablog.com/" data-blog-uuid="26006613612981918" data-blogs-uri-base="https://lambda00.hatenablog.com" data-brand="hatenablog" data-data-layer="{&quot;hatenablog&quot;:{&quot;admin&quot;:{},&quot;analytics&quot;:{&quot;brand_property_id&quot;:&quot;&quot;,&quot;measurement_id&quot;:&quot;&quot;,&quot;non_sampling_property_id&quot;:&quot;&quot;,&quot;property_id&quot;:&quot;&quot;,&quot;separated_property_id&quot;:&quot;UA-29716941-24&quot;},&quot;blog&quot;:{&quot;blog_id&quot;:&quot;26006613612981918&quot;,&quot;content_seems_japanese&quot;:&quot;true&quot;,&quot;disable_ads&quot;:&quot;&quot;,&quot;enable_ads&quot;:&quot;true&quot;,&quot;enable_keyword_link&quot;:&quot;true&quot;,&quot;entry_show_footer_related_entries&quot;:&quot;true&quot;,&quot;force_pc_view&quot;:&quot;false&quot;,&quot;is_public&quot;:&quot;true&quot;,&quot;is_responsive_view&quot;:&quot;false&quot;,&quot;is_sleeping&quot;:&quot;false&quot;,&quot;lang&quot;:&quot;ja&quot;,&quot;name&quot;:&quot;\u304a\u3082\u3061\u3083\u30d0\u30b3&quot;,&quot;owner_name&quot;:&quot;lambda410&quot;,&quot;uri&quot;:&quot;https://lambda00.hatenablog.com/&quot;},&quot;brand&quot;:&quot;hatenablog&quot;,&quot;page_id&quot;:&quot;index&quot;,&quot;permalink_entry&quot;:null,&quot;pro&quot;:&quot;free&quot;,&quot;router_type&quot;:&quot;blogs&quot;}}" data-device="pc" data-dont-recommend-pro="false" data-global-domain="https://hatena.blog" data-globalheader-color="b" data-globalheader-type="pc" data-has-touch-view="1" data-help-url="https://help.hatenablog.com" data-page="index" data-parts-domain="https://hatenablog-parts.com" data-plus-available="" data-pro="false" data-router-type="blogs" data-sentry-dsn="https://03a33e4781a24cf2885099fed222b56d@sentry.io/1195218" data-sentry-environment="production" data-sentry-sample-rate="0.1" data-static-domain="https://cdn.blog.st-hatena.com" data-version="3334bbdf79bdea2e0ab924462aaa01" data-initial-state="{}" > <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#"> <meta name="robots" content="max-image-preview:large" /> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=7; IE=9; IE=10; IE=11" /> <title>おもちゃバコ</title> <link rel="canonical" href="https://lambda00.hatenablog.com/"/> <meta itemprop="name" content="おもちゃバコ"/> <meta itemprop="image" content="https://cdn.blog.st-hatena.com/images/theme/og-image-1500.png"/> <meta property="og:title" content="おもちゃバコ"/> <meta property="og:type" content="blog"/> <meta property="og:url" content="https://lambda00.hatenablog.com/"/> <meta property="og:image" content="https://cdn.blog.st-hatena.com/images/theme/og-image-1500.png"/> <meta property="og:image:alt" content="おもちゃバコ"/> <meta property="og:description" content="中身スカスカ♡" /> <meta property="og:site_name" content="おもちゃバコ"/> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:image" content="https://cdn.blog.st-hatena.com/images/theme/og-image-1500.png" /> <meta name="twitter:title" content="おもちゃバコ" /> <meta name="twitter:description" content="中身スカスカ♡" /> <meta name="twitter:app:name:iphone" content="はてなブログアプリ" /> <meta name="twitter:app:id:iphone" content="583299321" /> <meta name="twitter:app:url:iphone" content="hatenablog:///open?uri=https%3A%2F%2Flambda00.hatenablog.com%2F" /> <meta name="description" content="game, development, programming, unity, ゲーム開発,vim" /> <meta name="google-site-verification" content="My9jkwdajCCmX8QGG59rzE9HFdZzCmgbAbavG8YtPQ0" /> <meta name="keywords" content="retro, programming, game, development, unity, ゲーム開発,ゲーム,vim" /> <script id="embed-gtm-data-layer-loader" data-data-layer-page-specific="" > (function() { function loadDataLayer(elem, attrName) { if (!elem) { return {}; } var json = elem.getAttribute(attrName); if (!json) { return {}; } return JSON.parse(json); } var globalVariables = loadDataLayer( document.documentElement, 'data-data-layer' ); var pageSpecificVariables = loadDataLayer( document.getElementById('embed-gtm-data-layer-loader'), 'data-data-layer-page-specific' ); var variables = [globalVariables, pageSpecificVariables]; if (!window.dataLayer) { window.dataLayer = []; } for (var i = 0; i < variables.length; i++) { window.dataLayer.push(variables[i]); } })(); </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-P4CXTW');</script> <!-- End Google Tag Manager --> <link rel="shortcut icon" href="https://lambda00.hatenablog.com/icon/favicon"> <link rel="apple-touch-icon" href="https://lambda00.hatenablog.com/icon/touch"> <link rel="icon" sizes="192x192" href="https://lambda00.hatenablog.com/icon/link"> <link rel="alternate" type="application/atom+xml" title="Atom" href="https://lambda00.hatenablog.com/feed"/> <link rel="alternate" type="application/rss+xml" title="RSS2.0" href="https://lambda00.hatenablog.com/rss"/> <link rel="author" href="http://www.hatena.ne.jp/lambda410/"> <link rel="stylesheet" type="text/css" href="https://cdn.blog.st-hatena.com/css/blog.css?version=3334bbdf79bdea2e0ab924462aaa01"/> <link rel="stylesheet" type="text/css" href="https://usercss.blog.st-hatena.com/blog_style/26006613612981918/55f2adce08014a4af23756eba367dde2c8285754"/> <script> </script> <style> div#google_afc_user, div.google-afc-user-container, div.google_afc_image, div.google_afc_blocklink { display: block !important; } </style> <script src="https://cdn.pool.st-hatena.com/valve/valve.js" async></script> <script id="test-valve-definition"> var valve = window.valve || []; valve.push(function(v) { v.config({ service: 'blog', content: { result: 'adtrust', documentIds: ["blog:entry:6802418398321828626","blog:entry:6802418398316281951","blog:entry:6802340630911375902","blog:entry:6802340630906256746","blog:entry:6801883189107523786","blog:entry:6801883189102050284","blog:entry:6801883189082032184"] } }); v.defineDFPSlot({"lazy":1,"sizes":{"mappings":[[[320,568],[[336,280],[300,250],"fluid"]],[[0,0],[[300,250]]]]},"slotId":"ad-in-entry","unit":"/4374287/blog_pc_entry_sleep_in-article"}); v.defineDFPSlot({"lazy":"","sizes":[[300,250],[336,280],[468,60],"fluid"],"slotId":"google_afc_user_container_0","unit":"/4374287/blog_user"}); v.defineDFPSlot({"lazy":"","sizes":[[300,250],[336,280],[468,60],"fluid"],"slotId":"google_afc_user_container_1","unit":"/4374287/blog_user_2nd"}); v.defineDFPSlot({"lazy":"","sizes":[[300,250],[336,280],[468,60],"fluid"],"slotId":"google_afc_user_container_2","unit":"/4374287/blog_user_2nd"}); v.defineDFPSlot({"lazy":"1","sizes":[[300,250],[336,280],[468,60],"fluid"],"slotId":"google_afc_user_container_3","unit":"/4374287/blog_user_2nd"}); v.defineDFPSlot({"lazy":"1","sizes":[[300,250],[336,280],[468,60],"fluid"],"slotId":"google_afc_user_container_4","unit":"/4374287/blog_user_2nd"}); v.defineDFPSlot({"lazy":"1","sizes":[[300,250],[336,280],[468,60],"fluid"],"slotId":"google_afc_user_container_5","unit":"/4374287/blog_user_2nd"}); v.defineDFPSlot({"lazy":"1","sizes":[[300,250],[336,280],[468,60],"fluid"],"slotId":"google_afc_user_container_6","unit":"/4374287/blog_user_2nd"}); v.sealDFPSlots(); }); </script> <script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"おもちゃバコ","url":"https://lambda00.hatenablog.com/"}</script> <script data-ad-client="ca-pub-7030144433800877" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> </head> <body class="page-index globalheader-ng-enabled"> <div id="globalheader-container" data-brand="hatenablog" > <iframe id="globalheader" height="37" frameborder="0" allowTransparency="true"></iframe> </div> <nav class=" blog-controlls "> <div class="blog-controlls-blog-icon"> <a href="https://lambda00.hatenablog.com/"> <img src="https://cdn.image.st-hatena.com/image/square/256cb9341f490c25b16901cb79bd37150095fd35/backend=imagemagick;height=128;version=1;width=128/https%3A%2F%2Fcdn.user.blog.st-hatena.com%2Fblog_custom_icon%2F157028215%2F1597135274328968" alt="おもちゃバコ"/> </a> </div> <div class="blog-controlls-title"> <a href="https://lambda00.hatenablog.com/">おもちゃバコ</a> </div> <a href="https://blog.hatena.ne.jp/lambda410/lambda00.hatenablog.com/subscribe?utm_source=blogs_topright_button&amp;utm_campaign=subscribe_blog&amp;utm_medium=button" class="blog-controlls-subscribe-btn test-blog-header-controlls-subscribe"> 読者になる </a> </nav> <div id="container"> <div id="container-inner"> <header id="blog-title" data-brand="hatenablog"> <div id="blog-title-inner" > <div id="blog-title-content"> <h1 id="title"><a href="https://lambda00.hatenablog.com/">おもちゃバコ</a></h1> <h2 id="blog-description">中身スカスカ♡</h2> </div> </div> </header> <div id="content" class="hfeed" > <div id="content-inner"> <div id="wrapper"> <div id="main"> <div id="main-inner"> <!-- google_ad_section_start --> <!-- rakuten_ad_target_begin --> <article class="entry hentry test-hentry js-entry-article date-first autopagerize_page_element chars-6800 words-800 mode-markdown entry-odd" id="entry-6802418398321828626" data-keyword-campaign="" data-uuid="6802418398321828626" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date first"> <a href="https://lambda00.hatenablog.com/archive/2025/01/25" rel="nofollow"> <time datetime="2025-01-25T08:27:40Z" title="2025-01-25T08:27:40Z"> <span class="date-year">2025</span><span class="hyphen">-</span><span class="date-month">01</span><span class="hyphen">-</span><span class="date-day">25</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://lambda00.hatenablog.com/entry/2025/01/25/172740" class="entry-title-link bookmark">「TCP/IPソケットプログラミング C言語編」を読んだ</a> </h1> <div class="entry-categories categories"> <a href="https://lambda00.hatenablog.com/archive/category/%E5%8F%82%E8%80%83%E6%9B%B8" class="entry-category-link category-参考書">参考書</a> </div> </header> <div class="entry-content hatenablog-entry"> <p>こんにちは</p> <p>「<a class="keyword" href="https://d.hatena.ne.jp/keyword/TCP/IP">TCP/IP</a>ソケットプログラミング <a class="keyword" href="https://d.hatena.ne.jp/keyword/C%B8%C0%B8%EC">C言語</a>編」を読んだ備忘録です。</p> <ul class="table-of-contents"> <li><a href="#書籍">書籍</a></li> <li><a href="#対象">対象</a></li> <li><a href="#環境">環境</a></li> <li><a href="#メモ">メモ</a><ul> <li><a href="#前書き">前書き</a></li> <li><a href="#第1章-ネットワークとプロトコルの概要">第1章 ネットワークとプロトコルの概要</a></li> <li><a href="#第2章-ソケットの基礎">第2章 ソケットの基礎</a></li> <li><a href="#第3章-メッセージの作成">第3章 メッセージの作成</a></li> <li><a href="#第4章-UDPソケット">第4章 UDPソケット</a></li> <li><a href="#第5章-ソケットプログラミング">第5章 ソケットプログラミング</a></li> <li><a href="#第6章-ソケットAPIの舞台裏">第6章 ソケットAPIの舞台裏</a></li> <li><a href="#第7章-ドメインネームサービス">第7章 ドメインネームサービス</a></li> </ul> </li> <li><a href="#感想">感想</a></li> </ul> <hr /> <h3 id="書籍">書籍</h3> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Kindle">Kindle</a>や<a class="keyword" href="https://d.hatena.ne.jp/keyword/%C5%C5%BB%D2%BD%F1%C0%D2">電子書籍</a>は見つかりませんでした。<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/Amazon">Amazon</a>の中古で1,000円ぐらい。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.ohmsha.co.jp%2Fbook%2F9784274065194%2F" title="TCP/IPソケットプログラミング C言語編 | Ohmsha" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.ohmsha.co.jp/book/9784274065194/">www.ohmsha.co.jp</a></cite><br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/4274065197?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="sponsored noopener"><img src="https://m.media-amazon.com/images/I/51W2RbBZrqL._SL500_.jpg" class="hatena-asin-detail-image" alt="TCP/IPソケットプログラミング (C言語編)" title="TCP/IPソケットプログラミング (C言語編)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/4274065197?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="sponsored noopener">TCP/IPソケットプログラミング (C言語編)</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/Michael%20J.Donahoo" class="keyword">Michael J.Donahoo</a>,<a href="https://d.hatena.ne.jp/keyword/Kenneth%20L.Calvert" class="keyword">Kenneth L.Calvert</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%AA%A1%BC%A5%E0%BC%D2">オーム社</a></li></ul><a href="https://www.amazon.co.jp/dp/4274065197?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="sponsored noopener">Amazon</a></div></div></p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Java">Java</a>編もあるらしい。<br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/4274065200?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="sponsored noopener"><img src="https://m.media-amazon.com/images/I/41xkjIaX08L._SL500_.jpg" class="hatena-asin-detail-image" alt="TCP/IPソケットプログラミング (Java編)" title="TCP/IPソケットプログラミング (Java編)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/4274065200?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="sponsored noopener">TCP/IPソケットプログラミング (Java編)</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/Kenneth%20L.Calvert" class="keyword">Kenneth L.Calvert</a>,<a href="https://d.hatena.ne.jp/keyword/Michael%20J.Donahoo" class="keyword">Michael J.Donahoo</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%AA%A1%BC%A5%E0%BC%D2">オーム社</a></li></ul><a href="https://www.amazon.co.jp/dp/4274065200?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="sponsored noopener">Amazon</a></div></div></p> <hr /> <h3 id="対象">対象</h3> <ul> <li>ソケット通信について学びたい人。</li> <li>ネットワークの仕組みを実践的に学びたい人。</li> <li>自作サーバソフトを開発したい人。</li> </ul> <p>ネットワーク関係は抽象的な本が多い中,サーバ実装にも焦点を当てたかなり実践的な本です。<br/> ゲームサーバの実装など,<a class="keyword" href="https://d.hatena.ne.jp/keyword/C/C%2B%2B">C/C++</a>でサーバを実装したい人は読んでおくと良いかも。</p> <p>ソケット通信についての本ですが,ネットワーク学習にも最適です。<br/> 今まで読んできたネットワーク関係の本の中ではかなりの良書だと思いました。</p> <p>古いけどおススメ。</p> <hr /> <h3 id="環境">環境</h3> <p>ライブラリの関係上,<a class="keyword" href="https://d.hatena.ne.jp/keyword/Unix">Unix</a>/<a class="keyword" href="https://d.hatena.ne.jp/keyword/Unix">Unix</a>系の環境が良いと思います。<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/Windows">Windows</a>はWinsockへの移植を自力でやる必要がある。<br/> 一応,Winsockへの移植についても言及していました。</p> <ul> <li><a class="keyword" href="https://d.hatena.ne.jp/keyword/VirtualBox">VirtualBox</a> 7.0</li> <li>Lubuntu 24.04.1 LTS</li> <li>g++ 13.3.0</li> </ul> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%B2%BE%C1%DB%A5%DE%A5%B7%A5%F3">仮想マシン</a>なら,初期状態のスナップショットを取ると便利だよ。</p> <hr /> <h3 id="メモ">メモ</h3> <p>ざっぱ。</p> <h4 id="前書き">前書き</h4> <p>対象読者についての部分だけはあまり好きではない。<br/> 「この<a class="keyword" href="https://d.hatena.ne.jp/keyword/C%B8%C0%B8%EC">C言語</a>が読める人向けだよ」の例で書かれているプログラムがクソコードすぎる。<br/> 難しくはないが,わざわざハードル上げなくても良くない...?</p> <p>気になる人は<a class="keyword" href="https://d.hatena.ne.jp/keyword/Amazon">Amazon</a>のレビューにもあるから見てみてね。<br/> 書籍の内容自体は,ポインタと関数が分かれば問題ないよ。</p> <ul> <li><p><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D0%A1%BC%A5%AF%A5%EC%A1%BC">バークレー</a>ソケットインタフェース</strong><br/> ソケット通信の本名っぽい。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%25E3%2582%25BD%25E3%2582%25B1%25E3%2583%2583%25E3%2583%2588_(BSD)" title="ソケット (BSD) - Wikipedia" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://ja.wikipedia.org/wiki/%E3%82%BD%E3%82%B1%E3%83%83%E3%83%88_(BSD)">ja.wikipedia.org</a></cite></p></li> <li><p><strong>IPX/SPXと<a class="keyword" href="https://d.hatena.ne.jp/keyword/AppleTalk">AppleTalk</a></strong><br/> この用語についての言及していることに時代を感じる。</p></li> </ul> <h4 id="第1章-ネットワークとプロトコルの概要">第1章 ネットワークと<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%C8%A5%B3%A5%EB">プロトコル</a>の概要</h4> <ul> <li><p><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%C8%A5%B3%A5%EB">プロトコル</a></strong><br/> データの規約。<br/> ただの規約なんだけど,なんか格式が高く感じるよね。</p></li> <li><p><strong>ベストエフォート</strong><br/> 出来る限り頑張ります。<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/UDP">UDP</a>はこっち。</p></li> <li><p><strong>ストリーム型サービス</strong><br/> 通信確立による諸々の制御を行う。<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/TCP">TCP</a>はこっち。</p></li> <li><p><strong>ソケット</strong><br/> アプリがデータ送受信するための仕組みを抽象化したもの。<br/> ファイルI/Oと似た仕組み。</p></li> <li><p><strong>バインド</strong><br/> ソケットをポート番号に紐づけることなど。<br/> あまり気にしていなかったが,よくよく考えるとそうだねって感じた。</p></li> <li><p><strong>ポート番号が特定するのはソケット</strong><br/> アプリではない。</p></li> <li><p><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%B9%A5%AF%A5%EA%A5%D7%A5%BF">ディスクリプタ</a></strong><br/> 区別番号。<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/DirectX">DirectX</a>とかでも出てくる概念だよね。<br/> 抽象的なのであまり理解できていない。</p></li> </ul> <h4 id="第2章-ソケットの基礎">第2章 ソケットの基礎</h4> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a>はかなり適当なのでバグってると思う。</p> <ul> <li><p><strong>アドレスファミリ</strong><br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%CF%A5%C3%A5%D4%A1%BC%A5%BB%A5%C3%A5%C8">ハッピーセット</a>って認識だけど,<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%C8%A5%B3%A5%EB">プロトコル</a>ファミリとの違いがよく分からない。<br/> どうやら拡張性を見据えて設計した結果みたいだね。いつか使われるかもね。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwa3.i-3-i.info%2Fword13167.html" title="アドレスファミリとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://wa3.i-3-i.info/word13167.html">wa3.i-3-i.info</a></cite><br/> AF_INETぐらいしか知らなかったけど,色々あるみたいだね。<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/AppleTalk">AppleTalk</a>があってちょっと面白い。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.geekpage.jp%2Fprogramming%2Fwinsock%2Faddressfamily.php" title="アドレスファミリ:Geekなぺーじ" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.geekpage.jp/programming/winsock/addressfamily.php">www.geekpage.jp</a></cite></p></li> <li><p><strong>TcpEchoClient.cpp</strong><br/> g++ TcpEchoClient.cpp -o client</p></li> </ul> <pre class="code lang-cpp" data-lang="cpp" data-unlink><span class="synPreProc">#include </span><span class="synConstant">&lt;iostream&gt;</span> <span class="synPreProc">#include </span><span class="synConstant">&lt;sys/socket.h&gt;</span> <span class="synPreProc">#include </span><span class="synConstant">&lt;arpa/inet.h&gt;</span> <span class="synPreProc">#include </span><span class="synConstant">&lt;unistd.h&gt;</span> <span class="synType">const</span> <span class="synType">char</span>* <span class="synType">const</span> pServerIpAddress = <span class="synConstant">&quot;127.0.0.1&quot;</span>; <span class="synType">const</span> <span class="synType">char</span> echoString[] = <span class="synConstant">&quot;HELL, WORLD!&quot;</span>; <span class="synType">int</span> <span class="synIdentifier">main</span>(<span class="synType">int</span> argc, <span class="synType">char</span>* argv[]) { <span class="synComment">// ソケット作成</span> <span class="synType">const</span> <span class="synType">int</span> sock = <span class="synIdentifier">socket</span>(PF_INET, SOCK_STREAM, IPPROTO_TCP); <span class="synComment">// PF_LOCALでもいけるかも?</span> <span class="synStatement">if</span> (sock &lt; <span class="synConstant">0</span>) { <span class="synConstant">std</span>::<span class="synIdentifier">cerr</span> &lt;&lt; <span class="synConstant">&quot;ERROR: sock=&quot;</span> &lt;&lt; sock &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synStatement">return</span> <span class="synConstant">1</span>; } <span class="synComment">// サーバ情報の構築</span> sockaddr_in serverAddress = {}; serverAddress.sin_family = AF_INET; <span class="synComment">// sin は sockaddr_in の略?</span> serverAddress.sin_addr.s_addr = <span class="synIdentifier">inet_addr</span>(pServerIpAddress); <span class="synComment">// inet_addr: バイナリに変換してくれるらしい</span> serverAddress.sin_port = <span class="synIdentifier">htons</span>(<span class="synConstant">7</span>); <span class="synComment">// エコーポート7: htons は host to network sort の略</span> <span class="synComment">// サーバーへ接続</span> <span class="synType">const</span> <span class="synType">int</span> result = <span class="synIdentifier">connect</span>(sock, <span class="synStatement">reinterpret_cast</span>&lt;sockaddr*&gt;(&amp;serverAddress), <span class="synStatement">sizeof</span>(serverAddress)); <span class="synStatement">if</span> (result &lt; <span class="synConstant">0</span>) { <span class="synConstant">std</span>::<span class="synIdentifier">cerr</span> &lt;&lt; <span class="synConstant">&quot;ERROR: connect=&quot;</span> &lt;&lt; result &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synIdentifier">close</span>(sock); <span class="synStatement">return</span> <span class="synConstant">1</span>; } <span class="synComment">// サーバへデータ送信</span> <span class="synType">const</span> <span class="synType">int</span> sentBytes = <span class="synIdentifier">send</span>(sock, echoString, <span class="synStatement">sizeof</span>(echoString), <span class="synConstant">0</span>); <span class="synStatement">if</span> (sentBytes != <span class="synStatement">sizeof</span>(echoString)) { <span class="synConstant">std</span>::<span class="synIdentifier">cerr</span> &lt;&lt; <span class="synConstant">&quot;ERROR: sentByte=&quot;</span> &lt;&lt; sentBytes &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synIdentifier">close</span>(sock); <span class="synStatement">return</span> <span class="synConstant">1</span>; } <span class="synComment">// サーバからデータ受信</span> <span class="synType">int</span> receivedTotalBytes = <span class="synConstant">0</span>; <span class="synConstant">std</span>::<span class="synIdentifier">cout</span> &lt;&lt; <span class="synConstant">&quot;Received: &quot;</span>; <span class="synStatement">do</span> { <span class="synType">char</span> echoBuffer[<span class="synConstant">1024</span>] = {}; <span class="synType">const</span> <span class="synType">int</span> receivedBytes = <span class="synIdentifier">recv</span>(sock, echoBuffer, <span class="synStatement">sizeof</span>(echoBuffer) - <span class="synConstant">1</span>, <span class="synConstant">0</span>); <span class="synStatement">if</span> (receivedBytes &lt;= <span class="synConstant">0</span>) { <span class="synConstant">std</span>::<span class="synIdentifier">cerr</span> &lt;&lt; <span class="synConstant">&quot;ERROR: receivedBytes=&quot;</span> &lt;&lt; receivedBytes &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synIdentifier">close</span>(sock); <span class="synStatement">return</span> <span class="synConstant">1</span>; } receivedTotalBytes += receivedBytes; echoBuffer[receivedBytes] = <span class="synSpecial">'\0'</span>; <span class="synConstant">std</span>::<span class="synIdentifier">cout</span> &lt;&lt; echoBuffer; } <span class="synStatement">while</span>(receivedTotalBytes &lt; <span class="synStatement">sizeof</span>(echoString)); <span class="synConstant">std</span>::<span class="synIdentifier">cout</span> &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synComment">// ソケット後片付け: ファイルディスクリプタのクローズ</span> <span class="synIdentifier">close</span>(sock); <span class="synStatement">return</span> <span class="synConstant">0</span>; } </pre> <pre class="code" data-lang="" data-unlink>Received: HELL, WORLD!</pre> <ul> <li><strong>TcpEchoServer.cpp</strong><br/> g++ TcpEchoServer.cpp -o server<br/> listenの<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%AD%A5%E5%A1%BC%A5%B5%A5%A4">キューサイ</a>ズはこのサイトが詳しい。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fitpfdoc.hitachi.co.jp%2Fmanuals%2Flink%2Fcosmi_v0870%2Fapkw%2FEU050195.HTM" title="Webクライアントからの接続数の制御の概要" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://itpfdoc.hitachi.co.jp/manuals/link/cosmi_v0870/apkw/EU050195.HTM">itpfdoc.hitachi.co.jp</a></cite></li> </ul> <pre class="code lang-cpp" data-lang="cpp" data-unlink><span class="synPreProc">#include </span><span class="synConstant">&lt;iostream&gt;</span> <span class="synPreProc">#include </span><span class="synConstant">&lt;sys/socket.h&gt;</span> <span class="synPreProc">#include </span><span class="synConstant">&lt;arpa/inet.h&gt;</span> <span class="synPreProc">#include </span><span class="synConstant">&lt;unistd.h&gt;</span> <span class="synType">const</span> <span class="synType">char</span>* <span class="synType">const</span> pServerIpAddress = <span class="synConstant">&quot;127.0.0.1&quot;</span>; <span class="synType">const</span> <span class="synType">char</span> echoString[] = <span class="synConstant">&quot;HELL, WORLD!&quot;</span>; <span class="synType">int</span> <span class="synIdentifier">main</span>(<span class="synType">int</span> argc, <span class="synType">char</span>* argv[]) { <span class="synComment">// ソケット作成</span> <span class="synType">const</span> <span class="synType">int</span> sock = <span class="synIdentifier">socket</span>(PF_INET, SOCK_STREAM, IPPROTO_TCP); <span class="synStatement">if</span> (sock &lt; <span class="synConstant">0</span>) { <span class="synConstant">std</span>::<span class="synIdentifier">cerr</span> &lt;&lt; <span class="synConstant">&quot;ERROR: sock=&quot;</span> &lt;&lt; sock &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synStatement">return</span> <span class="synConstant">1</span>; } <span class="synComment">// ローカル情報の構築</span> sockaddr_in serverAddress = {}; serverAddress.sin_family = AF_INET; serverAddress.sin_addr.s_addr = <span class="synIdentifier">htonl</span>(INADDR_ANY); <span class="synComment">// 複数のネットワークカード(ローカルアドレス)に対応できるワイルドカード的なやつかな?</span> serverAddress.sin_port = <span class="synIdentifier">htons</span>(<span class="synConstant">7</span>); <span class="synComment">// ローカルにバインド</span> <span class="synType">const</span> <span class="synType">int</span> result = <span class="synIdentifier">bind</span>(sock, <span class="synStatement">reinterpret_cast</span>&lt;sockaddr*&gt;(&amp;serverAddress), <span class="synStatement">sizeof</span>(serverAddress)); <span class="synStatement">if</span> (result &lt; <span class="synConstant">0</span>) { <span class="synConstant">std</span>::<span class="synIdentifier">cerr</span> &lt;&lt; <span class="synConstant">&quot;ERROR: bind=&quot;</span> &lt;&lt; result &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synIdentifier">close</span>(sock); <span class="synStatement">return</span> <span class="synConstant">1</span>; } <span class="synComment">// 接続待ち</span> <span class="synType">const</span> <span class="synType">int</span> listenResult = <span class="synIdentifier">listen</span>(sock, <span class="synConstant">10</span>); <span class="synStatement">if</span> (listenResult &lt; <span class="synConstant">0</span>) { <span class="synConstant">std</span>::<span class="synIdentifier">cerr</span> &lt;&lt; <span class="synConstant">&quot;ERROR: listenResult=&quot;</span> &lt;&lt; listenResult &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synIdentifier">close</span>(sock); <span class="synStatement">return</span> <span class="synConstant">1</span>; } <span class="synComment">// クライアント接続待ち</span> <span class="synType">int</span> clientSock = <span class="synConstant">0</span>; sockaddr_in clientAddress = {}; <span class="synType">unsigned</span> <span class="synType">int</span> clientLen = <span class="synStatement">sizeof</span>(clientAddress); clientSock = <span class="synIdentifier">accept</span>(sock, <span class="synStatement">reinterpret_cast</span>&lt;sockaddr*&gt;(&amp;clientAddress), &amp;clientLen); <span class="synStatement">if</span> (clientSock &lt; <span class="synConstant">0</span>) { <span class="synConstant">std</span>::<span class="synIdentifier">cerr</span> &lt;&lt; <span class="synConstant">&quot;ERROR: clientSock=&quot;</span> &lt;&lt; clientSock &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synIdentifier">close</span>(sock); <span class="synIdentifier">close</span>(clientSock); <span class="synStatement">return</span> <span class="synConstant">1</span>; } <span class="synComment">// クライアント情報出力</span> <span class="synConstant">std</span>::<span class="synIdentifier">cout</span> &lt;&lt; <span class="synConstant">&quot;clientSocket=&quot;</span> &lt;&lt; clientSock &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synConstant">std</span>::<span class="synIdentifier">cout</span> &lt;&lt; clientAddress.sin_addr.s_addr &lt;&lt; <span class="synConstant">&quot; &quot;</span> &lt;&lt; <span class="synIdentifier">inet_ntoa</span>(clientAddress.sin_addr) &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synComment">// クライアント受信</span> <span class="synType">char</span> echoBuffer[<span class="synConstant">1024</span>] = {}; <span class="synType">const</span> <span class="synType">int</span> receivedBytes = <span class="synIdentifier">recv</span>(clientSock, echoBuffer, <span class="synStatement">sizeof</span>(echoBuffer), <span class="synConstant">0</span>); <span class="synStatement">if</span> (receivedBytes &lt; <span class="synConstant">0</span>) { <span class="synConstant">std</span>::<span class="synIdentifier">cerr</span> &lt;&lt; <span class="synConstant">&quot;ERROR: receivedBytes=&quot;</span> &lt;&lt; receivedBytes &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synIdentifier">close</span>(sock); <span class="synIdentifier">close</span>(clientSock); <span class="synStatement">return</span> <span class="synConstant">1</span>; } <span class="synComment">// クライアント送信</span> <span class="synType">const</span> <span class="synType">int</span> sentBytes = <span class="synIdentifier">send</span>(clientSock, echoBuffer, <span class="synStatement">sizeof</span>(echoBuffer), <span class="synConstant">0</span>); <span class="synConstant">std</span>::<span class="synIdentifier">cout</span> &lt;&lt; <span class="synConstant">&quot;sendBytes=&quot;</span> &lt;&lt; sentBytes &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synComment">// ソケット後片付け: ファイルディスクリプタのクローズ</span> <span class="synIdentifier">close</span>(clientSock); <span class="synIdentifier">close</span>(sock); <span class="synStatement">return</span> <span class="synConstant">0</span>; } </pre> <pre class="code" data-lang="" data-unlink>clientSocket=4 16777343 127.0.0.1 sendBytes=1024</pre> <p>(16,777,343)10<br/> = (0000 0001/0000 0000/0000 0000/0111 1111)2</p> <p>ネットワークバイトオーダーはビッグ<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A8%A5%F3%A5%C7%A5%A3%A5%A2%A5%F3">エンディアン</a>とすると</p> <p>(0000 0001/0000 0000/0000 0000/0111 1111)2<br/> ↓<br/> (0111 1111/0000 0000/0000 0000/0000 0001)2<br/> ↓<br/> 127/0/0/1 → <a class="keyword" href="https://d.hatena.ne.jp/keyword/127.0.0.1">127.0.0.1</a></p> <p>なるほどね。</p> <h4 id="第3章-メッセージの作成">第3章 メッセージの作成</h4> <ul> <li><p><strong>アプリケーション<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%C8%A5%B3%A5%EB">プロトコル</a></strong><br/> メッセージフォーマットの定義に近い。<br/> 実際,メッセージフォーマットを決めるだけで<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%C8%A5%B3%A5%EB">プロトコル</a>を名乗れるのかね?</p></li> <li><p><strong>パディング</strong><br/> 構造体のパディングがいまいち理解できていないので調べた。</p></li> </ul> <pre class="code lang-cpp" data-lang="cpp" data-unlink><span class="synPreProc">#include </span><span class="synConstant">&lt;iostream&gt;</span> <span class="synPreProc">#include </span><span class="synConstant">&lt;cstdint&gt;</span> <span class="synType">struct</span> Test1 { <span class="synConstant">std</span>::<span class="synType">uint32_t</span> a; <span class="synConstant">std</span>::<span class="synType">uint16_t</span> b; <span class="synConstant">std</span>::<span class="synType">uint8_t</span> c; }; <span class="synType">struct</span> Test2 { <span class="synConstant">std</span>::<span class="synType">uint32_t</span> a; <span class="synConstant">std</span>::<span class="synType">uint16_t</span> b; <span class="synConstant">std</span>::<span class="synType">uint8_t</span> c; <span class="synConstant">std</span>::<span class="synType">uint8_t</span> d; }; <span class="synType">int</span> <span class="synIdentifier">main</span>() { <span class="synConstant">std</span>::<span class="synIdentifier">cout</span> &lt;&lt; <span class="synConstant">&quot;Test1=&quot;</span> &lt;&lt; <span class="synStatement">sizeof</span>(Test1) &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synConstant">std</span>::<span class="synIdentifier">cout</span> &lt;&lt; <span class="synConstant">&quot;Test2=&quot;</span> &lt;&lt; <span class="synStatement">sizeof</span>(Test2) &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; <span class="synStatement">return</span> <span class="synConstant">0</span>; } </pre> <pre class="code lang-cpp" data-lang="cpp" data-unlink>Test1=<span class="synConstant">8</span> Test2=<span class="synConstant">8</span> </pre> <p>自分の環境だと,両方とも8バイトだった。<br/> (alignof()でアライメントを調べられるよ)</p> <p>一番大きい4バイトに合わせてパディングされているのが分かる。<br/> 構造体を雑にバイナリに変換するときは注意しようね。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Flogicalbeat.jp%2Fblog%2F4032%2F" title="【C++】パディングとアライメント" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://logicalbeat.jp/blog/4032/">logicalbeat.jp</a></cite></p> <p>面倒だけど全要素を代入するか,メモリの無駄を承知で一番大きい型に合わせるのが楽かな?<br/> パディングするための仕組みを作成するコストとの相談だと思う。</p> <ul> <li><strong><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%DF%A5%F3%A5%B0">フレーミング</a></strong><br/> メッセージの区切りを特定できるようにフォーマットすることを指すらしい。<br/> 初めて聞いた言葉だった。</li> </ul> <h4 id="第4章-UDPソケット">第4章 <a class="keyword" href="https://d.hatena.ne.jp/keyword/UDP">UDP</a>ソケット</h4> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B3%A5%CD%A5%AF%A5%B7%A5%E7%A5%F3%A5%EC%A5%B9">コネクションレス</a>を体感できる。</p> <h4 id="第5章-ソケットプログラミング">第5章 ソケットプログラミング</h4> <p>この本の中で一番面白いところ。<br/> シグナル,ノン<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D6%A5%ED%A5%C3%A5%AD%A5%F3%A5%B0">ブロッキング</a>I/O,非同期I/O,<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%DE%A5%EB%A5%C1%A5%BF%A5%B9%A5%AF">マルチタスク</a>によるサーバ実装について触れている。</p> <p>サーバアプリケーションを作成するための技術は,この章を読むだけでかなり賄えるはず。<br/> この章だけでも値段以上の価値はあると思う。</p> <h4 id="第6章-ソケットAPIの舞台裏">第6章 ソケット<a class="keyword" href="https://d.hatena.ne.jp/keyword/API">API</a>の舞台裏</h4> <p>ソケット自体の実装詳細について。<br/> 接続・切断を図解で説明しているのが珍しいね。</p> <h4 id="第7章-ドメインネームサービス">第7章 <a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C9%A5%E1%A5%A4%A5%F3">ドメイン</a>ネームサービス</h4> <p>ソケット<a class="keyword" href="https://d.hatena.ne.jp/keyword/API">API</a>で名前解決する方法について。<br/> 特筆することがない。</p> <hr /> <h3 id="感想">感想</h3> <p>サーバプログラムを実装することになったので,再学習用の教材として読み始めました。<br/> なんとなくソケットプログラミングの触りだけ学べればいいかって感じで読み始めたのですが,そこそこ突っ込んだ内容が書かれていたので面白かったです。</p> <p>マルチスレッドや非同期I/Oに着目したサーバ実装の解説本は,あまり見たことがなかったので実践的に学べたのが良かった。<br/> ノン<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D6%A5%ED%A5%C3%A5%AD%A5%F3%A5%B0">ブロッキング</a>I/Oとかの用語解説で終わらず,具体的な実装まで踏み込んでいるので,再度読みたいと思います。</p> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/%E6%8A%80%E8%A1%93%E6%9B%B8" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">技術書</span> </a> </span> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">ネットワーク</span> </a> </span> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{&quot;area&quot;: &quot;finish_reading&quot;}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="lambda410" >lambda410</span></span> <span class="entry-footer-time"><a href="https://lambda00.hatenablog.com/entry/2025/01/25/172740"><time data-relative datetime="2025-01-25T08:27:40Z" title="2025-01-25T08:27:40Z" class="updated">2025-01-25 17:27</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/lambda410/lambda00.hatenablog.com/subscribe?utm_source=blogs_entry_footer&amp;utm_campaign=subscribe_blog&amp;utm_medium=button"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://lambda00.hatenablog.com/entry/2025/01/25/172740" data-hatena-star-title="「TCP/IPソケットプログラミング C言語編」を読んだ" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/lambda00.hatenablog.com/entry/2025/01/25/172740" class="hatena-bookmark-button" data-hatena-bookmark-url="https://lambda00.hatenablog.com/entry/2025/01/25/172740" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://lambda00.hatenablog.com/entry/2025/01/25/172740"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?hashtags=%E6%8A%80%E8%A1%93%E6%9B%B8&amp;hashtags=%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF&amp;text=%E3%80%8CTCP%2FIP%E3%82%BD%E3%82%B1%E3%83%83%E3%83%88%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0+C%E8%A8%80%E8%AA%9E%E7%B7%A8%E3%80%8D%E3%82%92%E8%AA%AD%E3%82%93%E3%81%A0+-+%E3%81%8A%E3%82%82%E3%81%A1%E3%82%83%E3%83%90%E3%82%B3&amp;url=https%3A%2F%2Flambda00.hatenablog.com%2Fentry%2F2025%2F01%2F25%2F172740" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <div id="google_afc_user_container_0" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> </div> <div class="comment-box js-comment-box"> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> </div> </footer> </div> </article> <article class="entry hentry test-hentry js-entry-article date-first autopagerize_page_element chars-1600 words-100 mode-markdown entry-even" id="entry-6802418398316281951" data-keyword-campaign="" data-uuid="6802418398316281951" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date first"> <a href="https://lambda00.hatenablog.com/archive/2024/12/31" rel="nofollow"> <time datetime="2024-12-31T11:19:44Z" title="2024-12-31T11:19:44Z"> <span class="date-year">2024</span><span class="hyphen">-</span><span class="date-month">12</span><span class="hyphen">-</span><span class="date-day">31</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://lambda00.hatenablog.com/entry/2024/12/31/201944" class="entry-title-link bookmark">論文・レポート用の環境を整える:Windows</a> </h1> <div class="entry-categories categories"> <a href="https://lambda00.hatenablog.com/archive/category/%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83" class="entry-category-link category-開発環境">開発環境</a> </div> </header> <div class="entry-content hatenablog-entry"> <p>こんにちは</p> <p>論文とレポートを作成する個人用の環境を作成したときの備忘録です.</p> <ul class="table-of-contents"> <li><a href="#開発環境">開発環境</a></li> <li><a href="#Tex">Tex</a></li> <li><a href="#Overleaf">Overleaf</a></li> <li><a href="#Python3">Python3</a></li> <li><a href="#ノートアプリ">ノートアプリ</a></li> <li><a href="#Zotero">Zotero</a></li> <li><a href="#Inkscape">Inkscape</a></li> <li><a href="#Gimp">Gimp</a></li> <li><a href="#まとめ">まとめ</a></li> </ul> <hr /> <h3 id="開発環境">開発環境</h3> <p>化石環境ですが,Windows11でも行けると思う.<br/> 多分...</p> <ul> <li>Windows10 Home 22H2 19045.5247</li> </ul> <hr /> <h3 id="Tex"><a class="keyword" href="https://d.hatena.ne.jp/keyword/Tex">Tex</a></h3> <p>とりあえず<a class="keyword" href="https://d.hatena.ne.jp/keyword/Tex">Tex</a>をインストールしないことには始まらない.<br/> TexWikiを見ながらインストールした.</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftexwiki.texjp.org%2F%3FTeX%2520Live%252FWindows" title="TeX Live/Windows - TeX Wiki" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://texwiki.texjp.org/?TeX%20Live%2FWindows">texwiki.texjp.org</a></cite></p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%B4%C4%B6%AD%CA%D1%BF%F4">環境変数</a>を汚したくない人は,WSLにインストールするのがオススメ.<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/Inkscape">Inkscape</a>で<a class="keyword" href="https://d.hatena.ne.jp/keyword/Tex">Tex</a>の機能を利用したいため,今回は<a class="keyword" href="https://d.hatena.ne.jp/keyword/Windows">Windows</a>に直インストール.</p> <ol> <li><strong>Installing <a class="keyword" href="https://d.hatena.ne.jp/keyword/TeX">TeX</a> Live over the Internet から install-tl-<a class="keyword" href="https://d.hatena.ne.jp/keyword/windows">windows</a>.exeをダウンロード</strong><br/> ISOからインストールする方法もあるらしい.<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%DF%A5%E9%A1%BC%A5%B5%A5%A4%A5%C8">ミラーサイト</a>にAsiaの<a class="keyword" href="https://d.hatena.ne.jp/keyword/KDDI">KDDI</a>を指定したけど,別に指定しなくても良さそう.<br/> TeXworksのインストールチェックを外してからインストールを開始した.</li> <li><strong>アプデ</strong></li> <li><strong>再起動</strong><br/> 実はインストール後に再起動する理由は分からない.</li> </ol> <h3 id="Overleaf">Overleaf</h3> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Tex">Tex</a>の環境構築がダルいときはOverleaf一択だと思う.<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fja.overleaf.com" title="Overleaf, オンラインLaTeXエディター" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://ja.overleaf.com">ja.overleaf.com</a></cite></p> <p>もうOverleafで良くない?</p> <h3 id="Python3">Python3</h3> <p>データ整形に利用するためにインストール.<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/%B4%C4%B6%AD%CA%D1%BF%F4">環境変数</a>が汚れるので直インストールしてこなかったが,いつの間にかMSStore経由でインストールできるようになっていた.<br/> WSL,WinGetでもインストールできるよ.</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fapps.microsoft.com%2Fdetail%2F9p7qfqmjrfp7%3Fhl%3Dja-jp%26gl%3DJP" title="Python 3.9 - Windows に無料でダウンロードしてインストールする | Microsoft Store" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://apps.microsoft.com/detail/9p7qfqmjrfp7?hl=ja-jp&gl=JP">apps.microsoft.com</a></cite></p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Fwindows%2Fpython%2Fbeginners" title="Windows での Python (初心者向け)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://learn.microsoft.com/ja-jp/windows/python/beginners">learn.microsoft.com</a></cite></p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Microsoft">Microsoft</a>直々にインストール方法の解説ページがあった.</p> <h3 id="ノートアプリ">ノートアプリ</h3> <p>今まではテキストファイルにメモを取っていたが,これからはメモアプリを使おうと思う.<br/> とりあえず候補を挙げる.</p> <ul> <li><a class="keyword" href="https://d.hatena.ne.jp/keyword/Evernote">Evernote</a></li> <li>Notion</li> <li>AppFlowy.IO<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fappflowy.io" title="AppFlowy.IO" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://appflowy.io">appflowy.io</a></cite></li> <li><a class="keyword" href="https://d.hatena.ne.jp/keyword/Google">Google</a>キープ</li> <li><a class="keyword" href="https://d.hatena.ne.jp/keyword/OneNote">OneNote</a></li> <li>テキストファイル</li> </ul> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Evernote">Evernote</a>とNotionは便利だけど,機能開放にお金がかかるから無しかな.<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%AF%A5%E9%A5%A6%A5%C9">クラウド</a>アプリは人質に取られるとお金を払い続けるしかないのがね.</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/OSS">OSS</a>のAppFlowy.IOはいい感じだけど,セルフホストが面倒.</p> <p>残りは<a class="keyword" href="https://d.hatena.ne.jp/keyword/Google">Google</a>キープか<a class="keyword" href="https://d.hatena.ne.jp/keyword/OneNote">OneNote</a>かテキストファイルになり,<a class="keyword" href="https://d.hatena.ne.jp/keyword/OneNote">OneNote</a>にした.<br/> 理由は適当にメモできるのが良かった.</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Markdown">Markdown</a>とかでメモを取ると,綺麗に書くことを意識しすぎて内容を忘れるしね.</p> <p>ファイル管理はGitか<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%AF%A5%E9%A5%A6%A5%C9">クラウド</a>かな.</p> <h3 id="Zotero"><a class="keyword" href="https://d.hatena.ne.jp/keyword/Zotero">Zotero</a></h3> <p>文献管理ソフトウェア.<br/> テキストファイルで雑に管理してたけど,これからはアプリに任せたいと思う.<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.zotero.org" title="Zotero | Your personal research assistant" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.zotero.org">www.zotero.org</a></cite></p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/OSS">OSS</a>らしく,個人的に評価が高い.<br/> 無償では300MBまでなので,ファイル管理は個人環境でかな?</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/bibtex">bibtex</a>を<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%AF%A5%EA%A5%C3%A5%D7%A5%DC%A1%BC%A5%C9">クリップボード</a>からインポートして管理でき,エクスポートもできる.<br/> 一度使うと手放せない.</p> <h3 id="Inkscape"><a class="keyword" href="https://d.hatena.ne.jp/keyword/Inkscape">Inkscape</a></h3> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D9%A5%AF%A5%BF%A1%BC">ベクター</a>系描画ソフト.<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/illustrator">illustrator</a>の<a class="keyword" href="https://d.hatena.ne.jp/keyword/OSS">OSS</a>版的な立ち位置.</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Finkscape.org%2Fja%2F" title="Draw Freely | Inkscape" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://inkscape.org/ja/">inkscape.org</a></cite></p> <p>2次配布しているサイトからダウンロードすると,いらないソフトがバンドルされることでも有名らしい.<br/> 必ず公式サイトからダウンロードしようね.</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftexwiki.texjp.org%2F%3FInkscape" title="Inkscape - TeX Wiki" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://texwiki.texjp.org/?Inkscape">texwiki.texjp.org</a></cite></p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Inkscape">Inkscape</a>で数式を<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%EC%A5%F3%A5%C0%A5%EA%A5%F3%A5%B0">レンダリング</a>したい人は<a class="keyword" href="https://d.hatena.ne.jp/keyword/Tex">Tex</a>のインストールが必須かも.</p> <h3 id="Gimp"><a class="keyword" href="https://d.hatena.ne.jp/keyword/Gimp">Gimp</a></h3> <p>ラスター系描画ソフト.<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/Photoshop">Photoshop</a>の<a class="keyword" href="https://d.hatena.ne.jp/keyword/OSS">OSS</a>版的な立ち位置.</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.gimp.org" title="GIMP" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.gimp.org">www.gimp.org</a></cite></p> <p>画像の<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D2%A5%B9%A5%C8%A5%B0%A5%E9%A5%E0">ヒストグラム</a>を見たいときに利用するかも.</p> <hr /> <h3 id="まとめ">まとめ</h3> <p>まあ,記事にするほどでもないね.</p> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/%E8%AB%96%E6%96%87" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">論文</span> </a> </span> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/LaTeX" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">LaTeX</span> </a> </span> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{&quot;area&quot;: &quot;finish_reading&quot;}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="lambda410" >lambda410</span></span> <span class="entry-footer-time"><a href="https://lambda00.hatenablog.com/entry/2024/12/31/201944"><time data-relative datetime="2024-12-31T11:19:44Z" title="2024-12-31T11:19:44Z" class="updated">2024-12-31 20:19</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/lambda410/lambda00.hatenablog.com/subscribe?utm_campaign=subscribe_blog&amp;utm_medium=button&amp;utm_source=blogs_entry_footer"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://lambda00.hatenablog.com/entry/2024/12/31/201944" data-hatena-star-title="論文・レポート用の環境を整える:Windows" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/lambda00.hatenablog.com/entry/2024/12/31/201944" class="hatena-bookmark-button" data-hatena-bookmark-url="https://lambda00.hatenablog.com/entry/2024/12/31/201944" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://lambda00.hatenablog.com/entry/2024/12/31/201944"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?hashtags=%E8%AB%96%E6%96%87&amp;hashtags=LaTeX&amp;text=%E8%AB%96%E6%96%87%E3%83%BB%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E7%94%A8%E3%81%AE%E7%92%B0%E5%A2%83%E3%82%92%E6%95%B4%E3%81%88%E3%82%8B%EF%BC%9AWindows+-+%E3%81%8A%E3%82%82%E3%81%A1%E3%82%83%E3%83%90%E3%82%B3&amp;url=https%3A%2F%2Flambda00.hatenablog.com%2Fentry%2F2024%2F12%2F31%2F201944" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <div id="google_afc_user_container_1" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user_2nd"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> </div> <div class="comment-box js-comment-box"> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> </div> </footer> </div> </article> <article class="entry hentry test-hentry js-entry-article date-first autopagerize_page_element chars-2800 words-400 mode-markdown entry-odd" id="entry-6802340630911375902" data-keyword-campaign="" data-uuid="6802340630911375902" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date first"> <a href="https://lambda00.hatenablog.com/archive/2024/10/04" rel="nofollow"> <time datetime="2024-10-04T09:17:31Z" title="2024-10-04T09:17:31Z"> <span class="date-year">2024</span><span class="hyphen">-</span><span class="date-month">10</span><span class="hyphen">-</span><span class="date-day">04</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://lambda00.hatenablog.com/entry/2024/10/04/181731" class="entry-title-link bookmark">Godot v4.3: スプライトにアウトラインをつける(2D)</a> </h1> <div class="entry-categories categories"> <a href="https://lambda00.hatenablog.com/archive/category/Godot" class="entry-category-link category-Godot">Godot</a> </div> </header> <div class="entry-content hatenablog-entry"> <p>こんにちは</p> <p>Godot Engineで2D画像にアウトラインをつける手法の備忘録です。</p> <hr /> <ul class="table-of-contents"> <li><a href="#参考文献">参考文献</a></li> <li><a href="#開発環境">開発環境</a></li> <li><a href="#利用アセット">利用アセット</a></li> <li><a href="#アウトライン">アウトライン</a><ul> <li><a href="#簡単な概要">簡単な概要</a></li> <li><a href="#シーン">シーン</a></li> <li><a href="#シェーダー">シェーダー</a><ul> <li><a href="#canvas_item">canvas_item</a></li> <li><a href="#uniform">uniform</a></li> </ul> </li> <li><a href="#アウトライン作成">アウトライン作成</a></li> <li><a href="#ソースコード">ソースコード</a></li> </ul> </li> <li><a href="#感想">感想</a></li> </ul> <hr /> <h3 id="参考文献">参考文献</h3> <p>こちらのサイトをほぼ参考にしました。<br/> Godotを利用していますが,考え方自体はUnityなどにも流用可能ですね。 <br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgdquest.mavenseed.com%2Flessons%2Foutlines-for-2d-sprites" title="Outlines for 2D sprites" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://gdquest.mavenseed.com/lessons/outlines-for-2d-sprites">gdquest.mavenseed.com</a></cite></p> <hr /> <h3 id="開発環境">開発環境</h3> <ul> <li><a class="keyword" href="https://d.hatena.ne.jp/keyword/Windows">Windows</a> 11 Home 23H2</li> <li>Godot Engine v4.3.stable.<a class="keyword" href="https://d.hatena.ne.jp/keyword/official">official</a> [77dcf97d8]</li> </ul> <h3 id="利用アセット">利用アセット</h3> <p>こちらのアセットを利用しました。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fansimuz.itch.io%2Fsuper-grotto-escape-pack" title="Warped: Super Grotto Escape Collection by ansimuz" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://ansimuz.itch.io/super-grotto-escape-pack">ansimuz.itch.io</a></cite></p> <hr /> <h3 id="アウトライン">アウトライン</h3> <h4 id="簡単な概要">簡単な概要</h4> <p>画像を8方向に移動させて単色にし,その上に元画像を描画してアウトラインを作成する手法です。<br/> 輪郭の影響を受けますが,実装が容易で比較的理解しやすいと思います。</p> <p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lambda410/20241004/20241004180008.png" width="964" height="374" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p> <h4 id="シーン">シーン</h4> <p>Node2Dの子供にSprite2Dを設定し,インスペクターにマテリアルを追加します。<br/> <del>GLSLっぽい(?)</del> シェーダーが書けるようになっていれば大丈夫です。<br/> <span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lambda410/20241004/20241004161243.png" width="1200" height="585" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p> <p>GodotはGLSL ESらしいですね。<br/> 環境構築も楽なのでシェーダーの勉強に良さそう。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdocs.godotengine.org%2Fja%2F4.x%2Ftutorials%2Fshaders%2Fshader_reference%2Fshading_language.html" title="シェーディング言語" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://docs.godotengine.org/ja/4.x/tutorials/shaders/shader_reference/shading_language.html">docs.godotengine.org</a></cite></p> <hr /> <h4 id="シェーダー">シェーダー</h4> <p>ノリでしか書いたことがないので,基本的にリファレンス頼り。</p> <h5 id="canvas_item"><a class="keyword" href="https://d.hatena.ne.jp/keyword/canvas">canvas</a>_item</h5> <p>2D系のシェーダーの場合は<a class="keyword" href="https://d.hatena.ne.jp/keyword/canvas">canvas</a>_itemを指定しておくらしい?</p> <pre class="code lang-cpp" data-lang="cpp" data-unlink>shader_type canvas_item; </pre> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdocs.godotengine.org%2Fja%2F4.x%2Ftutorials%2Fshaders%2Fshader_reference%2Fcanvas_item_shader.html" title="CanvasItemシェーダー" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://docs.godotengine.org/ja/4.x/tutorials/shaders/shader_reference/canvas_item_shader.html">docs.godotengine.org</a></cite></p> <h5 id="uniform">uniform</h5> <p>並列実行中も同じデータを参照する変数かな?<br/> シェーダーで共通利用したいデータを定義する用途に向いてそう。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.khronos.org%2Fopengl%2Fwiki%2FUniform_(GLSL)" title="Uniform (GLSL) - OpenGL Wiki" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.khronos.org/opengl/wiki/Uniform_(GLSL)">www.khronos.org</a></cite></p> <p>今回はアウトラインの色と太さを定義する。<br/> 参考文献だと<code>hint_color</code>が利用されているけど,Godot4からは<code>source_color</code>に変わったみたい。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdocs.godotengine.org%2Fja%2F4.x%2Ftutorials%2Fmigrating%2Fupgrading_to_godot_4.html" title="Upgrading from Godot 3 to Godot 4" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://docs.godotengine.org/ja/4.x/tutorials/migrating/upgrading_to_godot_4.html">docs.godotengine.org</a></cite></p> <p>そもそも<code>hint_color</code>と<code>source_color</code>の意味が分からないので調べてみたら,<br/> どうやら「ヒント」と呼ばれる「手掛かり」って意味ではない別の概念があるらしい。</p> <p>「ヒント」という用語自体がよく分からないので実験してみたら,<br/> インスペクター上のUIにスライダーやカラーパレットが出現した。</p> <p>リファレンスにもそれっぽい事が書いてあるし,とりあえず納得する。 <span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lambda410/20241004/20241004163838.png" width="1200" height="824" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p> <h4 id="アウトライン作成">アウトライン作成</h4> <p>参考文献を読むだけだと理解できなかったので,手を動かしてみた。</p> <p>まず,アウトラインを作成するために希望の太さだけ画像を移動させる。<br/> Godotのシェーダーは画像サイズに収まる範囲内でしか描画出来ないみたい。<br/> (他のシェーダーも同じ?)<br/> <span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lambda410/20241004/20241004170704.png" width="423" height="337" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p> <p>次に上下左右の方向に画像を移動させ,移動後のアルファ値をそれぞれ取得する。<br/> アウトラインは2値で十分だからアルファ値なのかな?</p> <p>各方向に画像を移動させて,その上に元画像を載せる事でアウトラインを再現しているみたい。<br/> つまり,拡大した単色画像の上に元画像を載せる事でアウトラインっぽく見せているってこと...?<br/> <span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lambda410/20241004/20241004173008.png" width="630" height="255" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p> <p>同じ理屈でスカスカな4角も埋める。</p> <pre class="code lang-cpp" data-lang="cpp" data-unlink>合計 = (上 + 下 + 右 + 左) + (右上角 + 左上角 + 右下角 + 左下角) </pre> <p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lambda410/20241004/20241004174042.png" width="471" height="563" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p> <p>アウトラインが完成したね。<br/> ただし,8方向に単色元画像の複製を配置しているだけなので,<br/> アウトラインの輪郭は元画像の輪郭に完全に依存してそう。</p> <h4 id="ソースコード"><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a></h4> <p>参考文献はもっとキレイだよ。</p> <pre class="code lang-cpp" data-lang="cpp" data-unlink>shader_type canvas_item; <span class="synComment">// アウトライン色</span> uniform vec4 outlineColor : source_color = <span class="synIdentifier">vec4</span>(<span class="synConstant">1.0</span>, <span class="synConstant">1.0</span>, <span class="synConstant">1.0</span>, <span class="synConstant">1.0</span>); <span class="synComment">// アウトライン太さ</span> uniform <span class="synType">float</span> outlineThickness : <span class="synIdentifier">hint_range</span>(<span class="synConstant">0.0</span>, <span class="synConstant">100.0</span>) = <span class="synConstant">1.0</span>; <span class="synType">void</span> <span class="synIdentifier">fragment</span>() { vec2 size = TEXTURE_PIXEL_SIZE * outlineThickness; <span class="synType">float</span> l = <span class="synIdentifier">texture</span>(TEXTURE, UV + <span class="synIdentifier">vec2</span>(-size.x, <span class="synConstant">0.0</span>)).a; <span class="synType">float</span> r = <span class="synIdentifier">texture</span>(TEXTURE, UV + <span class="synIdentifier">vec2</span>(size.x, <span class="synConstant">0.0</span>)).a; <span class="synType">float</span> u = <span class="synIdentifier">texture</span>(TEXTURE, UV + <span class="synIdentifier">vec2</span>(<span class="synConstant">0.0</span>, size.y)).a; <span class="synType">float</span> d = <span class="synIdentifier">texture</span>(TEXTURE, UV + <span class="synIdentifier">vec2</span>(<span class="synConstant">0.0</span>, -size.y)).a; <span class="synType">float</span> ul = <span class="synIdentifier">texture</span>(TEXTURE, UV + <span class="synIdentifier">vec2</span>(-size.x, size.y)).a; <span class="synType">float</span> ur = <span class="synIdentifier">texture</span>(TEXTURE, UV + <span class="synIdentifier">vec2</span>(size.x, size.y)).a; <span class="synType">float</span> dl = <span class="synIdentifier">texture</span>(TEXTURE, UV + <span class="synIdentifier">vec2</span>(-size.x, -size.y)).a; <span class="synType">float</span> dr = <span class="synIdentifier">texture</span>(TEXTURE, UV + <span class="synIdentifier">vec2</span>(size.x, -size.y)).a; <span class="synType">float</span> sum = l + r + u + d + ul + ur + dl + dr; <span class="synType">float</span> outline = <span class="synIdentifier">min</span>(sum, <span class="synConstant">1.0</span>); <span class="synComment">// 元色</span> vec4 color = <span class="synIdentifier">texture</span>(TEXTURE, UV); <span class="synComment">// 線形補間</span> vec4 result = <span class="synIdentifier">mix</span>(color, outlineColor, outline - color.a); <span class="synComment">// 結果を反映 </span> COLOR = result; } </pre> <hr /> <h3 id="感想">感想</h3> <p>簡単な手法なのにしっかりとアウトラインが描画出来ているのでスゴイ。<br/> 最初に思い付いた人は天才だと思う。</p> <p>輪郭線が気になるので,次はフィルター処理形式やトゥーンシェーダのアウトライン描画を探ってみたい。</p> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/Godot" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">Godot</span> </a> </span> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/%E3%82%B2%E3%83%BC%E3%83%A0%E9%96%8B%E7%99%BA" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">ゲーム開発</span> </a> </span> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{&quot;area&quot;: &quot;finish_reading&quot;}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="lambda410" >lambda410</span></span> <span class="entry-footer-time"><a href="https://lambda00.hatenablog.com/entry/2024/10/04/181731"><time data-relative datetime="2024-10-04T09:17:31Z" title="2024-10-04T09:17:31Z" class="updated">2024-10-04 18:17</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/lambda410/lambda00.hatenablog.com/subscribe?utm_source=blogs_entry_footer&amp;utm_medium=button&amp;utm_campaign=subscribe_blog"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://lambda00.hatenablog.com/entry/2024/10/04/181731" data-hatena-star-title="Godot v4.3: スプライトにアウトラインをつける(2D)" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/lambda00.hatenablog.com/entry/2024/10/04/181731" class="hatena-bookmark-button" data-hatena-bookmark-url="https://lambda00.hatenablog.com/entry/2024/10/04/181731" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://lambda00.hatenablog.com/entry/2024/10/04/181731"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?hashtags=Godot&amp;hashtags=%E3%82%B2%E3%83%BC%E3%83%A0%E9%96%8B%E7%99%BA&amp;text=Godot+v4.3%3A+%E3%82%B9%E3%83%97%E3%83%A9%E3%82%A4%E3%83%88%E3%81%AB%E3%82%A2%E3%82%A6%E3%83%88%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B(2D)+-+%E3%81%8A%E3%82%82%E3%81%A1%E3%82%83%E3%83%90%E3%82%B3&amp;url=https%3A%2F%2Flambda00.hatenablog.com%2Fentry%2F2024%2F10%2F04%2F181731" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <div id="google_afc_user_container_2" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user_2nd"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> </div> <div class="comment-box js-comment-box"> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> </div> </footer> </div> </article> <article class="entry hentry test-hentry js-entry-article date-first autopagerize_page_element chars-3200 words-200 mode-markdown entry-even" id="entry-6802340630906256746" data-keyword-campaign="" data-uuid="6802340630906256746" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date first"> <a href="https://lambda00.hatenablog.com/archive/2024/09/14" rel="nofollow"> <time datetime="2024-09-14T07:28:19Z" title="2024-09-14T07:28:19Z"> <span class="date-year">2024</span><span class="hyphen">-</span><span class="date-month">09</span><span class="hyphen">-</span><span class="date-day">14</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://lambda00.hatenablog.com/entry/2024/09/14/162819" class="entry-title-link bookmark">最小構成でC++環境を構築する (Windows11)</a> </h1> <div class="entry-categories categories"> <a href="https://lambda00.hatenablog.com/archive/category/%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83" class="entry-category-link category-開発環境">開発環境</a> <a href="https://lambda00.hatenablog.com/archive/category/C%2B%2B" class="entry-category-link category-C++">C++</a> </div> </header> <div class="entry-content hatenablog-entry"> <p>こんにちは</p> <p>Windows11でなるべく最小構成で<a class="keyword" href="https://d.hatena.ne.jp/keyword/C%2B%2B">C++</a>環境を構築する方法を探していた時の備忘録です。<br/> 個人の感想レベルなので大目に見てね。</p> <ul class="table-of-contents"> <li><a href="#事の始まり">事の始まり</a></li> <li><a href="#WinGet">WinGet</a></li> <li><a href="#環境">環境</a></li> <li><a href="#環境構築">環境構築</a><ul> <li><a href="#1-PowerShell">1. PowerShell</a></li> <li><a href="#2-LLVM">2. LLVM</a></li> <li><a href="#3-エディタ">3. エディタ</a></li> <li><a href="#アンインストール">アンインストール</a></li> </ul> </li> <li><a href="#おまけ">おまけ</a></li> <li><a href="#感想">感想</a></li> </ul> <hr /> <h3 id="事の始まり">事の始まり</h3> <p>Windows11で<a class="keyword" href="https://d.hatena.ne.jp/keyword/C%2B%2B">C++</a>環境を構築する際,容量が大きいVisualStudioをインストールするのが面倒だった。<br/> また,個人的にVisualStudioは本腰を入れて開発する時に利用するので,ちょっとした検証プログラムを作成する時に使うのは大袈裟かなという印象がある。</p> <p>なので「<a class="keyword" href="https://d.hatena.ne.jp/keyword/GCC">GCC</a>かClangでもインストールするか!」と思って調べたら,Windows11環境ではWSLやMSYS2を経由する方法しか見つからず,基本的にVisualStudioをインストールしてcl.exeを使う方式らしい。</p> <ul> <li>WSL: vmmemのメモリ管理が面倒で,<code>wsl.exe --shutdown</code>を一々実行するのが怠い。</li> <li>MSYS2: <a class="keyword" href="https://d.hatena.ne.jp/keyword/%B4%C4%B6%AD%CA%D1%BF%F4">環境変数</a>が微妙に汚れるのが気になる。</li> <li>VisualStudio: 使いやすいけど,起動するのが七面倒。</li> </ul> <p>そんな状況でもう少し調査していたら,最近追加されたパッケージマネージャで<a class="keyword" href="https://d.hatena.ne.jp/keyword/C%2B%2B">C++</a>環境を構築できそうだった。</p> <h3 id="WinGet">WinGet</h3> <p>いつの間にか追加されていた<a class="keyword" href="https://d.hatena.ne.jp/keyword/Microsoft">Microsoft</a>純正のパッケージマネージャだと思う。<br/> Windows10でも対応しているらしい,詳しくは公式サイトを見てね。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Fwindows%2Fpackage-manager%2Fwinget%2F" title="WinGet ツールを使用したアプリケーションのインストールと管理" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://learn.microsoft.com/ja-jp/windows/package-manager/winget/">learn.microsoft.com</a></cite></p> <p>WindowsTerminalの標準搭載といい,最近の<a class="keyword" href="https://d.hatena.ne.jp/keyword/Microsoft">Microsoft</a>は開発者向けに頑張っている印象が強い。<br/> この調子だと,5年後にはもっと便利になってそうだね。<br/> (wingetの紹介ページで<a class="keyword" href="https://d.hatena.ne.jp/keyword/PowerShell">PowerShell</a>をそこそこ弄っているのがウケる)</p> <p>インストールしたソフトのアップデートもコマンド経由で可能。<br/> クソ便利。</p> <hr /> <h3 id="環境">環境</h3> <p>最新のWindows11なら大丈夫だと思う。たぶん,おそらく……。</p> <ul> <li><a class="keyword" href="https://d.hatena.ne.jp/keyword/Windows">Windows</a> 11 Home (23H2: 22631.4112)</li> <li><a class="keyword" href="https://d.hatena.ne.jp/keyword/Windows">Windows</a> Terminal (1.20.11781.0)</li> </ul> <hr /> <h3 id="環境構築">環境構築</h3> <h4 id="1-PowerShell">1. <a class="keyword" href="https://d.hatena.ne.jp/keyword/PowerShell">PowerShell</a></h4> <p>なんとなく<a class="keyword" href="https://d.hatena.ne.jp/keyword/Microsoft">Microsoft</a>で統一したいので,とりあえず最新の<a class="keyword" href="https://d.hatena.ne.jp/keyword/PowerShell">PowerShell</a>をインストールする。<br/> 昔の<a class="keyword" href="https://d.hatena.ne.jp/keyword/PowerShell">PowerShell</a>は動作がもっさりな印象があったけど,最新版は応答速度が速くていい感じだと思う。</p> <ol> <li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B3%A5%DE%A5%F3%A5%C9%A5%D7%A5%ED%A5%F3%A5%D7%A5%C8">コマンドプロンプト</a> を開く</li> <li><code>winget show "poweshell</code> で検索 (<a href="https://learn.microsoft.com/ja-jp/windows/package-manager/winget/show">showコマンド</a>)<br/>  MSStoreとWinGetのIDが見つかるが,今回はWinGetの方を指定した。<br/>  多分,どっちでも変わらないと思う。</li> <li><code>winget install "Microsoft.PowerShell</code> でインストール<br/>  公式<a class="keyword" href="https://d.hatena.ne.jp/keyword/GitHub">GitHub</a>からダウンロード後に,<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%E9">インストーラ</a>ーが起動するのでマウスでポチポチするだけ。<br/>  ダウンロード → インストールの流れはWinGetを使わなくても一緒だけど,検索する手間が減るから便利かな?</li> <li>WindowsTerminalを再起動後に<a class="keyword" href="https://d.hatena.ne.jp/keyword/PowerShell">PowerShell</a>の項目から起動する<br/>  見た目が違う<a class="keyword" href="https://d.hatena.ne.jp/keyword/PowerShell">PowerShell</a>が追加されているのでそれを起動する。<br/>  (MSYS2やVisualStudio,WSLがインストールされている事は突っ込まないでね)  <figure class="figure-image figure-image-fotolife" title="なんか見た目がカッコいいね"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lambda410/20240914/20240914153158.png" width="1200" height="438" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>なんか見た目がカッコいいね</figcaption></figure></li> </ol> <h4 id="2-LLVM">2. <a class="keyword" href="https://d.hatena.ne.jp/keyword/LLVM">LLVM</a></h4> <p>次に<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B3%A5%F3%A5%D1%A5%A4%A5%E9">コンパイラ</a>をインストールする。<br/> <code>winget show</code> で検索したら<a class="keyword" href="https://d.hatena.ne.jp/keyword/GCC">GCC</a>はなかったけど,<a class="keyword" href="https://d.hatena.ne.jp/keyword/LLVM">LLVM</a>はあったのでそれをインストールする。<br/> 1. <code>winget install "llvm"</code><br/>  今回は同名が無かったので雑な名前一致でインストールできた。<br/>  念のため公式<a class="keyword" href="https://d.hatena.ne.jp/keyword/GitHub">GitHub</a>かどうかはチェックしてね。<br/> 2. <code>$ENV:Path="C:\Program Files\LLVM\bin;"+$ENV:Path</code><br/>  インストールしただけではPathが通ってなかったので,パスを設定した。<br/>  パスを通さない意味が分からないので,パスはインストール時に設定してほしいね。<br/>  (再起動で通るかも説???)<br/>  pwshを起動するたびに初期化される設定なので,初期化させたくない人は通常手順でよろしく。<br/>  <code>clang --version</code> は clang version 18.1.8 だった。<br/> 3. <code>clang test.cpp</code> で<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B3%A5%F3%A5%D1%A5%A4%A5%EB">コンパイル</a>が通るかテスト<br/>  本当に<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B3%A5%F3%A5%D1%A5%A4%A5%EB">コンパイル</a>が通るかテストしてみる。</p> <pre class="code lang-cpp" data-lang="cpp" data-unlink><span class="synPreProc">#include </span><span class="synConstant">&lt;iostream&gt;</span> <span class="synPreProc">#include </span><span class="synConstant">&lt;vector&gt;</span> <span class="synPreProc">#include </span><span class="synConstant">&lt;cstdint&gt;</span> <span class="synType">int</span> <span class="synIdentifier">main</span>() { <span class="synConstant">std</span>::<span class="synType">vector</span>&lt;<span class="synType">uint64_t</span>&gt; vec; vec.<span class="synIdentifier">reserve</span>(<span class="synConstant">100u</span>); <span class="synStatement">for</span> (<span class="synType">uint8_t</span> i = <span class="synConstant">0u</span>; i &lt; <span class="synConstant">10u</span>; ++i) { vec.<span class="synIdentifier">emplace_back</span>(i*i+i); <span class="synConstant">std</span>::<span class="synIdentifier">cout</span> &lt;&lt; <span class="synConstant">&quot;Hello, WinGet: &quot;</span> &lt;&lt; vec[i] &lt;&lt; <span class="synConstant">std</span>::<span class="synIdentifier">endl</span>; } <span class="synStatement">return</span> <span class="synConstant">0</span>; } </pre> <p><figure class="figure-image figure-image-fotolife" title="問題なさそう"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lambda410/20240914/20240914155626.png" width="1200" height="591" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>問題なさそう</figcaption></figure></p> <h4 id="3-エディタ">3. エディタ</h4> <p>好きなエディタをインストールする。<a class="keyword" href="https://d.hatena.ne.jp/keyword/VSCode">VSCode</a>,<a class="keyword" href="https://d.hatena.ne.jp/keyword/Vim">Vim</a>,<a class="keyword" href="https://d.hatena.ne.jp/keyword/Emacs">Emacs</a>などお好きにどうぞ。<br/> 個人的にはTerminalで全て解決したいので<a class="keyword" href="https://d.hatena.ne.jp/keyword/Vim">Vim</a>(NeoVim)がおススメだが,今回は<a class="keyword" href="https://d.hatena.ne.jp/keyword/Emacs">Emacs</a>にしてみた。<br/> 1. <code>winget install "emacs"</code><br/> 2. <code>$ENV:Path="C:\Program Files\Emacs\emacs-29.4\bin;"+$ENV:Path</code><br/>  <a class="keyword" href="https://d.hatena.ne.jp/keyword/Emacs">Emacs</a>もパスが通ってなかったので通す。<br/>  もしかしてデフォだと通らないのか?(NeoVimは問題なかったのにね)<br/> 3. <a class="keyword" href="https://d.hatena.ne.jp/keyword/Emacs">Emacs</a>を起動してみる<br/>  相変わらずUI関係のエラーが多数表示されたが動作には問題なかった。<br/>  <code>emacs -nw</code>でTerminal版も起動できるよ。<br/> <figure class="figure-image figure-image-fotolife" title="Emacsくん"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lambda410/20240914/20240914160505.png" width="675" height="664" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption><a class="keyword" href="https://d.hatena.ne.jp/keyword/Emacs">Emacs</a>くん</figcaption></figure></p> <h4 id="アンインストール">アンインストール</h4> <p>アンインストールは通常通りアプリのアンインストールから可能だけど,WinGetでもできるよ。</p> <ul> <li><code>winget list</code> で項目表示<br/>  wingetでインストールしたものに関係なく表示される。<br/>  wingetはソフトをコマンド経由で起動しているだけなのかもね。</li> <li><code>winget uninstall "llvm"</code><br/>  <a class="keyword" href="https://d.hatena.ne.jp/keyword/llvm">llvm</a>の<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%F3%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%E9">アンインストーラ</a>ーが起動して削除できる。<br/>  なぜか<a class="keyword" href="https://d.hatena.ne.jp/keyword/Emacs">Emacs</a>は<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%F3%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%E9">アンインストーラ</a>ーを直接起動しないと削除できなかった (呪い?)。</li> </ul> <hr /> <h3 id="おまけ">おまけ</h3> <p>WinGetでインストールするソフトの検索には下記のサイトが便利だよ。<br/> ウィンドウショッピングが楽しいね。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwinget.run" title="winget.run | Finding winget packages made simple." class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://winget.run">winget.run</a></cite></p> <hr /> <h3 id="感想">感想</h3> <p>パス関係がよく分からないけど,<a class="keyword" href="https://d.hatena.ne.jp/keyword/Windows">Windows</a>で楽に<a class="keyword" href="https://d.hatena.ne.jp/keyword/C%2B%2B">C++</a>環境が構築できるようになったのは良いね。<br/> MSYS2やWSL,VisualStudioのインストールから解放されるのは個人的には嬉しいし,何より<a class="keyword" href="https://d.hatena.ne.jp/keyword/Windows">Windows</a>用のパッケージマネージャが標準搭載されたのが素晴らしいよね。</p> <p>今後の活躍に期待したい~</p> <hr /> <p><div class="embed-group"><a href="https://blog.hatena.ne.jp/-/group/11696248318754550880/redirect" class="embed-group-link js-embed-group-link"><div class="embed-group-icon"><img src="https://cdn.image.st-hatena.com/image/square/adad63b72f1d6545b2ba2538c3fc2923b2fd5989/backend=imagemagick;height=80;version=1;width=80/https%3A%2F%2Fcdn.blog.st-hatena.com%2Fimages%2Fcircle%2Fofficial-circle-icon%2Fcomputers.gif" alt="" width="40" height="40"></div><div class="embed-group-content"><span class="embed-group-title-label">ランキング参加中</span><div class="embed-group-title">プログラミング</div></div></a></div><br/> <div class="embed-group"><a href="https://blog.hatena.ne.jp/-/group/4207112889945342980/redirect" class="embed-group-link js-embed-group-link"><div class="embed-group-icon"><img src="https://cdn.image.st-hatena.com/image/square/02ef1f58df69cdd5e33ddf8ff46fa26ef299e73f/backend=imagemagick;height=80;version=1;width=80/https%3A%2F%2Fcdn.user.blog.st-hatena.com%2Fcircle_image%2F62150696%2F1672882147626017" alt="" width="40" height="40"></div><div class="embed-group-content"><span class="embed-group-title-label">ランキング参加中</span><div class="embed-group-title">エンジニアグループ</div></div></a></div><br/> <div class="embed-group"><a href="https://blog.hatena.ne.jp/-/group/11696248318754550877/redirect" class="embed-group-link js-embed-group-link"><div class="embed-group-icon"><img src="https://cdn.image.st-hatena.com/image/square/adad63b72f1d6545b2ba2538c3fc2923b2fd5989/backend=imagemagick;height=80;version=1;width=80/https%3A%2F%2Fcdn.blog.st-hatena.com%2Fimages%2Fcircle%2Fofficial-circle-icon%2Fcomputers.gif" alt="" width="40" height="40"></div><div class="embed-group-content"><span class="embed-group-title-label">ランキング参加中</span><div class="embed-group-title">テクノロジー</div></div></a></div></p> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/C++" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">C++</span> </a> </span> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/Windows11" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">Windows11</span> </a> </span> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{&quot;area&quot;: &quot;finish_reading&quot;}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="lambda410" >lambda410</span></span> <span class="entry-footer-time"><a href="https://lambda00.hatenablog.com/entry/2024/09/14/162819"><time data-relative datetime="2024-09-14T07:28:19Z" title="2024-09-14T07:28:19Z" class="updated">2024-09-14 16:28</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/lambda410/lambda00.hatenablog.com/subscribe?utm_source=blogs_entry_footer&amp;utm_campaign=subscribe_blog&amp;utm_medium=button"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://lambda00.hatenablog.com/entry/2024/09/14/162819" data-hatena-star-title="最小構成でC++環境を構築する (Windows11)" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/lambda00.hatenablog.com/entry/2024/09/14/162819" class="hatena-bookmark-button" data-hatena-bookmark-url="https://lambda00.hatenablog.com/entry/2024/09/14/162819" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://lambda00.hatenablog.com/entry/2024/09/14/162819"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?hashtags=C%2B%2B&amp;hashtags=Windows11&amp;text=%E6%9C%80%E5%B0%8F%E6%A7%8B%E6%88%90%E3%81%A7C%2B%2B%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B+(Windows11)+-+%E3%81%8A%E3%82%82%E3%81%A1%E3%82%83%E3%83%90%E3%82%B3&amp;url=https%3A%2F%2Flambda00.hatenablog.com%2Fentry%2F2024%2F09%2F14%2F162819" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <script> (valve = window.valve || []).push(function(v) { v.displayDFPSlot('google_afc_user_container_3'); }); </script> <div id="google_afc_user_container_3" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user_2nd"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> </div> <div class="comment-box js-comment-box"> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> </div> </footer> </div> </article> <article class="entry hentry test-hentry js-entry-article date-first autopagerize_page_element chars-12400 words-600 mode-markdown entry-odd" id="entry-6801883189107523786" data-keyword-campaign="" data-uuid="6801883189107523786" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date first"> <a href="https://lambda00.hatenablog.com/archive/2024/05/26" rel="nofollow"> <time datetime="2024-05-26T04:37:25Z" title="2024-05-26T04:37:25Z"> <span class="date-year">2024</span><span class="hyphen">-</span><span class="date-month">05</span><span class="hyphen">-</span><span class="date-day">26</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://lambda00.hatenablog.com/entry/2024/05/26/133725" class="entry-title-link bookmark">応用情報技術者試験を受けた: 令和6年春季試験</a> </h1> <div class="entry-categories categories"> <a href="https://lambda00.hatenablog.com/archive/category/%E8%B6%A3%E5%91%B3" class="entry-category-link category-趣味">趣味</a> </div> </header> <div class="entry-content hatenablog-entry"> <p>こんにちは</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%B1%FE%CD%D1%BE%F0%CA%F3%B5%BB%BD%D1%BC%D4%BB%EE%B8%B3">応用情報技術者試験</a>を受けた時の<span style="color: #d32f2f"><strong><u>個人の感想</u></strong></span>を残します。<br/> 合否は知らんです。</p> <ul class="table-of-contents"> <li><a href="#はじめに">はじめに</a><ul> <li><a href="#なぜ受験したのか">なぜ受験したのか</a></li> <li><a href="#メリットデメリット">メリット・デメリット</a></li> <li><a href="#感じたこと">感じたこと</a></li> <li><a href="#受験当日">受験当日</a></li> </ul> </li> <li><a href="#学習前に">学習前に</a></li> <li><a href="#学習方法">学習方法</a></li> <li><a href="#午後選択">午後選択</a></li> <li><a href="#AP参考書">AP参考書</a><ul> <li><a href="#技術評論社">技術評論社</a></li> <li><a href="#impress">impress</a></li> <li><a href="#アイテック">アイテック</a></li> <li><a href="#日経BP-日本経済新聞出版">日経BP 日本経済新聞出版</a></li> </ul> </li> <li><a href="#午前対策">午前対策</a></li> <li><a href="#午後対策">午後対策</a><ul> <li><a href="#情報セキュリティ">情報セキュリティ</a></li> <li><a href="#プログラミング">プログラミング</a></li> <li><a href="#ネットワーク">ネットワーク</a></li> <li><a href="#データベース">データベース</a></li> <li><a href="#組み込みシステム開発">組み込みシステム開発</a></li> <li><a href="#情報システム開発">情報システム開発</a></li> </ul> </li> <li><a href="#その他">その他</a><ul> <li><a href="#時計">時計</a><ul> <li><a href="#置時計">置時計</a></li> <li><a href="#腕時計">腕時計</a></li> </ul> </li> <li><a href="#試験前日">試験前日</a></li> <li><a href="#お昼ご飯">お昼ご飯</a></li> <li><a href="#ブドウ糖">ブドウ糖</a></li> <li><a href="#読書">読書</a></li> <li><a href="#鉛筆">鉛筆</a></li> <li><a href="#お祈り">お祈り</a></li> </ul> </li> <li><a href="#感想">感想</a></li> </ul> <hr /> <h2 id="はじめに">はじめに</h2> <p>この記事は自分の記録の為に作成したので正確性は<span style="color: #d32f2f"><strong>ない</strong></span>です。<br/> また,受験結果も出てないので合格者の記事ではありません。</p> <p>合格してから生存者バイアスマシマシの体験記で気持ち良くなることも考えましたが,合否が分かるのが7月頃なので忘れそうだなと思って今の時期に書いています。<br/> (2024年05月19日に書いています。)</p> <p>「1週間で合格しました!」的な記事を書きたかったのですが,自分の脳みそでは無理そうでした。</p> <p><strong>自分の属性</strong></p> <ul> <li><strong>エンジニア</strong><br/> 代替可能な社会の歯車です。<br/> AIが自分の仕事を奪ってくれる事に期待しています。</li> <li><strong>国語が苦手</strong><br/> 嫌いではないけど点数が取れない科目でした。<br/> 今回の試験で割と響く要素です。</li> </ul> <p><strong>この記事の要約</strong><br/> <strong><span style="color: #d32f2f">この文章を読む時間を勉強に当てた方がよいです。</span></strong><br/> 時間は有効活用しましょう。</p> <hr /> <h3 id="なぜ受験したのか">なぜ受験したのか</h3> <ol> <li><strong>暇潰し</strong><br/> 目標が無く,やることも無い虚無な生活をしているので,暇潰しとして合格を目指しました。<br/> 勤務先は英語以外の資格は評価されないので,APに合格しても何もないです。</li> <li><strong>学生時代のしこり</strong><br/> 10年前に受験しようと思って参考書を購入したのですが,午後の文章問題が辛くて受験しませんでした。<br/> 時は過ぎて10年後,部屋の掃除をしていたらその時の参考書が出てきたので捨てようと思いましたが「捨てたら負けか...?」と感じ,10年越しに受験しました。<br/> 要は参考書を捨てるために受験しました。</li> <li><strong>基礎知識の定着</strong><br/> セキュリティ・ネットワーク・データベースを学習しているのですが,いまいち知識が定着しているか分からなかったので,試験科目に3種類があるAPの受験勉強をして知識の定着を図りました。<br/> ネットワークの基礎知識は受験前と比較して,結構身についたと感じています。</li> </ol> <p>会社命令など,必要に駆られて受験した訳ではないため「落ちてもいいか」位の気持ちで気楽に受験しました。<br/> 割とプレッシャーの有無は勉強に効率に影響を及ぼす気がします。</p> <hr /> <h3 id="メリットデメリット">メリット・デメリット</h3> <p>主観的なAPのメリット・デメリットについて</p> <p><strong>メリット</strong><br/> 1. <strong>客観的な能力評価</strong><br/> APに合格するレベルの基礎能力が備わっている事が客観的に評価されます。<br/> 口だけではないことを裏付ける程度だと思っています。<br/> 2. <strong>基礎知識の学習</strong><br/> APの午後試験は記述問題もあるので,雑な理解だと合格は厳しい印象です。<br/> ただ,問われる内容は各分野の基礎的な知識なので,学習に良い教材だと思いました。</p> <p><strong>デメリット</strong><br/> デメリットは無いと思います...多分。</p> <p>AP受験者がお世話になるであろう「<a class="keyword" href="https://d.hatena.ne.jp/keyword/%B1%FE%CD%D1%BE%F0%CA%F3%B5%BB%BD%D1%BC%D4%BB%EE%B8%B3">応用情報技術者試験</a>ドットコム」さんの記事の一読をおススメします。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.ap-siken.com%2Fapmerit.html" title="応用情報技術者試験のメリット|応用情報技術者試験.com" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.ap-siken.com/apmerit.html">www.ap-siken.com</a></cite></p> <h3 id="感じたこと">感じたこと</h3> <p>「実務経験が無いと厳しい」的な事がよく言われていますが,自分はそんなことは無いと感じました。<br/> 実務経験があると学習コストが減るとは思いますが,基本的に基礎知識しか問われないため,基礎知識を理解していれば十分合格できると思います。</p> <p>特に「ネットワーク」と「データベース」は実務経験の有無が重要と言われていますが,有名な書籍を1~2冊程度読み込む事で直ぐに満点近く取れるようになると思います。<br/> ただ「情報<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B7%A5%B9%A5%C6%A5%E0%B3%AB%C8%AF">システム開発</a>」は出題内容にムラがあるため,実務経験の有無が点数に関係するかもしれないと個人的には感じています。<br/> (<a class="keyword" href="https://d.hatena.ne.jp/keyword/CSS">CSS</a>とか書けねえよ)</p> <p>とりあえず<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B3%A5%B9%A5%D1">コスパ</a>良く試験に合格したい人は過去問を繰り返し解き,午前問題は<a class="keyword" href="https://d.hatena.ne.jp/keyword/%B2%E1%B3%D8%BD%AC">過学習</a>するのが良さそうだと思いました。<br/> 自分は知識の定着が目的だったので,学習方法自体は<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B3%A5%B9%A5%D1">コスパ</a>が悪い方法だと思います。</p> <h3 id="受験当日">受験当日</h3> <p>令和6年4月21日の日曜日に近くの私立大学で行われました。<br/> 当日は雨が降っており,頭痛がしていて体調はクソでした。<br/> 頭痛ーるって便利だよね。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fzutool.jp" title="「頭痛ーる」あなたの頭痛を予報!" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://zutool.jp">zutool.jp</a></cite></p> <p>受験会場ではAPのほか,高度試験や<a class="keyword" href="https://d.hatena.ne.jp/keyword/TOEIC">TOEIC</a>も行われており,小さめのフェスみたいな混雑度でした。<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/TOEIC">TOEIC</a>受験するときは,人が多くなるので<a class="keyword" href="https://d.hatena.ne.jp/keyword/IPA">IPA</a>試験日と重ならないようにしたいね。<br/> (いつの間にか基本情報がCBTになってた。取り残された気分。)<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.ipa.go.jp%2Fshiken%2Fkubun%2Ffe.html" title="基本情報技術者試験 | 試験情報 | IPA 独立行政法人 情報処理推進機構" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.ipa.go.jp/shiken/kubun/fe.html">www.ipa.go.jp</a></cite></p> <p>受験会場の開示は受験票の到着と共に行われるため,試験2週間前位にならないと分からないです。<br/> しかも駅から近いか遠いかはガチャっぽく,20分近く歩かされました。<br/> 朝9時ぐらいに集合だったはずなので,電車の遅延なども考慮して試験会場には集合時刻の20分前には入りたいですね。</p> <p>受験場所は大学内の教室なので,学生時代を思い出して懐かしい気持ちになりました。<br/> ただ,明らかに体調悪そうな人も教室にいたので感染対策はした方がよいかもね。<br/> (このあと体調をめっちゃ崩した。)</p> <p>手応え的には「合格ボーダー前後」ぐらいだと思っています。<br/> 全部埋められましたが,合ってるかは知らんぐらいの難易度でした。</p> <hr /> <h2 id="学習前に">学習前に</h2> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/IPA">IPA</a>の公式サイトから<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B7%A5%E9%A5%D0%A5%B9">シラバス</a>の確認はした方が良いです。<br/> 特に令和6年秋試験から出題範囲が大きく変わりそうな気がしています。<br/> UX/UIデザイン,ローコードツール,WebAssemblyなど,最近のトレンドを取り入れてるようですね。<br/> (<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B7%A5%E9%A5%D0%A5%B9">シラバス</a>に新規追加された内容は抑えておきたいですね。) <br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.ipa.go.jp%2Fshiken%2Fkubun%2Fap.html" title="応用情報技術者試験 | 試験情報 | IPA 独立行政法人 情報処理推進機構" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.ipa.go.jp/shiken/kubun/ap.html">www.ipa.go.jp</a></cite></p> <p>受験料の支払いや写真撮影も忘れないようにしましょう。<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/IPA">IPA</a>のメールニュースの購読もおススメ。<br/> (古の技術-<a class="keyword" href="https://d.hatena.ne.jp/keyword/RSS">RSS</a>-が役に立つかも)<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.ipa.go.jp%2Fshiken%2Fmousikomi%2Fschedule.html" title="スケジュール、手数料など | 試験情報 | IPA 独立行政法人 情報処理推進機構" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.ipa.go.jp/shiken/mousikomi/schedule.html">www.ipa.go.jp</a></cite></p> <p>学習時間が確保できない人はなるべく早く対策した方がよいと思います。<br/> 自分もやる気が無いときは勉強しなかったので,余裕は欲しいね。</p> <p>「<a class="keyword" href="https://d.hatena.ne.jp/keyword/%B1%FE%CD%D1%BE%F0%CA%F3%B5%BB%BD%D1%BC%D4%BB%EE%B8%B3">応用情報技術者試験</a>ドットコム」さんは最強の解説サイトなので,この記事より優先して読んでいただければ。<br/> おすすめの参考書なども紹介されているので困ったときは参考になると思います。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.ap-siken.com" title="応用情報技術者試験ドットコム" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.ap-siken.com">www.ap-siken.com</a></cite></p> <hr /> <h2 id="学習方法">学習方法</h2> <p>要領と頭が悪い自覚があったので,去年の11月から少しずつ勉強し始めました。</p> <ul> <li><strong>11月: 基礎知識の定着</strong><br/> APの参考書に手を付けず,午後で選択する予定の科目の技術書を読みました。</li> <li><strong>12月: 基礎知識の定着・午後対策</strong><br/> 午後科目の技術書とソフトウェアなどを利用して実際に手を動かして学習しました。<br/> また,午後の過去問を解き始めました。</li> <li><strong>1月~2月: 午後対策</strong><br/> 午後の過去問を解きました。</li> <li><strong>3月: 不足知識の学習・一部午前対策・午後対策</strong><br/> 午後の過去問で足りない知識を確認して,その分野の技術書や資料を読みました。<br/> 午前は午後対策も兼ねて,午後で選択する科目の分野だけ解き始めました。</li> <li><strong>4月: 午前対策・午後対策</strong><br/> 午前問題は4月から全体的に対策を始めました (過去問道場を解くだけ)。<br/> 午後は複数回間違えた部分を復習していました。</li> </ul> <p>こうしてみると半年ぐらい勉強していた事が分かりますね。<br/> 趣味としては<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B3%A5%B9%A5%D1">コスパ</a>が良さそうです。</p> <p>平日は寝る前の1時間,休日は2~3時間を目安に学習しました。<br/> 1ヵ月で約40時間,合計で約240時間ぐらいでした。<br/> (<s>ある意味10日しか勉強していない。</s>)</p> <hr /> <h2 id="午後選択">午後選択</h2> <p>合格はしたいですが,合格するためだけの勉強はしたくなかったので興味のある科目を中心に選択しました。<br/> サブにデータベースを用意していましたが,1問も解けない科目が出題されたとき用で解く気は全くなかったです。</p> <ol> <li><strong>必須: 情報セキュリティ</strong><br/> セキュリティ知識はネットワークなどと重なる部分が多かったため,対策しやすい科目だと思います。<br/> クリアスクリーンなど,技術要素以外のセキュリティ知識は不足していましたが,比較的安定した得点源でした。</li> <li><strong>メイン: プログラミング</strong><br/> 迷路探索や<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C0%A5%A4%A5%AF%A5%B9%A5%C8%A5%E9">ダイクストラ</a>など,見覚えのある内容だと安定して点が取れました。<br/> カラツバ法など,自分の知らない内容だと面食らいましたが,落ち着いて解くと難易度差は無いように感じます。<br/> 出題内容によって難易度差があまりなく,安定した得点源でした。</li> <li><strong>メイン: ネットワーク</strong><br/> 基礎知識を定着しておけば,出題内容によって難易度差があまりなく,安定した得点源でした。</li> <li><strong>メイン: 組込み<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B7%A5%B9%A5%C6%A5%E0%B3%AB%C8%AF">システム開発</a></strong><br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%BB%A5%DE%A5%D5%A5%A9">セマフォ</a>やタスクなどの基礎知識があれば,出題内容によって難易度差があまりなく,安定した得点源でした。<br/> 読解力だけで解ける問題も多い印象です。</li> <li><strong>メイン: 情報<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B7%A5%B9%A5%C6%A5%E0%B3%AB%C8%AF">システム開発</a></strong><br/> 色々な知識が問われる分野で,対策は難しい科目でした。<br/> Gitや<a class="keyword" href="https://d.hatena.ne.jp/keyword/UML">UML</a>など,自分が知っている内容なら簡単ですが,<a class="keyword" href="https://d.hatena.ne.jp/keyword/CSS">CSS</a>など,自分が全く知らない内容は壊滅状態でした。<br/> 知らない問題が出題された場合は,読解力だけで取れる問題だけ取る気持ちで臨みました。<br/> 出題内容によって難易度差があり,不安定な得点となりやすかったです。</li> <li><strong>サブ: データベース</strong><br/> 読解力と基礎知識があれば,出題内容によって難易度差があまりなく,安定して得点を取れる科目だと感じます。<br/> 12月頃まではメインにする予定だったのですが,サブクエリの理解に不安があったので情報<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B7%A5%B9%A5%C6%A5%E0%B3%AB%C8%AF">システム開発</a>に切り替えました。</li> </ol> <p>個人的には「ネットワーク」と「データベース」は難易度にムラが無く,安定して得点を取れる科目でした。<br/> ただ,そろそろQUICなどの最近のトレンド技術も問われそうなので,ネットワークも難易度が少し上がりそうかな...?<br/> 逆に「情報<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B7%A5%B9%A5%C6%A5%E0%B3%AB%C8%AF">システム開発</a>」は知らないと解きにくい問題が多い印象なので,得点が不安定になりがちでした。</p> <p>文系科目の中では「システム監査」が点を取りやすい印象でした。<br/> 最近は難化傾向らしいですね。</p> <hr /> <h2 id="AP参考書">AP参考書</h2> <p>暇だったので参考書のレビューと<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B3%A5%B9%A5%D1">コスパ</a>の検証を兼ねて,色々購入してみました。</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%CA%BF%C0%AE27%C7%AF">平成27年</a>度と令和6年度のやつが新品(当時)で購入したもので,あとは中古です。<br/> APの参考書は2年前位の型落ちになると捨て値で売られているので,最新の参考書が一通り終わってやる事が無くなった人が手を出すには良いかも。<br/> 中古のやつは新品同然のもあれば年季が入っているものもあったので一長一短ですが,送料込みで500円以下で購入できるので安いかも。<br/> 最新<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B7%A5%E9%A5%D0%A5%B9">シラバス</a>未対応・特典が期限切れの点は微妙ですが,内容は最新参考書とほぼ同じだったので,再受験時にわざわざ最新版を購入する必要はない気がします。</p> <p>時代的に過去問集が少なくなり,教科書に過去問の電子版が特典として付いてくるのが今の主流なんですかね?</p> <p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lambda410/20240525/20240525142615.jpg" width="902" height="1200" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%CE%D0%CB%DC">緑本</a>で有名な午後対策の参考書は2022年度版を<a class="keyword" href="https://d.hatena.ne.jp/keyword/%C5%C5%BB%D2%BD%F1%C0%D2">電子書籍</a>でも購入しました。<br/> よく見ずに購入したら2年前のやつだった。<br/> (<a class="keyword" href="https://d.hatena.ne.jp/keyword/%CE%D0%CB%DC">緑本</a>って某受験本と紛らわしいよね。)<br/> <span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lambda410/20240525/20240525123308.png" width="203" height="313" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p> <p>勉強のしやすさは 紙 > <a class="keyword" href="https://d.hatena.ne.jp/keyword/%C5%C5%BB%D2%BD%F1%C0%D2">電子書籍</a> でした。<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/%C5%C5%BB%D2%BD%F1%C0%D2">電子書籍</a>の閲覧は<a class="keyword" href="https://d.hatena.ne.jp/keyword/Kindle%20Fire%20HD">Kindle Fire HD</a>を使っています。<br/> White Paperも持っているけど,勉強には不向きな気がしました。<br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B0C2XN8HKD?tag=lambda00haten-22&amp;linkCode=osi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/31tPOkj-RZL._SL500_.jpg" class="hatena-asin-detail-image" alt="Fire HD 10 タブレット - 10インチHD ディスプレイ 32GB ブラック (2023年発売)" title="Fire HD 10 タブレット - 10インチHD ディスプレイ 32GB ブラック (2023年発売)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B0C2XN8HKD?tag=lambda00haten-22&amp;linkCode=osi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">Fire HD 10 タブレット - 10インチHD ディスプレイ 32GB ブラック (2023年発売)</a></p><ul class="hatena-asin-detail-meta"><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/Amazon">Amazon</a></li></ul><a href="https://www.amazon.co.jp/dp/B0C2XN8HKD?tag=lambda00haten-22&amp;linkCode=osi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <p>IT関連本は色々な出版社がよくセールやっているのでこまめにチェックぐらいかね。<br/> よく使うサイトを晒しておきます。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.seshop.com" title="SEshop| 翔泳社の本・電子書籍通販サイト" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.seshop.com">www.seshop.com</a></cite><br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgihyo.jp%2Fdp%3Futm_source%3Dlink%26utm_medium%3Dbanner%26utm_campaign%3DWeb" title="Gihyo Digital Publishing … 技術評論社の電子書籍" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://gihyo.jp/dp?utm_source=link&utm_medium=banner&utm_campaign=Web">gihyo.jp</a></cite><br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftatsu-zine.com" title="達人出版会" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://tatsu-zine.com">tatsu-zine.com</a></cite><br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.amazon.co.jp%2FKindle-%25E3%2582%25AD%25E3%2583%25B3%25E3%2583%2589%25E3%2583%25AB-%25E9%259B%25BB%25E5%25AD%2590%25E6%259B%25B8%25E7%25B1%258D%2Fb%3Fie%3DUTF8%26node%3D2250738051" title="Kindle | Amazon | アマゾン" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.amazon.co.jp/Kindle-%E3%82%AD%E3%83%B3%E3%83%89%E3%83%AB-%E9%9B%BB%E5%AD%90%E6%9B%B8%E7%B1%8D/b?ie=UTF8&node=2250738051">www.amazon.co.jp</a></cite></p> <h3 id="技術評論社"><a class="keyword" href="https://d.hatena.ne.jp/keyword/%B5%BB%BD%D1%C9%BE%CF%C0%BC%D2">技術評論社</a></h3> <p>キタミ式と同じぐらい有名な教科書ですね。<br/> 合格教本は図を多用して過不足なく各用語について説明している点が他の教科書と比較して良かったです。<br/> 教科書性能は結構高いと思います。</p> <p>問題集は各科目の簡単な解説と午後の過去問なので,<a class="keyword" href="https://d.hatena.ne.jp/keyword/%CE%D0%CB%DC">緑本</a>との選択かな?<br/> 受験会場でもかなりの数を見かけました。<br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B0CNXGHG61?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51PvPxRiTjL._SL500_.jpg" class="hatena-asin-detail-image" alt="令和06年【春期】【秋期】 応用情報技術者 合格教本 情報処理技術者試験" title="令和06年【春期】【秋期】 応用情報技術者 合格教本 情報処理技術者試験"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B0CNXGHG61?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">令和06年【春期】【秋期】 応用情報技術者 合格教本 情報処理技術者試験</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%C2%E7%C2%EC%20%A4%DF%A4%E4%BB%D2" class="keyword">大滝 みや子</a>,<a href="https://d.hatena.ne.jp/keyword/%B2%AC%C5%E8%20%CD%B5%BB%CB" class="keyword">岡嶋 裕史</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%B5%BB%BD%D1%C9%BE%CF%C0%BC%D2">技術評論社</a></li></ul><a href="https://www.amazon.co.jp/dp/B0CNXGHG61?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div><br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/4297139650?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51QMFILiSxL._SL500_.jpg" class="hatena-asin-detail-image" alt="令和06-07年 応用情報技術者 試験によくでる問題集【午後】" title="令和06-07年 応用情報技術者 試験によくでる問題集【午後】"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/4297139650?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">令和06-07年 応用情報技術者 試験によくでる問題集【午後】</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%C2%E7%C2%EC%20%A4%DF%A4%E4%BB%D2" class="keyword">大滝 みや子</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%B5%BB%BD%D1%C9%BE%CF%C0%BC%D2">技術評論社</a></li></ul><a href="https://www.amazon.co.jp/dp/4297139650?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <h3 id="impress">impress</h3> <p>一番出版が早いAP対策本だと思います。<br/> 12月頭に書店に行ったら最新過去問付き令和6年対応はこの本しか無かったレベルの出版速度。</p> <p>紙・電子に限らず,教科書の内容が丸々PDFでダウンロードできる点が強い。<br/> また,過去問も教科書内に1回分,PDFに19回分の合わせて20回分ついてきます。</p> <p>最速で過去問の解説付きPDFが手に入る点は良かったのですが,一部過去問に解説しか無かった点が悪かったです。<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/IPA">IPA</a>のサイトから問題PDFをダウンロードしてきて,解説PDFとマージする作業が発生したのが面倒でした。<br/> (マージにはPDFSamを使いました。)<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fpdfsam.org" title="PDF Split And Merge" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://pdfsam.org">pdfsam.org</a></cite></p> <p>教科書の内容は合格教本よりは図が少なく,文字の羅列が続くため眠くなりやすいですが,脇に書いてあるコラムが中々マニアックで面白かったです。<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/%A4%CF%A4%DE%A4%C1%A4%C1%A4%E3%A4%F3">はまちちゃん</a>トラップに触れている参考書はこれぐらいでは?<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.itmedia.co.jp%2Fenterprise%2Farticles%2F0504%2F23%2Fnews005.html" title="大量の「はまちちゃん」を生み出したCSRFの脆弱性とは?" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.itmedia.co.jp/enterprise/articles/0504/23/news005.html">www.itmedia.co.jp</a></cite><br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B0CLCYN2ZD?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/511Oy5tRnvL._SL500_.jpg" class="hatena-asin-detail-image" alt="徹底攻略 応用情報技術者教科書 令和6年度 徹底攻略シリーズ" title="徹底攻略 応用情報技術者教科書 令和6年度 徹底攻略シリーズ"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B0CLCYN2ZD?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">徹底攻略 応用情報技術者教科書 令和6年度 徹底攻略シリーズ</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%B3%F4%BC%B0%B2%F1%BC%D2%A4%EF%A4%AF%A4%EF%A4%AF%A5%B9%A5%BF%A5%C7%A5%A3%A5%EF%A1%BC%A5%EB%A5%C9%20%C0%A5%B8%CD%C8%FE%B7%EE" class="keyword">株式会社わくわくスタディワールド 瀬戸美月</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%D7%A5%EC%A5%B9">インプレス</a></li></ul><a href="https://www.amazon.co.jp/dp/B0CLCYN2ZD?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <h3 id="アイテック"><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%A4%A5%C6%A5%C3%A5%AF">アイテック</a></h3> <p>午後対策特化の内容で<a class="keyword" href="https://d.hatena.ne.jp/keyword/%CE%D0%CB%DC">緑本</a>と呼ばれている書籍です。<br/> 他の過去問集と比較して問題の解説だけでなく,なぜその結論に至ったのか,問題の関連事項についても詳細に触れられている点が良かったです。</p> <p>午後対策では<a class="keyword" href="https://d.hatena.ne.jp/keyword/%CE%D0%CB%DC">緑本</a>が強いですが,午後特化の内容なので教科書的な内容を期待している人は他の書籍も必要かも。</p> <p>2015年と2022年の比較となりますが,一部過去問が違う以外は全く同じ内容でした。<br/> 別に最新でなくても良さそう。</p> <p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/4865753168?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51XcDCoKHPL._SL500_.jpg" class="hatena-asin-detail-image" alt="2024 応用情報技術者 午後問題の重点対策" title="2024 応用情報技術者 午後問題の重点対策"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/4865753168?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">2024 応用情報技術者 午後問題の重点対策</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%BE%AE%B8%FD%C3%A3%C9%D7%A1%A2%A5%A2%A5%A4%A5%C6%A5%C3%A5%AFIT%BF%CD%BA%E0%B6%B5%B0%E9%B8%A6%B5%E6%C9%F4" class="keyword">小口達夫、アイテックIT人材教育研究部</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%A4%A5%C6%A5%C3%A5%AF">アイテック</a></li></ul><a href="https://www.amazon.co.jp/dp/4865753168?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <h3 id="日経BP-日本経済新聞出版"><a class="keyword" href="https://d.hatena.ne.jp/keyword/%C6%FC%B7%D0BP">日経BP</a> <a class="keyword" href="https://d.hatena.ne.jp/keyword/%C6%FC%CB%DC%B7%D0%BA%D1%BF%B7%CA%B9">日本経済新聞</a>出版</h3> <p>午後対策の内容ですが,他の過去問をやり込み,あとは最後の詰めのみという人を対象にした内容でした。<br/> 文系科目のみに焦点を当てている点が潔く,何としてでも受かりたい人向けの本です。</p> <p>試験に合格するためのテクニックについて学ぶことができ,出題者が答えてほしい内容を的確に答える為の技術を学ぶことができると思います。</p> <p>内容は文系科目ですが,問われている事に解答するという点では文理問わず意味があると思います。</p> <p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/4296117084?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51-qb2tNyhL._SL500_.jpg" class="hatena-asin-detail-image" alt="うかる! 応用情報技術者 [午後] 速効問題集" title="うかる! 応用情報技術者 [午後] 速効問題集"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/4296117084?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">うかる! 応用情報技術者 [午後] 速効問題集</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%C2%BC%BB%B3%C4%BE%B5%AA" class="keyword">村山直紀</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%C6%FC%B7%D0BP">日経BP</a></li></ul><a href="https://www.amazon.co.jp/dp/4296117084?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <hr /> <h2 id="午前対策">午前対策</h2> <p>教科書を一通り読んでから問題を解き,分からなかった内容を教科書で復習するというやり方で進めました。</p> <p>ただ,マネジメント系の計算問題は覚えられる気がしなかったので全て捨てました。<br/> 出題されても数問程度だろうという楽観視と覚えていたらラッキー程度の気持ちです。</p> <p>午前に関しては過去問道場を<a class="keyword" href="https://d.hatena.ne.jp/keyword/%B2%E1%B3%D8%BD%AC">過学習</a>すればどうにかなると思います。<br/> ただ,最近は難化傾向らしいので<a class="keyword" href="https://d.hatena.ne.jp/keyword/%B2%E1%B3%D8%BD%AC">過学習</a>では太刀打ちできないかも...?<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B7%A5%E9%A5%D0%A5%B9">シラバス</a>を読んで,新規出題内容については学習しておくと良いかも。</p> <h2 id="午後対策">午後対策</h2> <p>過去問を繰り返し解くのも重要だと思いますが,基礎力が必要な気がします。<br/> 出題形式に慣れるという点では過去問を解くことが重要ですが,午前と違って過去問の<a class="keyword" href="https://d.hatena.ne.jp/keyword/%B2%E1%B3%D8%BD%AC">過学習</a>では厳しいと思います。</p> <p>どの科目においても<a class="keyword" href="https://d.hatena.ne.jp/keyword/IPA">IPA</a>の資料は役に立ちました。</p> <h3 id="情報セキュリティ">情報セキュリティ</h3> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/IPA">IPA</a>が発信している資料が一番勉強になりました。<br/> クリアデスクなども解説しているので,おそらく出題内容ともろ被りだと思います。</p> <p>情報セキュリティ10大脅威とか,<a class="keyword" href="https://d.hatena.ne.jp/keyword/IPA">IPA</a> NEWSとか。<br/> 暇があれば書籍・刊行物も読んでおきたいね。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.ipa.go.jp%2Fsecurity%2Findex.html" title="情報セキュリティ | IPA 独立行政法人 情報処理推進機構" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.ipa.go.jp/security/index.html">www.ipa.go.jp</a></cite><br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.ipa.go.jp%2Fsecurity%2F10threats%2Findex.html" title="情報セキュリティ10大脅威 | 情報セキュリティ | IPA 独立行政法人 情報処理推進機構" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.ipa.go.jp/security/10threats/index.html">www.ipa.go.jp</a></cite></p> <p>あとは,常日頃からニュースに気を配っておくことですかね。<br/> 最近だと <a class="keyword" href="https://d.hatena.ne.jp/keyword/Phishing">Phishing</a> as a Service や 16Shopなどが話題になりましたね。</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/IPA">IPA</a>以外ではセキュリティソフトメーカーが公開しているブログなどがおススメ。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.trendmicro.com%2Fja_jp%2Fresearch.html" title="トレンドマイクロ セキュリティブログ" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.trendmicro.com/ja_jp/research.html">www.trendmicro.com</a></cite><br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Feset-info.canon-its.jp%2Fmalware_info%2F" title="サイバーセキュリティの最新脅威動向などをキヤノンMJがお届けします | サイバーセキュリティ情報局" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://eset-info.canon-its.jp/malware_info/">eset-info.canon-its.jp</a></cite></p> <p>ゼロトラストって言葉はESETのサイトで知った。<br/> マジで感謝~</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Feset-info.canon-its.jp%2Fmalware_info%2Fspecial%2Fdetail%2F220825.html" title="ゼロトラスト・セキュリティ・モデルはクラウド時代の最適解となるのか? | サイバーセキュリティ情報局" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://eset-info.canon-its.jp/malware_info/special/detail/220825.html">eset-info.canon-its.jp</a></cite></p> <h3 id="プログラミング">プログラミング</h3> <p>きちんと問題文を読んで答える事を意識したぐらい。</p> <h3 id="ネットワーク">ネットワーク</h3> <p>過去問読んでも問われている内容が分からなかったので基礎固めから行いました。<br/> 有名な書籍を読んで,簡単なパケットキャプチャを作ったりして知識を深めていきました。</p> <p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B07FTHYKGV?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51isEmalwdL._SL500_.jpg" class="hatena-asin-detail-image" alt="図解まるわかり ネットワークのしくみ" title="図解まるわかり ネットワークのしくみ"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B07FTHYKGV?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">図解まるわかり ネットワークのしくみ</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/Gene" class="keyword">Gene</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%E6%C6%B1%CB%BC%D2">翔泳社</a></li></ul><a href="https://www.amazon.co.jp/dp/B07FTHYKGV?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div><br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B00U7A661U?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51LMrGZgn2L._SL500_.jpg" class="hatena-asin-detail-image" alt="基礎からわかるTCP/IP ネットワークコンピューティング入門 第3版" title="基礎からわかるTCP/IP ネットワークコンピューティング入門 第3版"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B00U7A661U?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">基礎からわかるTCP/IP ネットワークコンピューティング入門 第3版</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%C2%BC%BB%B3%B8%F8%CA%DD" class="keyword">村山公保</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%AA%A1%BC%A5%E0%BC%D2">オーム社</a></li></ul><a href="https://www.amazon.co.jp/dp/B00U7A661U?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div><br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B0827QNDNT?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/41GcGJkZ-6L._SL500_.jpg" class="hatena-asin-detail-image" alt="マスタリングTCP/IP 入門編(第6版)" title="マスタリングTCP/IP 入門編(第6版)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B0827QNDNT?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">マスタリングTCP/IP 入門編(第6版)</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%B0%E6%BE%E5%C4%BE%CC%E9" class="keyword">井上直也</a>,<a href="https://d.hatena.ne.jp/keyword/%C2%BC%BB%B3%B8%F8%CA%DD" class="keyword">村山公保</a>,<a href="https://d.hatena.ne.jp/keyword/%C3%DD%B2%BC%CE%B4%BB%CB" class="keyword">竹下隆史</a>,<a href="https://d.hatena.ne.jp/keyword/%B9%D3%B0%E6%C6%A9" class="keyword">荒井透</a>,<a href="https://d.hatena.ne.jp/keyword/%B4%A3%C5%C4%B9%AC%CD%BA" class="keyword">苅田幸雄</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%AA%A1%BC%A5%E0%BC%D2">オーム社</a></li></ul><a href="https://www.amazon.co.jp/dp/B0827QNDNT?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <p>ネットワーク機器の構築ではシミュレータを利用して学習しました。<br/> ネットワークの分野は書籍を読んだだけの頭でっかちでは知識が定着しなかったのですが,自分で手を動かしてみると割と順調に覚えられました。</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/netstat">netstat</a>やtracertなども自分で一度使ってみるのが良いかもです。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=http%3A%2F%2Fwww.netacad.com%2Fja%2Fcourses%2Fpacket-tracer" title="Cisco Packet Tracer - Networking Simulation Tool" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="http://www.netacad.com/ja/courses/packet-tracer">www.netacad.com</a></cite></p> <p>WEBサイトはこちらがおすすめ。<br/> とくに「ネットワークエンジニアとして」さんのネスペの項目が良かった。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.infraexpert.com" title="ネットワークエンジニアとして" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.infraexpert.com">www.infraexpert.com</a></cite><br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fmilestone-of-se.nesuke.com" title="SEの道標" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://milestone-of-se.nesuke.com">milestone-of-se.nesuke.com</a></cite></p> <p>何年かの周期で<a class="keyword" href="https://d.hatena.ne.jp/keyword/TCP">TCP</a>/<a class="keyword" href="https://d.hatena.ne.jp/keyword/UDP">UDP</a>の<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%C8%A5%B3%A5%EB">プロトコル</a>について問われる事があるので,HTTPや<a class="keyword" href="https://d.hatena.ne.jp/keyword/FTP">FTP</a>などの通信方式については押さえておくのが良いかも。<br/> 特にQUICはそろそろきそう。</p> <h3 id="データベース">データベース</h3> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/SQL">SQL</a>とデータベースに関する知識が皆無だったので,まずは参考書で地固めしました。</p> <p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B00TTRZFDC?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51cjUlZIynL._SL500_.jpg" class="hatena-asin-detail-image" alt="おうちで学べるデータベースのきほん" title="おうちで学べるデータベースのきほん"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B00TTRZFDC?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">おうちで学べるデータベースのきほん</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%A5%DF%A5%C3%A5%AF" class="keyword">ミック</a>,<a href="https://d.hatena.ne.jp/keyword/%CC%DA%C2%BC%20%CC%C0%BC%A3" class="keyword">木村 明治</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%E6%C6%B1%CB%BC%D2">翔泳社</a></li></ul><a href="https://www.amazon.co.jp/dp/B00TTRZFDC?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div><br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B01HD5VWWO?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51N++ifzamL._SL500_.jpg" class="hatena-asin-detail-image" alt="SQL 第2版 ゼロからはじめるデータベース操作" title="SQL 第2版 ゼロからはじめるデータベース操作"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B01HD5VWWO?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">SQL 第2版 ゼロからはじめるデータベース操作</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%A5%DF%A5%C3%A5%AF" class="keyword">ミック</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%E6%C6%B1%CB%BC%D2">翔泳社</a></li></ul><a href="https://www.amazon.co.jp/dp/B01HD5VWWO?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <p>キリン本は<a class="keyword" href="https://d.hatena.ne.jp/keyword/SQL">SQL</a>の知識が一通り得られるのでおススメですが,正規化についてはあまり触れられていないので,同じ著者のデータベース入門書も併読しました。</p> <p>追加で中級者向けの書籍も読みましたが,AP対策だけを考えるなら上記2冊で十分だと思いました。</p> <p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B07GB4CNKP?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51va-3sED3L._SL500_.jpg" class="hatena-asin-detail-image" alt="達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ" title="達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B07GB4CNKP?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%A5%DF%A5%C3%A5%AF" class="keyword">ミック</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%E6%C6%B1%CB%BC%D2">翔泳社</a></li></ul><a href="https://www.amazon.co.jp/dp/B07GB4CNKP?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <p>午後は<a class="keyword" href="https://d.hatena.ne.jp/keyword/SQL">SQL</a>について問われるので,とりあえず手を動かすしかなさそうです。</p> <h3 id="組み込みシステム開発">組み込み<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B7%A5%B9%A5%C6%A5%E0%B3%AB%C8%AF">システム開発</a></h3> <p>この科目に関しては,過去問を繰り返し解く位しか対策方法が思いつきませんでした。</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%BB%A5%DE%A5%D5%A5%A9">セマフォ</a>やタスク以外の専門知識は問題文に書いてあることが多そうな印象ですが,たまにハードウェアについて問われるのでその辺の補強ぐらいですかね?</p> <p>電子工作が好きな人はあまり対策がいらない分野かも。<br/> 最近はIoTもセキュリティが問われる事が多いので「IoT開発におけるセキュリティ設計の手引き」は押さえておくと良いかも。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.ipa.go.jp%2Fsecurity%2Fiot%2Fiotguide.html" title="「IoT開発におけるセキュリティ設計の手引き」を公開 | 情報セキュリティ | IPA 独立行政法人 情報処理推進機構" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.ipa.go.jp/security/iot/iotguide.html">www.ipa.go.jp</a></cite></p> <p>(本題とは関係ないけど)一時期ローソンのメガホットカフェラテにハマっているときにコーヒーメーカーの自作について考えていました。<br/> まさかテストでコーヒーメーカーについて問われるとはね...。<br/> 常日頃から身近な組み込み機器について関心を持っておくと良いかも。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.lawson.co.jp%2Frecommend%2Foriginal%2Fdetail%2F1390666_1996.html" title="メガホットカフェラテ|ローソン公式サイト" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.lawson.co.jp/recommend/original/detail/1390666_1996.html">www.lawson.co.jp</a></cite></p> <h3 id="情報システム開発">情報<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B7%A5%B9%A5%C6%A5%E0%B3%AB%C8%AF">システム開発</a></h3> <p>個人的に出題傾向のブレが大きめな科目だと睨んでいます。</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%BD%A5%D5%A5%C8%A5%A6%A5%A7%A5%A2%A5%C6%A5%B9%A5%C8">ソフトウェアテスト</a>や<a class="keyword" href="https://d.hatena.ne.jp/keyword/UML">UML</a>についての知識は押さえておくと良さそうです。<br/> 自分は下記の参考書を利用しました。<br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B093Q13V96?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/41TNqyMXGCL._SL500_.jpg" class="hatena-asin-detail-image" alt="【この1冊でよくわかる】ソフトウェアテストの教科書 [増補改訂 第2版]" title="【この1冊でよくわかる】ソフトウェアテストの教科書 [増補改訂 第2版]"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B093Q13V96?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">【この1冊でよくわかる】ソフトウェアテストの教科書 [増補改訂 第2版]</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%C9%DB%BB%DC%20%BE%BB%B9%B0" class="keyword">布施 昌弘</a>,<a href="https://d.hatena.ne.jp/keyword/%B9%BE%C5%BA%20%C3%D2%C7%B7" class="keyword">江添 智之</a>,<a href="https://d.hatena.ne.jp/keyword/%B1%CA%B0%E6%20%C5%D8" class="keyword">永井 努</a>,<a href="https://d.hatena.ne.jp/keyword/%BB%B0%CB%D9%20%B2%ED%CC%E9" class="keyword">三堀 雅也</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/SB%A5%AF%A5%EA%A5%A8%A5%A4%A5%C6%A5%A3%A5%D6">SBクリエイティブ</a></li></ul><a href="https://www.amazon.co.jp/dp/B093Q13V96?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div><br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B00EH93MNW?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/411cmnh+bBL._SL500_.jpg" class="hatena-asin-detail-image" alt="UMLモデリングレッスン" title="UMLモデリングレッスン"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B00EH93MNW?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">UMLモデリングレッスン</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%CA%BF%DF%B7%20%BE%CF" class="keyword">平澤 章</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%C6%FC%B7%D0BP">日経BP</a></li></ul><a href="https://www.amazon.co.jp/dp/B00EH93MNW?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/UML">UML</a>の参考書籍はEAが詳しく解説しています。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.sparxsystems.jp%2Fuml_books.htm" title="UML関連 おすすめの書籍" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.sparxsystems.jp/uml_books.htm">www.sparxsystems.jp</a></cite></p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/UML">UML</a>の学習については過去問道場の解説でも使われているdraw ioが便利です。<br/> PlantUMLでも良いと思います。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fapp.diagrams.net" title="Flowchart Maker &amp; Online Diagram Software" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://app.diagrams.net">app.diagrams.net</a></cite></p> <p>余裕があれば<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C7%A5%B6%A5%A4%A5%F3%A5%D1%A5%BF%A1%BC%A5%F3">デザインパターン</a>や<a class="keyword" href="https://d.hatena.ne.jp/keyword/GUI">GUI</a>についても押さえておくと良さそうです。<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B7%A5%E9%A5%D0%A5%B9">シラバス</a>的にはUI/UXも問われそうなので,MVVMやUIスレッドについても必須の知識になりそうですね。<br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B09HK66P5X?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/41xgZhdHu7L._SL500_.jpg" class="hatena-asin-detail-image" alt="Java言語で学ぶデザインパターン入門第3版" title="Java言語で学ぶデザインパターン入門第3版"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B09HK66P5X?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">Java言語で学ぶデザインパターン入門第3版</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%B7%EB%BE%EB%20%B9%C0" class="keyword">結城 浩</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/SB%A5%AF%A5%EA%A5%A8%A5%A4%A5%C6%A5%A3%A5%D6">SBクリエイティブ</a></li></ul><a href="https://www.amazon.co.jp/dp/B09HK66P5X?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <p>忘れがちですが,チーム開発についてもよく問われます。<br/> Gitや<a class="keyword" href="https://d.hatena.ne.jp/keyword/SVN">SVN</a>,開発方式については軽くさらっておくと良さそうです。</p> <p>特に<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%B8%A5%E3%A5%A4%A5%EB">アジャイル</a>開発については<a class="keyword" href="https://d.hatena.ne.jp/keyword/IPA">IPA</a>のPDFがおススメ。<br/> 「<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%B8%A5%E3%A5%A4%A5%EB">アジャイル</a>開発の進め方」<br/> <a href="https://www.ipa.go.jp/digital/hjuojm000000gwoo-att/000065606.pdf">https://www.ipa.go.jp/digital/hjuojm000000gwoo-att/000065606.pdf</a></p> <hr /> <h2 id="その他">その他</h2> <p>感想レベルで信憑性なし。</p> <h3 id="時計">時計</h3> <p>試験会場によりますが,時計がない場合があるそうなので腕時計は持っていた方がよさそうです。<br/> また,会場に時計がある場合も試験時間は試験官の時計が基準となる点に注意しましょう。</p> <p>なんとなく試験官の時計の誤差を計っていたのですが,ほぼ誤差なしの時間管理でした。<br/> 試験直前に月差を調整しているんですかね?</p> <h4 id="置時計">置時計</h4> <p>試験には時計機能のみの時計のみ持ち込み可能です。<br/> つまり,アラーム機能なしの目覚まし時計は持ち込んでいいんですかね?</p> <p>ここは試験官の裁量によるところだと思いますが,自分は腕時計をしていたので片づけるように言われました。<br/> 次に受験することがあれば,腕時計を外してチャレンジしてみたいと思います。</p> <h4 id="腕時計">腕時計</h4> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Apple%20Watch">Apple Watch</a>やPixel <a class="keyword" href="https://d.hatena.ne.jp/keyword/Watch">Watch</a>などのスマートウォッチしか持っていない人も多いのではないでしょうか?<br/> 資格試験だとスマートウォッチの持ち込みは認められていないので,試験用の腕時計を探している人も多いはず。<br/> そこで,資格用の試験に「カシオスタンダード」(通称,チプカシ)と呼ばれる安価な腕時計をおススメします。<br/> 地味に<a class="keyword" href="https://d.hatena.ne.jp/keyword/%B2%C3%BF%E5%CA%AC%B2%F2">加水分解</a>耐性が高いのも良き。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.casio.com%2Fjp%2Fwatches%2Fcasio%2Fcasio-collection%2Fproducts%2Fstandard%2F" title="Standard | CASIO" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.casio.com/jp/watches/casio/casio-collection/products/standard/">www.casio.com</a></cite></p> <p>最近,ガチャガチャ第二弾が出たことでも話題になりました。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Farticle.yahoo.co.jp%2Fdetail%2Fe5eba0293211eb3d09f7628e5581951c53642636" title="【ネタバレ】チープカシオの指輪ガチャに第2弾が登場!" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://article.yahoo.co.jp/detail/e5eba0293211eb3d09f7628e5581951c53642636">article.yahoo.co.jp</a></cite></p> <p>安いのに月差が少なく,微妙にオシャレな感じから最近のファッションとして流行っているらしいですね。<br/> 海外旅行に行って,現地でチプカシを購入することでその国の時刻を直ぐに確認できる点も熱いです。<br/> (日本未発売のチプカシも集めたい。)</p> <p>個人的に初めに選ぶチプカシは Casio F91W をおススメしています。<br/> 家電量販店やホームセンターで手に入り,パッと見だと一瞬<a class="keyword" href="https://d.hatena.ne.jp/keyword/G-SHOCK">G-SHOCK</a>に見える腕時計で,メーカー公称の月差は±30ですが,自分の感覚的には±10ぐらいな印象です。<br/> (ある人がある事に使っていたことでも有名です。)<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fja.wikipedia.org%2Fwiki%2FCasio_F91W" title="Casio F91W - Wikipedia" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://ja.wikipedia.org/wiki/Casio_F91W">ja.wikipedia.org</a></cite></p> <p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B09BZ2TX16?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/41Ff9o4MnEL._SL500_.jpg" class="hatena-asin-detail-image" alt="[カシオ] 腕時計 カシオ コレクション 【国内正規品】 F-91W-1JH メンズ ブラック" title="[カシオ] 腕時計 カシオ コレクション 【国内正規品】 F-91W-1JH メンズ ブラック"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B09BZ2TX16?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">[カシオ] 腕時計 カシオ コレクション 【国内正規品】 F-91W-1JH メンズ ブラック</a></p><ul class="hatena-asin-detail-meta"><li>CASIO Collection(カシオ コレクション)</li></ul><a href="https://www.amazon.co.jp/dp/B09BZ2TX16?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <p>チプカシの輸入品もオシャレですが,日本販売のモノと違ってパッケージに入っていないことが多い点に注意ですね。<br/> 出品者によっては雑梱包で来ます。<br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B07DNRQM8X?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/41oSJLtrFWL._SL500_.jpg" class="hatena-asin-detail-image" alt="[カシオ]【並行輸入品】カシオ腕時計 時計 チープカシオ チプカシ アナログ MW-59-1B" title="[カシオ]【並行輸入品】カシオ腕時計 時計 チープカシオ チプカシ アナログ MW-59-1B"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B07DNRQM8X?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">[カシオ]【並行輸入品】カシオ腕時計 時計 チープカシオ チプカシ アナログ MW-59-1B</a></p><ul class="hatena-asin-detail-meta"><li>CASIO(カシオ)</li></ul><a href="https://www.amazon.co.jp/dp/B07DNRQM8X?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <p>ただ,資格試験用には電卓機能付きのチプカシは避けた方がよいです (当たり前)。<br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B089J7B1RW?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/41iiJ-BTF0L._SL500_.jpg" class="hatena-asin-detail-image" alt="[カシオスタンダード] 腕時計 電卓機能付き カリキュレーターウォッチ CA-53WF-1B 海外モデル [並行輸入品]" title="[カシオスタンダード] 腕時計 電卓機能付き カリキュレーターウォッチ CA-53WF-1B 海外モデル [並行輸入品]"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B089J7B1RW?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">[カシオスタンダード] 腕時計 電卓機能付き カリキュレーターウォッチ CA-53WF-1B 海外モデル [並行輸入品]</a></p><ul class="hatena-asin-detail-meta"><li>CASIO</li></ul><a href="https://www.amazon.co.jp/dp/B089J7B1RW?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <p>チプカシすら高い!って感じる人は,<a class="keyword" href="https://d.hatena.ne.jp/keyword/CITIZEN">CITIZEN</a>のQ&amp;Qモデル(通称,チプシチ)がチプカシより少し安くておススメ。<br/> あとは各時計メーカーが出しているエントリーモデルが良いと思います。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fqq-watch.jp" title="Q&amp;Qウオッチサイト" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://qq-watch.jp">qq-watch.jp</a></cite><br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B07GRN7NH6?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/41rh0Xs0hDL._SL500_.jpg" class="hatena-asin-detail-image" alt="[シチズン Q&amp;Q] 腕時計 アナログ 防水 ウレタンベルト VS18-001 メンズ ホワイト ネイビー" title="[シチズン Q&amp;Q] 腕時計 アナログ 防水 ウレタンベルト VS18-001 メンズ ホワイト ネイビー"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B07GRN7NH6?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">[シチズン Q&amp;Q] 腕時計 アナログ 防水 ウレタンベルト VS18-001 メンズ ホワイト ネイビー</a></p><ul class="hatena-asin-detail-meta"><li>Q&amp;Q(キューアンドキュー)</li></ul><a href="https://www.amazon.co.jp/dp/B07GRN7NH6?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <p>100円ショップでも類似品が売っているので最悪それでも。<br/> まあ,試験時は無難に電波式の腕時計が良さそうな気がします。</p> <hr /> <h3 id="試験前日">試験前日</h3> <p>試験前日は午前対策を重点的に行い,午後は復習だけ行いました。<br/> 試験当日は朝が早いので栄養ドリンクを飲んで早めに寝ました。</p> <p>飲むと体感で睡眠時間が+1時間されるような感じになります。<br/> 寝る前に飲む<a class="keyword" href="https://d.hatena.ne.jp/keyword/%C8%E8%CF%AB">疲労</a>回復系のドリンクが効くあたり,もう体は若くなさそうです。<br/> 死期は近い。</p> <p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B09LQPZ6SJ?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/41EdJsKv4eL._SL500_.jpg" class="hatena-asin-detail-image" alt="アリナミンナイトリカバー50ml X 3本X 10本 (ケース)【指定医薬部外品】 ノンカフェイン カフェインレス 栄養不良に伴う身体不調の改善・予防 寝付きが悪い 眠りが浅い 目覚めが悪い グリシン配合" title="アリナミンナイトリカバー50ml X 3本X 10本 (ケース)【指定医薬部外品】 ノンカフェイン カフェインレス 栄養不良に伴う身体不調の改善・予防 寝付きが悪い 眠りが浅い 目覚めが悪い グリシン配合"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B09LQPZ6SJ?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">アリナミンナイトリカバー50ml X 3本X 10本 (ケース)【指定医薬部外品】 ノンカフェイン カフェインレス 栄養不良に伴う身体不調の改善・予防 寝付きが悪い 眠りが浅い 目覚めが悪い グリシン配合</a></p><ul class="hatena-asin-detail-meta"><li>ナイトリカバー</li></ul><a href="https://www.amazon.co.jp/dp/B09LQPZ6SJ?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div><br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B0CD3Q1M1H?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/41x2b08bc1L._SL500_.jpg" class="hatena-asin-detail-image" alt="興和 [指定医薬部外品] キューピーコーワ ヒーリングドリンク 10本×5個セット" title="興和 [指定医薬部外品] キューピーコーワ ヒーリングドリンク 10本×5個セット"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B0CD3Q1M1H?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">興和 [指定医薬部外品] キューピーコーワ ヒーリングドリンク 10本×5個セット</a></p><ul class="hatena-asin-detail-meta"><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%B6%BD%CF%C2">興和</a></li></ul><a href="https://www.amazon.co.jp/dp/B0CD3Q1M1H?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div><br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B0B1DPJWZJ?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51x3w7sk9BL._SL500_.jpg" class="hatena-asin-detail-image" alt="大正製薬 リポビタンフィール 100ml×6本×5 [指定医薬部外品] 糖類ゼロ 疲労の回復・予防 タウリン配合" title="大正製薬 リポビタンフィール 100ml×6本×5 [指定医薬部外品] 糖類ゼロ 疲労の回復・予防 タウリン配合"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B0B1DPJWZJ?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">大正製薬 リポビタンフィール 100ml×6本×5 [指定医薬部外品] 糖類ゼロ 疲労の回復・予防 タウリン配合</a></p><ul class="hatena-asin-detail-meta"><li>リポビタン</li></ul><a href="https://www.amazon.co.jp/dp/B0B1DPJWZJ?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <hr /> <h3 id="お昼ご飯">お昼ご飯</h3> <p>午後試験は集中力との闘いなので,お昼ご飯で至らない用にしましょう。<br/> ラーメンとおにぎりのセットなど,炭水化物マシマシにすると眠気との戦闘になります。</p> <p>自分は朝ご飯で砂糖マシマシのフルグラを1200kcalぐらい摂取して,お昼ご飯は食べる気が無い位で挑んでみました。<br/> 正直,朝から<a class="keyword" href="https://d.hatena.ne.jp/keyword/%B0%DF%A4%E2%A4%BF%A4%EC">胃もたれ</a>してしんどかったのでおススメはしないです。<br/> (フルグラ初めて食べたけど美味しいよね。毎日食べてたら糖尿になりそうだけど。)</p> <p>お腹空きすぎても集中できないので,お昼ご飯はきちんと食べて,食後に散歩して慣らすのが良さそうです。<br/> 他の受験者を見ても,お昼ご飯後に散歩している人は結構いました。<br/> あと,カフェインは利尿作用があるのでほどほどに。</p> <p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B09HQWLMSR?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51cCAWNKGaL._SL500_.jpg" class="hatena-asin-detail-image" alt="by Amazon カルビー フルグラ 950g×6袋" title="by Amazon カルビー フルグラ 950g×6袋"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B09HQWLMSR?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">by Amazon カルビー フルグラ 950g×6袋</a></p><ul class="hatena-asin-detail-meta"><li>by <a class="keyword" href="https://d.hatena.ne.jp/keyword/Amazon">Amazon</a></li></ul><a href="https://www.amazon.co.jp/dp/B09HQWLMSR?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div><br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B07G263T3S?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51JLpI0R9SL._SL500_.jpg" class="hatena-asin-detail-image" alt="カルビー フルグラ 糖質オフ 600g×6袋" title="カルビー フルグラ 糖質オフ 600g×6袋"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B07G263T3S?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">カルビー フルグラ 糖質オフ 600g×6袋</a></p><ul class="hatena-asin-detail-meta"><li>フルグラ</li></ul><a href="https://www.amazon.co.jp/dp/B07G263T3S?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <hr /> <h3 id="ブドウ糖"><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D6%A5%C9%A5%A6%C5%FC">ブドウ糖</a></h3> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%BB%A5%F3%A5%BF%A1%BC%BB%EE%B8%B3">センター試験</a>が近い頃に「inゼリーの<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D6%A5%C9%A5%A6%C5%FC">ブドウ糖</a>が全集中できてヤバい」みたいな記事を見て食べてみたのですが,マジで頭の中がスッキリして集中できました。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fnews.yahoo.co.jp%2Fexpert%2Farticles%2F49a00fdc8c1ec35cbc0c335270d42be04d50ab72" title="【受験生セットも登場】inゼリーブドウ糖ラムネ味は勉強向き?どこで買える?(YORI先生) - エキスパート - Yahoo!ニュース" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://news.yahoo.co.jp/expert/articles/49a00fdc8c1ec35cbc0c335270d42be04d50ab72">news.yahoo.co.jp</a></cite></p> <p>森永ラムネや似たようなゼリー飲料でも全集中出来たので,<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D6%A5%C9%A5%A6%C5%FC">ブドウ糖</a>の摂取はおススメです。<br/> 自分は試験の1週間前から<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D6%A5%C9%A5%A6%C5%FC">ブドウ糖</a>断ちをして,試験のお昼ご飯に摂取して午後試験に臨みました。<br/> (当日は頭が痛かったので効果が得られたかは微妙ですが。)</p> <p>ラムネの中でも「<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D6%A5%C9%A5%A6%C5%FC">ブドウ糖</a>」と書かれているものが良いです。<br/> 自分は<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D6%A5%C9%A5%A6%C5%FC">ブドウ糖</a>より砂糖が多いラムネはあまり効果を得られませんでした。</p> <p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B08HNG47QG?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/41P9uvRO24L._SL500_.jpg" class="hatena-asin-detail-image" alt="inゼリー エネルギー ブドウ糖 ラムネ味 (180g×30個) 考えるためのエネルギー 10秒チャージ ぶどう糖30g配合 1食分のビタミンB1配合 森永製菓" title="inゼリー エネルギー ブドウ糖 ラムネ味 (180g×30個) 考えるためのエネルギー 10秒チャージ ぶどう糖30g配合 1食分のビタミンB1配合 森永製菓"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B08HNG47QG?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">inゼリー エネルギー ブドウ糖 ラムネ味 (180g×30個) 考えるためのエネルギー 10秒チャージ ぶどう糖30g配合 1食分のビタミンB1配合 森永製菓</a></p><ul class="hatena-asin-detail-meta"><li>inゼリー</li></ul><a href="https://www.amazon.co.jp/dp/B08HNG47QG?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div><br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B006OZ9VK0?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51BWT935+EL._SL500_.jpg" class="hatena-asin-detail-image" alt="大丸本舗 ぶどう糖 18粒×10袋" title="大丸本舗 ぶどう糖 18粒×10袋"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B006OZ9VK0?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">大丸本舗 ぶどう糖 18粒×10袋</a></p><ul class="hatena-asin-detail-meta"><li>大丸本舗</li></ul><a href="https://www.amazon.co.jp/dp/B006OZ9VK0?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div><br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B0B1TLPG9R?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/71oVTHok+QL._SL500_.jpg" class="hatena-asin-detail-image" alt="【Amazon.co.jp限定】森永製菓 大粒ラムネ 15袋" title="【Amazon.co.jp限定】森永製菓 大粒ラムネ 15袋"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B0B1TLPG9R?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">【Amazon.co.jp限定】森永製菓 大粒ラムネ 15袋</a></p><ul class="hatena-asin-detail-meta"><li>森永製菓</li></ul><a href="https://www.amazon.co.jp/dp/B0B1TLPG9R?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div><br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B0B1TJ1Q6Y?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51hmMhK3tLL._SL500_.jpg" class="hatena-asin-detail-image" alt="Style4U(スタイルフォーユー) 【Amazon.co.jp限定】 森永製菓 ラムネ 20本 Style4U" title="Style4U(スタイルフォーユー) 【Amazon.co.jp限定】 森永製菓 ラムネ 20本 Style4U"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B0B1TJ1Q6Y?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">Style4U(スタイルフォーユー) 【Amazon.co.jp限定】 森永製菓 ラムネ 20本 Style4U</a></p><ul class="hatena-asin-detail-meta"><li>Style4U(スタイルフォーユー)</li></ul><a href="https://www.amazon.co.jp/dp/B0B1TJ1Q6Y?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <hr /> <h3 id="読書">読書</h3> <p>APはエンジニアの為の試験ですが,読解力が結構求められる印象です。<br/> 特に仕様書を読むことが多い職種だと思うので,ジャンル問わず普段から読書をしておくと良いかもね。</p> <p>加えて読解力に自信がない人は,現代文の勉強もおススメです。<br/> 自分は現代文の勉強を1度行ってから午後対策を始めたのですが,結構スラスラ解けるようになったと感じています。<br/> これに関してはがっつりではなく,関連書籍を読む程度で十分だと思います。<br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B09LQZNXKG?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/41XFg0ixNvL._SL500_.jpg" class="hatena-asin-detail-image" alt="着眼と考え方 現代文解釈の基礎〔新訂版〕 (ちくま学芸文庫)" title="着眼と考え方 現代文解釈の基礎〔新訂版〕 (ちくま学芸文庫)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B09LQZNXKG?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">着眼と考え方 現代文解釈の基礎〔新訂版〕 (ちくま学芸文庫)</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%B1%F3%C6%A3%B2%C5%B4%F0" class="keyword">遠藤嘉基</a>,<a href="https://d.hatena.ne.jp/keyword/%C5%CF%CA%D5%BC%C2" class="keyword">渡辺実</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%C3%DE%CB%E0%BD%F1%CB%BC">筑摩書房</a></li></ul><a href="https://www.amazon.co.jp/dp/B09LQZNXKG?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <p>学習についての本もよかった。<br/> 長文を読んでいる時に右から左に抜けていく事が少なくなった気がします。<br/> (加齢による考え方の変化も関係しているかも...?)<br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B0B3XD5HJB?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/41QDYUO6RvL._SL500_.jpg" class="hatena-asin-detail-image" alt="私たちはどう学んでいるのか ――創発から見る認知の変化 (ちくまプリマー新書)" title="私たちはどう学んでいるのか ――創発から見る認知の変化 (ちくまプリマー新書)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B0B3XD5HJB?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">私たちはどう学んでいるのか ――創発から見る認知の変化 (ちくまプリマー新書)</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%CE%EB%CC%DA%B9%A8%BE%BC" class="keyword">鈴木宏昭</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%C3%DE%CB%E0%BD%F1%CB%BC">筑摩書房</a></li></ul><a href="https://www.amazon.co.jp/dp/B0B3XD5HJB?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <hr /> <h3 id="鉛筆">鉛筆</h3> <p>午前は<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%DE%A1%BC%A5%AF%A5%B7%A1%BC%A5%C8">マークシート</a>方式なのでシャーペンより鉛筆がおススメです。<br/> 塗りつぶし速度もシャーペンより早い気がします。<br/> 鉛筆削りも持ち込んで試験時間に削ったりしましたが,音が結構したので注意かも。</p> <p>今の時代の<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D0%A5%C8%A5%A8%A5%F3">バトエン</a>は最強図鑑なんですかね?<br/> 五角形の<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D0%A5%C8%A5%A8%A5%F3">バトエン</a>があるのか気になります。</p> <p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B09P7TY6RB?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/61ZPKMfOoDL._SL500_.jpg" class="hatena-asin-detail-image" alt="学研ステイフル 鉛筆 バトルえんぴつ 最強王図鑑 異種最強王図鑑 闇の王者決定戦 バトエン スターターキット 闇 N15010" title="学研ステイフル 鉛筆 バトルえんぴつ 最強王図鑑 異種最強王図鑑 闇の王者決定戦 バトエン スターターキット 闇 N15010"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B09P7TY6RB?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">学研ステイフル 鉛筆 バトルえんぴつ 最強王図鑑 異種最強王図鑑 闇の王者決定戦 バトエン スターターキット 闇 N15010</a></p><ul class="hatena-asin-detail-meta"><li>Gakken</li></ul><a href="https://www.amazon.co.jp/dp/B09P7TY6RB?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <hr /> <h3 id="お祈り">お祈り</h3> <p>やることやったら午後試験は自分の得意分野が出ることを祈りましょう。<br/> 常日頃から善行を積むしかないです。</p> <hr /> <h2 id="感想">感想</h2> <p>大体の人がプログラムを書ける時代になりつつあるので,エンジニアも増加傾向っぽいですよね。<br/> これからは応用情報も持っている事が普通になるのかな?</p> <p>体が劣化する前に出来ることはしておくかと思わせてくれた試験でした。</p> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/%E5%BF%9C%E7%94%A8%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">応用情報技術者</span> </a> </span> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{&quot;area&quot;: &quot;finish_reading&quot;}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="lambda410" >lambda410</span></span> <span class="entry-footer-time"><a href="https://lambda00.hatenablog.com/entry/2024/05/26/133725"><time data-relative datetime="2024-05-26T04:37:25Z" title="2024-05-26T04:37:25Z" class="updated">2024-05-26 13:37</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/lambda410/lambda00.hatenablog.com/subscribe?utm_campaign=subscribe_blog&amp;utm_medium=button&amp;utm_source=blogs_entry_footer"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://lambda00.hatenablog.com/entry/2024/05/26/133725" data-hatena-star-title="応用情報技術者試験を受けた: 令和6年春季試験" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/lambda00.hatenablog.com/entry/2024/05/26/133725" class="hatena-bookmark-button" data-hatena-bookmark-url="https://lambda00.hatenablog.com/entry/2024/05/26/133725" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://lambda00.hatenablog.com/entry/2024/05/26/133725"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?hashtags=%E5%BF%9C%E7%94%A8%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85&amp;text=%E5%BF%9C%E7%94%A8%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85%E8%A9%A6%E9%A8%93%E3%82%92%E5%8F%97%E3%81%91%E3%81%9F%3A+%E4%BB%A4%E5%92%8C6%E5%B9%B4%E6%98%A5%E5%AD%A3%E8%A9%A6%E9%A8%93+-+%E3%81%8A%E3%82%82%E3%81%A1%E3%82%83%E3%83%90%E3%82%B3&amp;url=https%3A%2F%2Flambda00.hatenablog.com%2Fentry%2F2024%2F05%2F26%2F133725" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <script> (valve = window.valve || []).push(function(v) { v.displayDFPSlot('google_afc_user_container_4'); }); </script> <div id="google_afc_user_container_4" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user_2nd"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> </div> <div class="comment-box js-comment-box"> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> </div> </footer> </div> </article> <article class="entry hentry test-hentry js-entry-article date-first autopagerize_page_element chars-2400 words-200 mode-markdown entry-even" id="entry-6801883189102050284" data-keyword-campaign="" data-uuid="6801883189102050284" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date first"> <a href="https://lambda00.hatenablog.com/archive/2024/05/01" rel="nofollow"> <time datetime="2024-05-01T02:08:53Z" title="2024-05-01T02:08:53Z"> <span class="date-year">2024</span><span class="hyphen">-</span><span class="date-month">05</span><span class="hyphen">-</span><span class="date-day">01</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://lambda00.hatenablog.com/entry/2024/05/01/110853" class="entry-title-link bookmark">「Androidアプリ開発の教科書 第3版 Java対応」を読んだ</a> </h1> <div class="entry-categories categories"> <a href="https://lambda00.hatenablog.com/archive/category/%E5%8F%82%E8%80%83%E6%9B%B8" class="entry-category-link category-参考書">参考書</a> </div> </header> <div class="entry-content hatenablog-entry"> <p>こんにちは</p> <p>「基礎&応用力をしっかり育成!<a class="keyword" href="https://d.hatena.ne.jp/keyword/Android">Android</a><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%D7%A5%EA%B3%AB%C8%AF">アプリ開発</a>の教科書 第3版 <a class="keyword" href="https://d.hatena.ne.jp/keyword/Java">Java</a>対応 なんちゃって開発者にならないための実践ハンズオン」を読んだ備忘録です。</p> <ul class="table-of-contents"> <li><a href="#Amazon">Amazon</a></li> <li><a href="#開発環境">開発環境</a></li> <li><a href="#メモ">メモ</a><ul> <li><a href="#第1章-Androidアプリ開発環境の作成">第1章 Androidアプリ開発環境の作成</a></li> <li><a href="#第2章-はじめてのAndroidアプリ作成">第2章 はじめてのAndroidアプリ作成</a></li> <li><a href="#第3章-ビューとアクティビティ">第3章 ビューとアクティビティ</a></li> <li><a href="#第4章-イベントとリスナ">第4章 イベントとリスナ</a></li> <li><a href="#第8章-オプションメニューとコンテキストメニュー">第8章 オプションメニューとコンテキストメニュー</a></li> <li><a href="#第9章-フラグメント">第9章 フラグメント</a></li> <li><a href="#第10章-データベースアクセス">第10章 データベースアクセス</a></li> <li><a href="#第11章-非同期処理とWeb-API連携">第11章 非同期処理とWeb API連携</a></li> </ul> </li> <li><a href="#感想">感想</a></li> </ul> <hr /> <h3 id="Amazon"><a class="keyword" href="https://d.hatena.ne.jp/keyword/Amazon">Amazon</a></h3> <p>Kotlin版も言語解説書ではないので,パッと見た感じは内容は大きく違いませんでした。<br/> あくまで<a class="keyword" href="https://d.hatena.ne.jp/keyword/Android%20Studio">Android Studio</a>を利用した<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%D7%A5%EA%B3%AB%C8%AF">アプリ開発</a>についての入門書なので,言語解説は主題ではないので気を付けてね。<br/> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/4798176311?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/51W9bmoFXgL._SL500_.jpg" class="hatena-asin-detail-image" alt="基礎&応用力をしっかり育成!Androidアプリ開発の教科書 第3版 Java対応 なんちゃって開発者にならないための実践ハンズオン" title="基礎&応用力をしっかり育成!Androidアプリ開発の教科書 第3版 Java対応 なんちゃって開発者にならないための実践ハンズオン"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/4798176311?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">基礎&応用力をしっかり育成!Androidアプリ開発の教科書 第3版 Java対応 なんちゃって開発者にならないための実践ハンズオン</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/WINGS%A5%D7%A5%ED%A5%B8%A5%A7%A5%AF%A5%C8%20%F3%EE%C6%A3%20%BF%B7%BB%B0" class="keyword">WINGSプロジェクト 齊藤 新三</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%E6%C6%B1%CB%BC%D2">翔泳社</a></li></ul><a href="https://www.amazon.co.jp/dp/4798176311?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div> <div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B0BN9VMS9M?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/514+3QBAywL._SL500_.jpg" class="hatena-asin-detail-image" alt="基礎&応用力をしっかり育成!Androidアプリ開発の教科書 第3版 Kotlin対応 なんちゃって開発者にならないための実践ハンズオン" title="基礎&応用力をしっかり育成!Androidアプリ開発の教科書 第3版 Kotlin対応 なんちゃって開発者にならないための実践ハンズオン"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B0BN9VMS9M?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">基礎&応用力をしっかり育成!Androidアプリ開発の教科書 第3版 Kotlin対応 なんちゃって開発者にならないための実践ハンズオン</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/WINGS%A5%D7%A5%ED%A5%B8%A5%A7%A5%AF%A5%C8%20%F3%EE%C6%A3%20%BF%B7%BB%B0" class="keyword">WINGSプロジェクト 齊藤 新三</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%E6%C6%B1%CB%BC%D2">翔泳社</a></li></ul><a href="https://www.amazon.co.jp/dp/B0BN9VMS9M?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <h3 id="開発環境">開発環境</h3> <p>本書は2023年1月24日発行の初版で,<a class="keyword" href="https://d.hatena.ne.jp/keyword/Android%20Studio">Android Studio</a> Dolphin(2021.3.1)を利用する前提で構成されています。</p> <p>自分は現在(2024/04/28)の最新と思わしき安定バージョンを利用しました。<br/> 特に理由がない限り,本書指定のバージョンを利用した方が良いと思います。</p> <blockquote><p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Android%20Studio">Android Studio</a> Iguana | 2023.2.1 Patch 1<br/> Build #AI-232.10300.40.2321.11567975, built on March 13, 2024<br/> Runtime version: 17.0.9+0--11185874 <a class="keyword" href="https://d.hatena.ne.jp/keyword/amd64">amd64</a><br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/VM">VM</a>: OpenJDK 64-Bit Server <a class="keyword" href="https://d.hatena.ne.jp/keyword/VM">VM</a> by JetBrains s.r.o.<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/Windows">Windows</a> 11.0<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/GC">GC</a>: G1 Young Generation, G1 Old Generation<br/> Memory: 2048M<br/> Cores: 16<br/> Registry:<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/ide">ide</a>.experimental.ui=true</p> <p>Non-Bundled Plugins:<br/> IdeaVIM (2.7.5)</p></blockquote> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/API">API</a>レベルは34(<a class="keyword" href="https://d.hatena.ne.jp/keyword/Android">Android</a> 14.0)を利用しました。<br/> どうやら現最新はAPILevel35らしいですね。</p> <hr /> <h3 id="メモ">メモ</h3> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Android">Android</a>アプリの開発自体はやったことがあるので,斜め読み気味。</p> <h4 id="第1章-Androidアプリ開発環境の作成">第1章 <a class="keyword" href="https://d.hatena.ne.jp/keyword/Android">Android</a><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%D7%A5%EA%B3%AB%C8%AF">アプリ開発</a>環境の作成</h4> <ul> <li><p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Android">Android</a> OSの構造についての解説<br/> ざっくりだけど説明されているのが良いね。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdeveloper.android.com%2Fguide%2Fplatform%3Fhl%3Dja" title="プラットフォーム アーキテクチャ  |  Platform  |  Android Developers" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://developer.android.com/guide/platform?hl=ja">developer.android.com</a></cite></p></li> <li><p>インストール先のパス<br/> 漢字が使われているとだるいって。<br/> この辺の地雷について書かれていると好感度が上がるね。</p></li> </ul> <h4 id="第2章-はじめてのAndroidアプリ作成">第2章 はじめての<a class="keyword" href="https://d.hatena.ne.jp/keyword/Android">Android</a>アプリ作成</h4> <ul> <li><p>New ProjectのEmpty Activityに言語選択が無い<br/> 書籍通りに「Empty Views」を選択したらKotlinにされたので「Empty Views Activity」を選択したらLanguageに<a class="keyword" href="https://d.hatena.ne.jp/keyword/Java">Java</a>が出てきた。<br/> この手の書籍は混乱を避ける為,古くても開発環境は絶対に合わせた方と改めて感じた。<br/> <span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lambda410/20240428/20240428153832.png" width="902" height="651" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p></li> <li><p>strings.<a class="keyword" href="https://d.hatena.ne.jp/keyword/xml">xml</a><br/> 多言語対応</p></li> </ul> <h4 id="第3章-ビューとアクティビティ">第3章 ビューとアクティビティ</h4> <ul> <li><p>dp (Density-Independent Pixel)<br/> 密度依存<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D4%A5%AF%A5%BB%A5%EB">ピクセル</a><br/> ビューやビューグループのサイズ設定</p></li> <li><p>sp (Scale-Independent Pixel)<br/> スケール非依存<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D4%A5%AF%A5%BB%A5%EB">ピクセル</a><br/> テキストサイズの設定</p></li> </ul> <h4 id="第4章-イベントとリスナ">第4章 イベントとリスナ</h4> <ul> <li>Listener<br/> イベント検出を行うもの。</li> </ul> <h4 id="第8章-オプションメニューとコンテキストメニュー">第8章 オプションメニューと<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B3%A5%F3%A5%C6%A5%AD%A5%B9%A5%C8%A5%E1%A5%CB%A5%E5%A1%BC">コンテキストメニュー</a></h4> <ul> <li>オーバーフローメニュー<br/> 縦丸三つのアレ</li> </ul> <h4 id="第9章-フラグメント">第9章 フラグメント</h4> <p>画面の一部を独立ブロックとして捉える機能<br/> 画面サイズ毎に画面構成を変えるときに利用する。</p> <h4 id="第10章-データベースアクセス">第10章 データベースアクセス</h4> <ul> <li><p><a class="keyword" href="https://d.hatena.ne.jp/keyword/SQLite">SQLite</a><br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/Android%20Studio">Android Studio</a>では<a class="keyword" href="https://d.hatena.ne.jp/keyword/SQLite">SQLite</a>が対応済み。</p></li> <li><p>Room<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/SQLite">SQLite</a>を使いやすくしたものかな?<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-compose-persisting-data-room%3Fhl%3Dja%230" title="Room を使用してデータを永続化する  |  Android Developers" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://developer.android.com/codelabs/basic-android-kotlin-compose-persisting-data-room?hl=ja#0">developer.android.com</a></cite></p></li> </ul> <h4 id="第11章-非同期処理とWeb-API連携">第11章 非同期処理とWeb <a class="keyword" href="https://d.hatena.ne.jp/keyword/API">API</a>連携</h4> <ul> <li>ワーカースレッド<br/> UIスレッド,メインスレッド,ワーカースレッドとか言われているやつ。<br/> 割と一般用語だったんだね。</li> </ul> <hr /> <h3 id="感想">感想</h3> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Android">Android</a><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%D7%A5%EA%B3%AB%C8%AF">アプリ開発</a>の基本がほとんど網羅しているのではないか?と思えるぐらいの内容でした。</p> <p>時間はかなりかかると思いますが,本書の内容を順番に進めることで確実に<a class="keyword" href="https://d.hatena.ne.jp/keyword/Android">Android</a><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%D7%A5%EA%B3%AB%C8%AF">アプリ開発</a>の基礎は身につくと思います。<br/> また,<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%D7%A5%EA%B3%AB%C8%AF">アプリ開発</a>中のサンプルコードとしても利用できるので,<a class="keyword" href="https://d.hatena.ne.jp/keyword/Google">Google</a>検索より内容がまとまっている本書の方が便利だなと感じました。</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Android">Android</a>アプリを開発したくなる一冊でした。</p> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/%E6%8A%80%E8%A1%93%E6%9B%B8" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">技術書</span> </a> </span> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{&quot;area&quot;: &quot;finish_reading&quot;}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="lambda410" >lambda410</span></span> <span class="entry-footer-time"><a href="https://lambda00.hatenablog.com/entry/2024/05/01/110853"><time data-relative datetime="2024-05-01T02:08:53Z" title="2024-05-01T02:08:53Z" class="updated">2024-05-01 11:08</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/lambda410/lambda00.hatenablog.com/subscribe?utm_source=blogs_entry_footer&amp;utm_campaign=subscribe_blog&amp;utm_medium=button"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://lambda00.hatenablog.com/entry/2024/05/01/110853" data-hatena-star-title="「Androidアプリ開発の教科書 第3版 Java対応」を読んだ" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/lambda00.hatenablog.com/entry/2024/05/01/110853" class="hatena-bookmark-button" data-hatena-bookmark-url="https://lambda00.hatenablog.com/entry/2024/05/01/110853" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://lambda00.hatenablog.com/entry/2024/05/01/110853"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?hashtags=%E6%8A%80%E8%A1%93%E6%9B%B8&amp;text=%E3%80%8CAndroid%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8+%E7%AC%AC3%E7%89%88+Java%E5%AF%BE%E5%BF%9C%E3%80%8D%E3%82%92%E8%AA%AD%E3%82%93%E3%81%A0+-+%E3%81%8A%E3%82%82%E3%81%A1%E3%82%83%E3%83%90%E3%82%B3&amp;url=https%3A%2F%2Flambda00.hatenablog.com%2Fentry%2F2024%2F05%2F01%2F110853" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <script> (valve = window.valve || []).push(function(v) { v.displayDFPSlot('google_afc_user_container_5'); }); </script> <div id="google_afc_user_container_5" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user_2nd"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> </div> <div class="comment-box js-comment-box"> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> </div> </footer> </div> </article> <article class="entry hentry test-hentry js-entry-article date-first autopagerize_page_element chars-4000 words-200 mode-markdown entry-odd" id="entry-6801883189082032184" data-keyword-campaign="" data-uuid="6801883189082032184" data-publication-type="entry"> <div class="entry-inner"> <header class="entry-header"> <div class="date entry-date first"> <a href="https://lambda00.hatenablog.com/archive/2024/02/10" rel="nofollow"> <time datetime="2024-02-10T08:42:30Z" title="2024-02-10T08:42:30Z"> <span class="date-year">2024</span><span class="hyphen">-</span><span class="date-month">02</span><span class="hyphen">-</span><span class="date-day">10</span> </time> </a> </div> <h1 class="entry-title"> <a href="https://lambda00.hatenablog.com/entry/2024/02/10/174230" class="entry-title-link bookmark">「知識ゼロから学ぶソフトウェアプロジェクト管理」を読んだ</a> </h1> <div class="entry-categories categories"> <a href="https://lambda00.hatenablog.com/archive/category/%E5%8F%82%E8%80%83%E6%9B%B8" class="entry-category-link category-参考書">参考書</a> </div> </header> <div class="entry-content hatenablog-entry"> <p>こんにちは</p> <p>「知識ゼロから学ぶソフトウェアプロジェクト管理」を読んだ感想です。</p> <ul class="table-of-contents"> <li><a href="#書籍">書籍</a></li> <li><a href="#対象">対象</a></li> <li><a href="#メモ">メモ</a><ul> <li><a href="#第1章-まえがき">第1章 まえがき</a></li> <li><a href="#第2章-典型的な失敗例">第2章 典型的な失敗例</a></li> <li><a href="#第3章-人が全て">第3章 人が全て</a></li> <li><a href="#第4章-はじめよければ全てよし">第4章 はじめよければ全てよし</a></li> <li><a href="#第5章-ちゃんと設計しろって言うけど">第5章 ちゃんと設計しろって言うけど</a></li> <li><a href="#第6章-オーソドックスかアジャイルか">第6章 オーソドックスか?アジャイルか?</a></li> <li><a href="#第7章-PMBOK使えばいいの">第7章 PMBOK使えばいいの?</a></li> <li><a href="#第8章-それでもプロジェクトマネージメントが-うまくいかない理由">第8章 それでもプロジェクトマネージメントが うまくいかない理由</a></li> </ul> </li> <li><a href="#感想">感想</a></li> </ul> <hr /> <h3 id="書籍">書籍</h3> <p><div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/dp/B00ESXY9GQ?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="hatena-asin-detail-image-link" target="_blank" rel="noopener"><img src="https://m.media-amazon.com/images/I/5111hgSPj8L._SL500_.jpg" class="hatena-asin-detail-image" alt="知識ゼロから学ぶソフトウェアプロジェクト管理" title="知識ゼロから学ぶソフトウェアプロジェクト管理"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/dp/B00ESXY9GQ?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" target="_blank" rel="noopener">知識ゼロから学ぶソフトウェアプロジェクト管理</a></p><ul class="hatena-asin-detail-meta"><li><span class="hatena-asin-detail-label">作者:</span><a href="https://d.hatena.ne.jp/keyword/%BE%A1%CF%A4%C3%C8%C0%B8" class="keyword">勝呂暖生</a></li><li><a class="keyword" href="https://d.hatena.ne.jp/keyword/%E6%C6%B1%CB%BC%D2">翔泳社</a></li></ul><a href="https://www.amazon.co.jp/dp/B00ESXY9GQ?tag=lambda00haten-22&amp;linkCode=ogi&amp;th=1&amp;psc=1" class="asin-detail-buy" target="_blank" rel="noopener">Amazon</a></div></div></p> <h3 id="対象">対象</h3> <ul> <li>エンジニア視点のソフトウェア開発におけるプロジェクト管理について学びたい人</li> <li>ソフトウェア開発の体制を改善したいけど何をすれば良いか分からない人</li> </ul> <p>本書は「エンジニア」寄りの視点からソフトウェア開発におけるプロジェクト管理について,筆者の<a class="keyword" href="https://d.hatena.ne.jp/keyword/%B7%D0%B8%B3%C3%CC">経験談</a>と各種参考文献を交えて解説しています。<br/> ノウハウ集的な内容であり,プロジェクト管理という正解を出しにくい内容についての本ですが,砕けた文体なのもあって比較的楽しく読み進めることが出来ました。</p> <p>自組織の体制について見直したい人向けの本だと感じます。</p> <hr /> <h3 id="メモ">メモ</h3> <p>最早,メモというより個人の感想です。</p> <p>個人的に本書が伝えたい内容は以下の3点だと思った。</p> <ul> <li>「時間が無い」を言い訳に問題から目を背けるな</li> <li>ソフトウェア開発では、残業と人員増加はよく考えてから行え</li> <li>ソフトウェア開発手法の正解は分からないが、失敗しないようにある程度の制御は出来る</li> </ul> <h4 id="第1章-まえがき">第1章 まえがき</h4> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/PMBOK">PMBOK</a>: 専門家がプロジェクト成功への方法論やスキルなどをまとめたもの<br/> <a class="keyword" href="https://d.hatena.ne.jp/keyword/CMMI">CMMI</a>: <a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B7%A5%B9%A5%C6%A5%E0%B3%AB%C8%AF">システム開発</a>組織のプロセス成熟度をモデル化したもの</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/PMBOK">PMBOK</a>とか<a class="keyword" href="https://d.hatena.ne.jp/keyword/CMMI">CMMI</a>などが話題になるけど、登場当初と今を比較すると内容が膨大になっており、理解した頃には古い情報になっているかもしれない。<br/>  <a class="keyword" href="https://d.hatena.ne.jp/keyword/IT%B5%BB%BD%D1">IT技術</a>だけでなく他分野にも同じ事が言えると思う。<br/>  知識や事柄を表面的に理解するだけでなく、それが誕生するまでの背景や思想を学ぶことで自分の経験に活かしていきたいね。</p> <p>時間が無い・忙しいを言い訳にして、改善する事を怠り、同じ過ちを繰返す。<br/>  自分も能力不足やミスした時の言い訳、面倒事を避けるために「時間が無い」と言うことがあるので、マジで便利な言葉だと思う。<br/>  時間が無いのは皆同じなので、言わないように反省する。</p> <h4 id="第2章-典型的な失敗例">第2章 典型的な失敗例</h4> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C7%A5%F3%A5%D0%A1%BC">デンバー</a>空港、<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A4%DF%A4%BA%A4%DB%B6%E4%B9%D4">みずほ銀行</a>、アリアン5ロケットのソフトウェア問題について<br/>  当事者になりたくない内容なので、賢者になるために歴史を学びたいと思う。<br/>  内容と直接関係ないけど、結果論で放言高論しすぎないようにしたいと感じた。</p> <p>モチベーションの欠如は事故を引き起こしやすい<br/>  その通りだと思うけど、人間なので難しい問題だとも感じる。<br/>  仕事に対する意識の差は、<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B5%A5%D3%BB%C4">サビ残</a>やハラスメントを引き起こしやすいしね。</p> <h4 id="第3章-人が全て">第3章 人が全て</h4> <p>日本と海外のIT企業を比較して、日本企業の生産効率が悪い理由が述べられている。<br/>  プロジェクトがうまくいかなかった例を提示し、その原因と解決策について述べている点は良かったが、エンジニア視点の話の展開の仕方に違和感が感じた。</p> <p>日本と海外のIT企業を比較して、日本のソフトウェア開発体制が如何に悪いかが述べられている。<br/>  ただ、<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%DE%A5%A4%A5%AF%A5%ED%A5%BD%A5%D5%A5%C8">マイクロソフト</a>を比較対象として、日本のIT企業の開発体制は遅れているって言うのはどうなの...?って感じた。<br/>  労働環境だけで言えば、海外のゲーム開発には「クランチ」と呼ばれる文化があり、これは日本企業以上に過酷だと思う(反例を上げることに意味はないけどね)。<br/>  まぁ、日本企業が遅れているのは正しい気がする。<br/>  お持ち帰り検討が多すぎて判断が遅いし、効率化を図ろうとすると「仕事が無くなる」って文句言う人もいるしね(????)<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCrunch_(video_games)" title="Crunch (video games) - Wikipedia" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://en.wikipedia.org/wiki/Crunch_(video_games)">en.wikipedia.org</a></cite><br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwired.jp%2F2020%2F01%2F29%2Fbig-union-make-videogame-workers%2F" title="ゲーム業界には「普通の労働環境」が必要だ──米国で組合結成の動きが加速" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://wired.jp/2020/01/29/big-union-make-videogame-workers/">wired.jp</a></cite></p> <h4 id="第4章-はじめよければ全てよし">第4章 はじめよければ全てよし</h4> <p>エンジニア的には仕様変更は起きて欲しくない<br/>  顧客が仕様変更を求めてる時に「やりたくない」とは言えないので、なるべくプロジェクトの前半で起こるように動く。<br/>  <a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%B8%A5%E3%A5%A4%A5%EB">アジャイル</a>開発を取り入れるなど。</p> <p>テスト可能な要求は<a class="keyword" href="https://d.hatena.ne.jp/keyword/UML">UML</a>で書き起こせる状態に近い<br/>  そうだなと強く思うけど、そこまで整ってる要求仕様は見たことない...</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D1%A5%C8%A5%EA%A5%AA%A5%C3%A5%C8">パトリオット</a>: ミサイル迎撃システム</p> <h4 id="第5章-ちゃんと設計しろって言うけど">第5章 ちゃんと設計しろって言うけど</h4> <p>要求仕様書は詳細に記述しよう<br/>  ソフトウェアの動作だけ、UIの概要図を載せただけはただの概要書だと思う。<br/>  無駄なコミュニケーションが増える要因だし、仕様変更時の対応コストも大きいので可能な限り正確に記述してほしいね。<br/>  (急な仕様変更で今まで書いた労力が無駄になるから書きたくない気持ちも分かるけどね)</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C7%A5%B6%A5%A4%A5%F3%A5%D1%A5%BF%A1%BC%A5%F3">デザインパターン</a><br/>  共通理解が進みやすいので、<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a>の保守性も上がりやすい気がする。</p> <p>もうバッファオーバフローは理解するべき技術で<span style="color: #d32f2f"><strong>も</strong></span>ない<br/>  そうかもしれないけど、ちょっとここは引っかかる。</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Microsoft">Microsoft</a>がセキュリティと開発ライフサイクルについてのア<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A4%A5%C7%A5%A2">イデア</a>をまとめている<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Fcompliance%2Fassurance%2Fassurance-microsoft-security-development-lifecycle" title="Microsoft セキュリティ開発ライフサイクル (SDL) - Microsoft Service Assurance" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://learn.microsoft.com/ja-jp/compliance/assurance/assurance-microsoft-security-development-lifecycle">learn.microsoft.com</a></cite></p> <p>McCabe数: 循環的複雑度<br/>  サイ<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%AF%A5%ED%A5%DE%A5%C6%A5%A3">クロマティ</a>ック複雑度のことっぽい。<br/>  Thomas McCabeが開発した。</p> <h4 id="第6章-オーソドックスかアジャイルか">第6章 オーソドックスか?<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%B8%A5%E3%A5%A4%A5%EB">アジャイル</a>か?</h4> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A6%A5%A9%A1%BC%A5%BF%A1%BC%A5%D5%A5%A9%A1%BC%A5%EB">ウォーターフォール</a>は前工程に問題が無いことが期待されている<br/>  問題が無いのが一番だが、必要な手戻りは行うべきであり、これは<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%B8%A5%E3%A5%A4%A5%EB">アジャイル</a>開発だろうが同じ。</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%E9%A5%E0">スクラム</a>におけるニワトリとブタの寓話<br/>  適切な場面では鳴いたほうが良いが、思い付きを鳴きまくられるとミンチにしたくなる。</p> <p>自称<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%B8%A5%E3%A5%A4%A5%EB">アジャイル</a>ほどテストしない<br/>  <a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%B8%A5%E3%A5%A4%A5%EB">アジャイル</a>開発とは...????ってなるよね。<br/>  必ずしも開発手法に即する必要はないけど、やらない理由を探すのは良くないよね。</p> <p>可能ならばテストはした方が良い<br/>  当たり前だけど、気分.コスト的に中々出来ないよね。<br/>  未来への先行投資だと思って、今後は可能な限りやっていきたい(自戒の念)</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a>は綺麗な方が良い<br/>  何を基準に綺麗かを判断するのが難しいけど、個人的にはコーディング規約準拠よりも処理の簡潔さだと思う。<br/>  if文で全列挙するより、条件に潜む共通事項を見つけ出し、それを簡素な処理にまとめられる能力かな...?<br/>  完全な偏見だけど、共通事項を見つけ出せる人のプログラムは、スコープが浅く,単純かつ合理的で芸術性が高いように感じる。</p> <h4 id="第7章-PMBOK使えばいいの">第7章 <a class="keyword" href="https://d.hatena.ne.jp/keyword/PMBOK">PMBOK</a>使えばいいの?</h4> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/Microsoft">Microsoft</a> Project<br/>  プロジェクト管理ツールで、Officeとは別形態っぽい。<br/>  パッと見は使いやすそうだけど、Office対象外、<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%D7%A5%E9%A5%A4%A5%A8%A5%BF%A5%EA">プロプライエタリ</a>な点が気になる。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.microsoft.com%2Fja-jp%2Fmicrosoft-365%2Fproject%2Fproject-management-software" title="プロジェクト管理ソフトウェア | Microsoft Project" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.microsoft.com/ja-jp/microsoft-365/project/project-management-software">www.microsoft.com</a></cite></p> <p>1日の作業内容を円グラフで可視化してみる<br/>  何も決まらない無駄な会議の多さに驚愕できるかも。<br/>  画面上の文章を読み上げるだけの会議は何なんだろうね。(おっさん版の絵本読み聞かせ???)</p> <p>人件費VS設備費<br/>  ソフトウェア開発における費用の大部分は人件費であり、コスト削減の最適手法は生産性の低いエンジニアを解雇すること(<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%EC%A5%A4%A5%AA%A5%D5">レイオフ</a>)。<br/>  海外企業は気軽に<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%EC%A5%A4%A5%AA%A5%D5">レイオフ</a>するイメージがある。<br/>  日本企業は気軽に解雇出来ない点では安心だけど、組織の腐敗が進みやすい点が明確な欠点だね。</p> <p>プログラミングの開発コスト<br/>  プログラミングのコストより、設計やテスト、<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%DE%A5%CD">プロマネ</a>のコストの方が高い。<br/>  プログラミングに関する事を優先して勉強する傾向にあるけど、本当に重要なのはそれ以外かもね。</p> <p>週40時間労働でスケジュールに余裕がある場合はバグが少ない<br/>  分かりきった事実だが、何故か出来ない。悲しいね。</p> <h4 id="第8章-それでもプロジェクトマネージメントが-うまくいかない理由">第8章 それでもプロジェクトマネージメントが うまくいかない理由</h4> <p>オフショアリング<br/>  業務の一部を海外に移転、委託などすること。</p> <p>日本人はバグ埋め込み率が低く、<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a>の記述速度が早い傾向にある<br/>  米国<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DE">プログラマ</a>は革新的な事に重きを置く傾向にあるらしい。<br/>  海外の文化的背景について理解できれば、この辺りの価値観の違いも理解できるかもね。</p> <p>プロジェクト成功の鍵は人<br/>  人の能力差が仕事の出来を左右するのは残酷な事実だよね。<br/>  採用担当者は相手の潜在能力と性格を見抜いてほしい。</p> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%C0%A5%A4%A5%D0%A1%BC%A5%B7%A5%C6%A5%A3">ダイバーシティ</a><br/>  色々な属性の人から考え方を学ぶ。<br/>  確証バイアスに陥らない為にも有効だと強く感じる。</p> <p>普段は週40時間労働、出荷直前に10%のプレッシャーを与えるのが良い<br/>  プレッシャーは少しあったほうが効率が良くなるのも理解できる。<br/>  ただ、残業はマジで辞めてほしい。意味もなく残響する人も悪です。</p> <p>週末は複雑な仕事をしない方が良い<br/>  身が入らないからね。気持ち的には土曜日だし。<br/>  自分もいつもの5倍マシ位やる気がない。</p> <p>ポストモーテム<br/>  「死後の」とかの意味があるらしい。<br/>  ソフトウェア開発では検死である。死斑もよく確認しよう。</p> <p>ソフトウェアの世界<br/>  生存者バイアスで語られがち</p> <hr /> <h3 id="感想">感想</h3> <p><a class="keyword" href="https://d.hatena.ne.jp/keyword/PMBOK">PMBOK</a>/<a class="keyword" href="https://d.hatena.ne.jp/keyword/CMMI">CMMI</a>/<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%A2%A5%B8%A5%E3%A5%A4%A5%EB">アジャイル</a>開発について、エンジニア視点で解説している本を探している時に見つけました。</p> <p>ソフトウェア開発におけるベストプ<a class="keyword" href="https://d.hatena.ne.jp/keyword/%A5%E9%A5%AF">ラク</a>ティスについて、大量の参考文献と筆者の<a class="keyword" href="https://d.hatena.ne.jp/keyword/%B7%D0%B8%B3%C3%CC">経験談</a>から語られており、自分の求めていた教科書的な内容(用語説明的なやつ)とは異なりましたが読んで良かったと感じました。<br/> 中間管理職でも無い一般従業員の自分が実践出来る事は多くないですが、可能な範囲で実践していきたいと思います。</p> <p>今度はPM視点のソフトウェア開発について解説している書籍も読んでみたいね。</p> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> <span class="entry-tag"> <a href="https://d.hatena.ne.jp/keyword/%E6%8A%80%E8%A1%93%E6%9B%B8" class="entry-tag-link"> <span class="entry-tag-icon">#</span><span class="entry-tag-label">技術書</span> </a> </span> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{&quot;area&quot;: &quot;finish_reading&quot;}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="lambda410" >lambda410</span></span> <span class="entry-footer-time"><a href="https://lambda00.hatenablog.com/entry/2024/02/10/174230"><time data-relative datetime="2024-02-10T08:42:30Z" title="2024-02-10T08:42:30Z" class="updated">2024-02-10 17:42</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/lambda410/lambda00.hatenablog.com/subscribe?utm_source=blogs_entry_footer&amp;utm_medium=button&amp;utm_campaign=subscribe_blog"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://lambda00.hatenablog.com/entry/2024/02/10/174230" data-hatena-star-title="「知識ゼロから学ぶソフトウェアプロジェクト管理」を読んだ" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/lambda00.hatenablog.com/entry/2024/02/10/174230" class="hatena-bookmark-button" data-hatena-bookmark-url="https://lambda00.hatenablog.com/entry/2024/02/10/174230" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://lambda00.hatenablog.com/entry/2024/02/10/174230"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://x.com/intent/tweet?hashtags=%E6%8A%80%E8%A1%93%E6%9B%B8&amp;text=%E3%80%8C%E7%9F%A5%E8%AD%98%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E5%AD%A6%E3%81%B6%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E7%AE%A1%E7%90%86%E3%80%8D%E3%82%92%E8%AA%AD%E3%82%93%E3%81%A0+-+%E3%81%8A%E3%82%82%E3%81%A1%E3%82%83%E3%83%90%E3%82%B3&amp;url=https%3A%2F%2Flambda00.hatenablog.com%2Fentry%2F2024%2F02%2F10%2F174230" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <script> (valve = window.valve || []).push(function(v) { v.displayDFPSlot('google_afc_user_container_6'); }); </script> <div id="google_afc_user_container_6" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user_2nd"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> </div> <div class="comment-box js-comment-box"> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> </div> </footer> </div> </article> <!-- rakuten_ad_target_end --> <!-- google_ad_section_end --> <div class="pager autopagerize_insert_before"> <span class="pager-next"> <a href="https://lambda00.hatenablog.com/?page=1707554550" rel="next">次のページ</a> </span> </div> </div> </div> <aside id="box1"> <div id="box1-inner"> </div> </aside> </div><!-- #wrapper --> <aside id="box2"> <div id="box2-inner"> <div class="hatena-module hatena-module-profile"> <div class="hatena-module-title"> プロフィール </div> <div class="hatena-module-body"> <a href="https://lambda00.hatenablog.com/about" class="profile-icon-link"> <img src="https://cdn.profile-image.st-hatena.com/users/lambda410/profile.png?1683441613" alt="id:lambda410" class="profile-icon" /> </a> <span class="id"> <a href="https://lambda00.hatenablog.com/about" class="hatena-id-link"><span data-load-nickname="1" data-user-name="lambda410">id:lambda410</span></a> </span> <div class="hatena-follow-button-box btn-subscribe js-hatena-follow-button-box" > <a href="#" class="hatena-follow-button js-hatena-follow-button"> <span class="subscribing"> <span class="foreground">読者です</span> <span class="background">読者をやめる</span> </span> <span class="unsubscribing" data-track-name="profile-widget-subscribe-button" data-track-once> <span class="foreground">読者になる</span> <span class="background">読者になる</span> </span> </a> <div class="subscription-count-box js-subscription-count-box"> <i></i> <u></u> <span class="subscription-count js-subscription-count"> </span> </div> </div> <div class="profile-about"> <a href="https://lambda00.hatenablog.com/about">このブログについて</a> </div> </div> </div> <div class="hatena-module hatena-module-search-box"> <div class="hatena-module-title"> 検索 </div> <div class="hatena-module-body"> <form class="search-form" role="search" action="https://lambda00.hatenablog.com/search" method="get"> <input type="text" name="q" class="search-module-input" value="" placeholder="記事を検索" required> <input type="submit" value="検索" class="search-module-button" /> </form> </div> </div> <div class="hatena-module hatena-module-links"> <div class="hatena-module-title"> リンク </div> <div class="hatena-module-body"> <ul class="hatena-urllist"> <li> <a href="https://hatena.blog/">はてなブログ</a> </li> <li> <a href="https://hatena.blog/guide?via=200109">ブログをはじめる</a> </li> <li> <a href="http://blog.hatenablog.com">週刊はてなブログ</a> </li> <li> <a href="https://hatena.blog/guide/pro">はてなブログPro</a> </li> </ul> </div> </div> <div class="hatena-module hatena-module-recent-entries "> <div class="hatena-module-title"> <a href="https://lambda00.hatenablog.com/archive"> 最新記事 </a> </div> <div class="hatena-module-body"> <ul class="recent-entries hatena-urllist "> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://lambda00.hatenablog.com/entry/2025/01/25/172740" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title">「TCP/IPソケットプログラミング C言語編」を読んだ</a> </div> </li> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://lambda00.hatenablog.com/entry/2024/12/31/201944" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title">論文・レポート用の環境を整える:Windows</a> </div> </li> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://lambda00.hatenablog.com/entry/2024/10/04/181731" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title">Godot v4.3: スプライトにアウトラインをつける(2D)</a> </div> </li> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://lambda00.hatenablog.com/entry/2024/09/14/162819" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title">最小構成でC++環境を構築する (Windows11)</a> </div> </li> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://lambda00.hatenablog.com/entry/2024/05/26/133725" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title">応用情報技術者試験を受けた: 令和6年春季試験</a> </div> </li> </ul> </div> </div> <div class="hatena-module hatena-module-archive" data-archive-type="default" data-archive-url="https://lambda00.hatenablog.com/archive"> <div class="hatena-module-title"> <a href="https://lambda00.hatenablog.com/archive">月別アーカイブ</a> </div> <div class="hatena-module-body"> <ul class="hatena-urllist"> <li class="archive-module-year archive-module-year-hidden" data-year="2025"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://lambda00.hatenablog.com/archive/2025" class="archive-module-year-title archive-module-year-2025"> 2025 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2025/01" class="archive-module-month-title archive-module-month-2025-1"> 2025 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2024"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://lambda00.hatenablog.com/archive/2024" class="archive-module-year-title archive-module-year-2024"> 2024 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2024/12" class="archive-module-month-title archive-module-month-2024-12"> 2024 / 12 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2024/10" class="archive-module-month-title archive-module-month-2024-10"> 2024 / 10 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2024/09" class="archive-module-month-title archive-module-month-2024-9"> 2024 / 9 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2024/05" class="archive-module-month-title archive-module-month-2024-5"> 2024 / 5 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2024/02" class="archive-module-month-title archive-module-month-2024-2"> 2024 / 2 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2024/01" class="archive-module-month-title archive-module-month-2024-1"> 2024 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2023"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://lambda00.hatenablog.com/archive/2023" class="archive-module-year-title archive-module-year-2023"> 2023 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2023/12" class="archive-module-month-title archive-module-month-2023-12"> 2023 / 12 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2023/09" class="archive-module-month-title archive-module-month-2023-9"> 2023 / 9 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2023/08" class="archive-module-month-title archive-module-month-2023-8"> 2023 / 8 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2023/07" class="archive-module-month-title archive-module-month-2023-7"> 2023 / 7 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2023/06" class="archive-module-month-title archive-module-month-2023-6"> 2023 / 6 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2023/05" class="archive-module-month-title archive-module-month-2023-5"> 2023 / 5 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2023/04" class="archive-module-month-title archive-module-month-2023-4"> 2023 / 4 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2023/03" class="archive-module-month-title archive-module-month-2023-3"> 2023 / 3 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2022"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://lambda00.hatenablog.com/archive/2022" class="archive-module-year-title archive-module-year-2022"> 2022 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2022/12" class="archive-module-month-title archive-module-month-2022-12"> 2022 / 12 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2022/11" class="archive-module-month-title archive-module-month-2022-11"> 2022 / 11 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2022/08" class="archive-module-month-title archive-module-month-2022-8"> 2022 / 8 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2022/07" class="archive-module-month-title archive-module-month-2022-7"> 2022 / 7 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2022/01" class="archive-module-month-title archive-module-month-2022-1"> 2022 / 1 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2021"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://lambda00.hatenablog.com/archive/2021" class="archive-module-year-title archive-module-year-2021"> 2021 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2021/12" class="archive-module-month-title archive-module-month-2021-12"> 2021 / 12 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2021/11" class="archive-module-month-title archive-module-month-2021-11"> 2021 / 11 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2021/10" class="archive-module-month-title archive-module-month-2021-10"> 2021 / 10 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2021/09" class="archive-module-month-title archive-module-month-2021-9"> 2021 / 9 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2021/08" class="archive-module-month-title archive-module-month-2021-8"> 2021 / 8 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2021/06" class="archive-module-month-title archive-module-month-2021-6"> 2021 / 6 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2021/05" class="archive-module-month-title archive-module-month-2021-5"> 2021 / 5 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2021/04" class="archive-module-month-title archive-module-month-2021-4"> 2021 / 4 </a> </li> </ul> </li> <li class="archive-module-year archive-module-year-hidden" data-year="2020"> <div class="archive-module-button"> <span class="archive-module-hide-button">▼</span> <span class="archive-module-show-button">▶</span> </div> <a href="https://lambda00.hatenablog.com/archive/2020" class="archive-module-year-title archive-module-year-2020"> 2020 </a> <ul class="archive-module-months"> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2020/09" class="archive-module-month-title archive-module-month-2020-9"> 2020 / 9 </a> </li> <li class="archive-module-month"> <a href="https://lambda00.hatenablog.com/archive/2020/08" class="archive-module-month-title archive-module-month-2020-8"> 2020 / 8 </a> </li> </ul> </li> </ul> </div> </div> </div> </aside> </div> </div> </div> </div> <footer id="footer" data-brand="hatenablog"> <div id="footer-inner"> <address class="footer-address"> <a href="https://lambda00.hatenablog.com/"> <img src="https://cdn.image.st-hatena.com/image/square/256cb9341f490c25b16901cb79bd37150095fd35/backend=imagemagick;height=128;version=1;width=128/https%3A%2F%2Fcdn.user.blog.st-hatena.com%2Fblog_custom_icon%2F157028215%2F1597135274328968" width="16" height="16" alt="おもちゃバコ"/> <span class="footer-address-name">おもちゃバコ</span> </a> </address> <p class="services"> Powered by <a href="https://hatena.blog/">Hatena Blog</a> | <a href="https://blog.hatena.ne.jp/-/abuse_report?target_url=https%3A%2F%2Flambda00.hatenablog.com%2F" class="report-abuse-link test-report-abuse-link" target="_blank">ブログを報告する</a> </p> </div> </footer> <script async src="https://s.hatena.ne.jp/js/widget/star.js"></script> <script> if (typeof window.Hatena === 'undefined') { window.Hatena = {}; } if (!Hatena.hasOwnProperty('Star')) { Hatena.Star = { VERSION: 2, }; } </script> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/sdk.js#xfbml=1&appId=719729204785177&version=v17.0"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> <div class="quote-box"> <div class="tooltip-quote tooltip-quote-stock"> <i class="blogicon-quote" title="引用をストック"></i> </div> <div class="tooltip-quote tooltip-quote-tweet js-tooltip-quote-tweet"> <a class="js-tweet-quote" target="_blank" data-track-name="quote-tweet" data-track-once> <img src="https://cdn.blog.st-hatena.com/images/admin/quote/quote-x-icon.svg?version=3334bbdf79bdea2e0ab924462aaa01" title="引用して投稿する" > </a> </div> </div> <div class="quote-stock-panel" id="quote-stock-message-box" style="position: absolute; z-index: 3000"> <div class="message-box" id="quote-stock-succeeded-message" style="display: none"> <p>引用をストックしました</p> <button class="btn btn-primary" id="quote-stock-show-editor-button" data-track-name="curation-quote-edit-button">ストック一覧を見る</button> <button class="btn quote-stock-close-message-button">閉じる</button> </div> <div class="message-box" id="quote-login-required-message" style="display: none"> <p>引用するにはまずログインしてください</p> <button class="btn btn-primary" id="quote-login-button">ログイン</button> <button class="btn quote-stock-close-message-button">閉じる</button> </div> <div class="error-box" id="quote-stock-failed-message" style="display: none"> <p>引用をストックできませんでした。再度お試しください</p> <button class="btn quote-stock-close-message-button">閉じる</button> </div> <div class="error-box" id="unstockable-quote-message-box" style="display: none; position: absolute; z-index: 3000;"> <p>限定公開記事のため引用できません。</p> </div> </div> <script type="x-underscore-template" id="js-requote-button-template"> <div class="requote-button js-requote-button"> <button class="requote-button-btn tipsy-top" title="引用する"><i class="blogicon-quote"></i></button> </div> </script> <div id="hidden-subscribe-button" style="display: none;"> <div class="hatena-follow-button-box btn-subscribe js-hatena-follow-button-box" > <a href="#" class="hatena-follow-button js-hatena-follow-button"> <span class="subscribing"> <span class="foreground">読者です</span> <span class="background">読者をやめる</span> </span> <span class="unsubscribing" data-track-name="profile-widget-subscribe-button" data-track-once> <span class="foreground">読者になる</span> <span class="background">読者になる</span> </span> </a> <div class="subscription-count-box js-subscription-count-box"> <i></i> <u></u> <span class="subscription-count js-subscription-count"> </span> </div> </div> </div> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> <script src="https://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script> <script type="text/javascript" src="https://cdn.blog.st-hatena.com/js/external/jquery.min.js?v=1.12.4&amp;version=3334bbdf79bdea2e0ab924462aaa01"></script> <script src="https://cdn.blog.st-hatena.com/js/texts-ja.js?version=3334bbdf79bdea2e0ab924462aaa01"></script> <script id="vendors-js" data-env="production" src="https://cdn.blog.st-hatena.com/js/vendors.js?version=3334bbdf79bdea2e0ab924462aaa01" crossorigin="anonymous"></script> <script id="hatenablog-js" data-env="production" src="https://cdn.blog.st-hatena.com/js/hatenablog.js?version=3334bbdf79bdea2e0ab924462aaa01" crossorigin="anonymous" data-page-id="index"></script> <script>Hatena.Diary.GlobalHeader.init()</script> <script id="valve-dmp" data-service="blog" src="https://cdn.pool.st-hatena.com/valve/dmp.js" data-test-id="dmpjs" async></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10