<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
 <channel>
  <title>語句ログ - ニュース、プログラミング、システムトレードの用語解説</title>
  <link>https://59log.com/</link>
  <description>日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説</description>
  <lastBuildDate>Sun, 03 May 2026 19:22:20 +0900</lastBuildDate>
  <pubDate>Sun, 03 May 2026 19:22:20 +0900</pubDate>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>59Tracker 3.2</generator>
  <item>
    <title>[Perl]UTF-8でエンコードされた文字の文字コードを表示するプログラム</title>
    <description>&lt;p&gt;Unicodeの文字コード表によるとUTF-8の半角英数、全角英数、半角カナ、全角カナの文字コードは以下のようになるようです。英数字の場合は半角と全角の文字がそれぞれ対応していますが、カタカナの場合は半角と全角では文字の数が違うようです。&lt;/p&gt;&lt;p&gt;半角数字:0&amp;nbsp;-&amp;nbsp;9&lt;br&gt;30&amp;nbsp;-&amp;nbsp;39&lt;br&gt;&lt;br&gt;全角数字&lt;br&gt;EFBC90&amp;nbsp;-&amp;nbsp;EFBC99&lt;br&gt;2バイト目まではEFBC&lt;br&gt;&lt;br&gt;半角アルファベット大文字:A&amp;nbsp;-&amp;nbsp;Z&lt;br&gt;41&amp;nbsp;-&amp;nbsp;5A&lt;br&gt;&lt;br&gt;全角アルファベット大文字:Ａ&amp;nbsp;-&amp;nbsp;Ｚ&lt;br&gt;EFBCA1&amp;nbsp;-&amp;nbsp;EFBCBA&lt;br&gt;2バイト目まではEFBC&lt;br&gt;&lt;br&gt;半角アルファベット小文字:a&amp;nbsp;-&amp;nbsp;z&lt;br&gt;61&amp;nbsp;-&amp;nbsp;7A&lt;br&gt;&lt;br&gt;全角アルファベット小文字:ａ&amp;nbsp;-&amp;nbsp;ｚ&lt;br&gt;EFBD80&amp;nbsp;-&amp;nbsp;EFBD9A&lt;br&gt;2バイト目まではEFBD&lt;br&gt;&lt;br&gt;半角カナ（JISカナ）&lt;br&gt;EFBDA1&amp;nbsp;-&amp;nbsp;EFBE9F&lt;br&gt;1バイト目がEFで2バイト目、3バイト目がBDA1&amp;nbsp;-&amp;nbsp;BE9Fの範囲&lt;br&gt;&lt;br&gt;全角カタカナ&lt;br&gt;E38299&amp;nbsp;-&amp;nbsp;E383BF&lt;br&gt;1バイト目がE3で2バイト目、3バイト目が82A1&amp;nbsp;-&amp;nbsp;83BFの範囲&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Unicode対応 文字コード表&lt;/b&gt;&lt;br&gt;&lt;a href=&quot;http://ash.jp/code/unitbl1.htm&quot; target=&quot;_blank&quot;&gt;http://ash.jp/code/unitbl1.htm&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://ash.jp/code/unitbl21.htm&quot; target=&quot;_blank&quot;&gt;http://ash.jp/code/unitbl21.htm&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;動作確認用にまずUTF-8の文字コードを表示するプログラムを作成します。&lt;/p&gt;&lt;p&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;use&amp;nbsp;strict;&lt;br&gt;use&amp;nbsp;warnings;&lt;br&gt;use&amp;nbsp;Encode;&lt;br&gt;&lt;br&gt;my&amp;nbsp;$hanAlnum&amp;nbsp;=&amp;nbsp;&amp;quot;ABCDE12345abcde&amp;quot;;&lt;br&gt;my&amp;nbsp;$zenAlnum&amp;nbsp;=&amp;nbsp;&amp;quot;ＡＢＣＤＥ１２３４５ａｂｃｄｅ&amp;quot;;&lt;br&gt;my&amp;nbsp;$hanKana&amp;nbsp;=&amp;nbsp;&amp;quot;ｱｲｳｴｵ&amp;quot;;&lt;br&gt;my&amp;nbsp;$zenKana&amp;nbsp;=&amp;nbsp;&amp;quot;アイウエオ&amp;quot;;&lt;br&gt;&lt;br&gt;print_charcode($hanAlnum);&lt;br&gt;print&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;print_charcode($zenAlnum);&lt;br&gt;print&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;print_charcode($hanKana);&lt;br&gt;print&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;print_charcode($zenKana);&lt;br&gt;print&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;#&amp;nbsp;UTF-8でエンコードされた文字列の文字コードを表示する&lt;br&gt;sub&amp;nbsp;print_charcode&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;($src)&amp;nbsp;=&amp;nbsp;@_;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$srclen&amp;nbsp;=&amp;nbsp;length($src);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$pos&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;($pos&amp;nbsp;&amp;lt;&amp;nbsp;$srclen)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code&amp;nbsp;=&amp;nbsp;ord&amp;nbsp;substr($src,&amp;nbsp;$pos,&amp;nbsp;1);&amp;nbsp;#&amp;nbsp;先頭のASCIIコード値を取得&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$bytelen&amp;nbsp;=&amp;nbsp;_bytesize($code);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$srcchar&amp;nbsp;=&amp;nbsp;substr($src,&amp;nbsp;$pos,&amp;nbsp;$bytelen);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$codestr&amp;nbsp;=&amp;nbsp;sprintf(&amp;quot;%2.2X&amp;nbsp;&amp;quot;,&amp;nbsp;$code);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($bytelen&amp;nbsp;&amp;gt;&amp;nbsp;1)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$times&amp;nbsp;=&amp;nbsp;$bytelen&amp;nbsp;-&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;my&amp;nbsp;$i&amp;nbsp;(1&amp;nbsp;..&amp;nbsp;$times)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$charcode&amp;nbsp;=&amp;nbsp;ord&amp;nbsp;substr($src,&amp;nbsp;$pos&amp;nbsp;+&amp;nbsp;$i,&amp;nbsp;1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$codestr&amp;nbsp;.=&amp;nbsp;sprintf(&amp;quot;%2.2X&amp;nbsp;&amp;quot;,&amp;nbsp;$charcode);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Windowsで表示するのでcp932（シフトJIS）に変換&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Encode::from_to($srcchar,&amp;nbsp;'utf8',&amp;nbsp;'cp932');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print&amp;nbsp;&amp;quot;$srcchar&amp;nbsp;:&amp;nbsp;$codestr\n&amp;quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$pos&amp;nbsp;+=&amp;nbsp;$bytelen;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;#&amp;nbsp;文字のバイト長を求める&lt;br&gt;sub&amp;nbsp;_bytesize&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code&amp;nbsp;=&amp;nbsp;shift;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$size&amp;nbsp;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code)&amp;nbsp;{&amp;nbsp;#&amp;nbsp;1バイト文字以外&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;my&amp;nbsp;$i&amp;nbsp;(2&amp;nbsp;..&amp;nbsp;8)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$size++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;last&amp;nbsp;if&amp;nbsp;(!(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$size;&lt;br&gt;}&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4873113148/aaaaaaee-22/ref=nosim&quot;&gt;Perl Hacks ―プロが教えるテクニック &amp; ツール101選&lt;/a&gt;&lt;br /&gt;&lt;small&gt;オライリー・ジャパン  著者：chromatic,Damian Conway,Curtis &quot;Ovid&quot; Poe  &lt;font color=&quot;#66ccff&quot;&gt;&lt;/font&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4873113148/aaaaaaee-22/ref=nosim&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51aB9g91ENL.jpg&quot; border=&quot;0&quot; &gt;&lt;/a&gt;  &lt;br clear=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4873113148/aaaaaaee-22/ref=nosim&quot; target=&quot;_blank&quot;&gt;amazon.co.jpのカスタマーレビューを見る&lt;/a&gt;&lt;br /&gt;powered by &lt;a href=&quot;http://59bbs.org/amalink/&quot;&gt;amalink&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2248#link&quot; target=&quot;_blank&quot;&gt;Link(1)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2248#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2248#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=Perl&quot; title=&quot;Perl&quot;&gt;Perl&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%85%A8%E8%A7%92&quot; title=&quot;全角&quot;&gt;全角&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%8D%8A%E8%A7%92&quot; title=&quot;半角&quot;&gt;半角&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89&quot; title=&quot;文字コード&quot;&gt;文字コード&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E8%A1%A8%E7%A4%BA&quot; title=&quot;表示&quot;&gt;表示&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E6%97%A5%E6%9C%AC%E8%AA%9E&quot; title=&quot;日本語&quot;&gt;日本語&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2248</link>
    <pubDate>Mon, 17 Dec 2012 00:25:00 +0900</pubDate>
  </item>
  <item>
    <title>携帯端末に対応したつもり（閲覧、コメント投稿のみ）</title>
    <description>&lt;p&gt;&lt;a href=&quot;http://59log.com/&quot; target=&quot;_blank&quot;&gt;語句ログ&lt;/a&gt;を携帯端末からも閲覧、コメント投稿ができるようしました。&lt;br /&gt;&lt;br /&gt;ただし、エミュレーターでしか動作確認してないので、どんな携帯電話から見れるという保証はないです。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://59log.com/?act=list_mobile&quot;&gt;語句ログ 携帯版&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=1860#link&quot; target=&quot;_blank&quot;&gt;Link(2)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=1860#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=1860#comment&quot; target=&quot;_blank&quot;&gt;Comment(1)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E8%AA%9E%E5%8F%A5%E3%83%AD%E3%82%B0&quot; title=&quot;語句ログ&quot;&gt;語句ログ&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E6%90%BA%E5%B8%AF%E7%AB%AF%E6%9C%AB&quot; title=&quot;携帯端末&quot;&gt;携帯端末&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E8%AA%9E%E5%8F%A5%E3%83%AD%E3%82%B0&quot; title=&quot;語句ログ&quot;&gt;語句ログ&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=1860</link>
    <pubDate>Tue, 11 May 2010 10:00:33 +0900</pubDate>
  </item>
  <item>
    <title>「heteml（ヘテムル）」で59Trackerが動作するか調べてみました</title>
    <description>59Trackerが、paperboy&amp;co.のレンタルサーバー「heteml（ヘテムル）」でエラーになるという情報があったので、無料のお試しで借りてチェックしてみました。&lt;br /&gt;&lt;br /&gt;＞新規投稿、再構築、Ping設定 で、500 errorが表示されます。&lt;br /&gt;＞ブックマークで登録後にエラーが表示されるんですが、投稿自体は完了しています。&lt;br /&gt;＞サーバーはhetemlというところを利用しています。&lt;br /&gt;&lt;br /&gt;とりあえず、Perlのバージョンチェック。マニュアルには5.8.0と書いてあるけど、中身は5.8.5らしい。まあ、十分新しいといえるバージョンですね。&lt;br /&gt;&lt;br /&gt;59Tracker 3.2のリリース版をインストールして、CGI のパーミッションをheteml指定の700に変更。&lt;br /&gt;&lt;br /&gt;情報通り新規投稿、Ping設定で500 errorになることを確認。&lt;br /&gt;&lt;br /&gt;使えるモジュールの中に、SOAP-Liteがなかったので、以下の手順を実行。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://59log.com/59tracker/59Tracker3_1_spec.txt&quot; target=&quot;_balnk&quot;&gt;59Tracker3_1_spec.txt&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;SOAP-Liteがインストールされていない場合は、http://search.cpan.org/~byrne/SOAP-Lite-0.60a/ から、&lt;br /&gt;SOAP-Lite-0.60a.tar.gzををダウンロードし、任意のディレクトリで解凍します。解凍されたディレクトリ中の&lt;br /&gt;SOAP、 XMLRPCディレクトリをFTPソフトを使用して59bbsが動作するディレクトリにアップロード(転送モード：アスキー、&lt;br /&gt;無変換)します。&lt;/blockquote&gt;&lt;br /&gt;これで動くようです。ロリポップで挫折して以来、paperboy&amp;co.のサーバーはチェックしてませんでしたが、hetemlで動かせるということがわかったのはちょっとした収穫です。&lt;br /&gt;&lt;br /&gt;それはそうとhetemlはヘテムルって読むんですね。ずっと、ヘムテルだと勘違いしてました。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=1656#link&quot; target=&quot;_blank&quot;&gt;Link(2)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=1656#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=1656#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%AC%E3%83%B3%E3%82%BF%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC&quot; title=&quot;レンタルサーバー&quot;&gt;レンタルサーバー&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=heteml&quot; title=&quot;heteml&quot;&gt;heteml&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=59Tracker&quot; title=&quot;59Tracker&quot;&gt;59Tracker&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D&quot; title=&quot;動作確認&quot;&gt;動作確認&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=1656</link>
    <pubDate>Mon, 26 Oct 2009 14:58:54 +0900</pubDate>
  </item>
  <item>
    <title>デバッグを効率的に行なうための９の心得</title>
    <description>バグのないソフトウェアはない、というくらいソフトウェアにはバグがつきものですが、ソフトウェアの開発プロジェクトには期間や予算に上限があるため、バグの修正に手間取ると十分なテストを実施することができず、品質が低い状態でリリースされてしまうことになります。テストを円滑に進めソフトウェアの品質の高めていくためには、バグを迅速かつ正確にバグを修正していく必要があります。&lt;br /&gt;&lt;br /&gt;しかし、オブジェクト指向プログラミング（OOP）やデザインパターンなどプログラムの作り方についての解説書や記事はたくさんあるにも関わらず、「バグは本来あってはいけないもの、あるはずが無いもの」という意識があるためか、デバッグに関して語られている情報源はあまり多くありません。そのため、デバッグのテクニックについてはせいぜい「開発現&lt;br /&gt;場の先輩に教えてもらう」というのが実情です。&lt;br /&gt;&lt;br /&gt;知識を共有するために、私がこれまでのソフトウェア開発の経験から得た、デバッグを効率的に行なうための心得をいくつか挙げてみたいと思います。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. バグの原因は自分が作っているプログラムにある可能性が最も高い&lt;/strong&gt;&lt;br /&gt;ソフトウェアを構成する要素として、OS、開発ツールに付属するライブラリ、市販ライブラリ、プロジェクト内で作成されたライブラリなどがありますが、バグの原因は自分が作っているプログラムである可能性が最も高いと考えたほうがすばやくバグを見つけられます。なぜなら、今まさに開発が行なわれているプログラムこそが最もテストされていないプログラムだからです。問題の原因をマイクロソフトのせいにする前に自分のプログラムを調べましょう。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. テストの実施を妨げているバグを優先する&lt;/strong&gt;&lt;br /&gt;当然のことですが、テストができなければバグを見つけることができません。効率的にバグが発見できるように、めったに行なわれない操作によって発生するバグよりも、必ず行なわれる操作で発生するバグを優先的に修正していく必要があります。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. 問題を確実に再現できるようする&lt;/strong&gt;&lt;br /&gt;問題が発生する条件（操作手順、データなど）を必ず特定しなければなりません。これができないと動作確認は不可能ですので、修正したつもりが実は直ってなかったという事態にもなりかねません。この作業自体はソースコードがなくても可能なので、テスト担当者の協力を得られるのであれば、情報を交換しながらテスト担当者と開発担当者が並行して調査を進めるのが良いでしょう。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. 一度でも問題が発生した場合はバグがある可能が高いので必ず調査する&lt;/strong&gt;&lt;br /&gt;一度でも問題が発生した場合は、単にバグが発現する条件がわかっていないだけで、必ずどこかにバグがあります。開発作業中はいろいろプレッシャーがあるので難しい面もありますが、見つけた時点で調査しておいた方がいろんな面で良いでしょう。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. ソースコードを見ただけで正しい処理が行なわれていると判断しない&lt;/strong&gt;&lt;br /&gt;プログラムはプログラマが思っている通りに動くのではなくコンパイラが解釈した通りに動くものです。コンパイラについての知識が豊富なプログラマが犯しがち問題ですが、プログラマがコンパイラの仕様について誤解しているために生じるバグもよくあります。プログラマ自身は正しいと思っているためソースコードを見ただけではバグを発見することが困難ですがが、このようなバグは実際にプログラムを動かしてみることで簡単に原因を発見することがきます。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6. 想定外の操作や想定外のデータが使用されていないかチェックする&lt;/strong&gt;&lt;br /&gt;プログラムはプログラマが想定していなかった操作が行なわれたり、想定外のデータが入力されたりした場合は正しく動作しないことが多いものです。問題を発生させる操作やデータがプログラムで想定されているかチェックしてみましょう。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7. バグの原因となっているソースコードは必ず特定する&lt;/strong&gt;&lt;br /&gt;関係の無いところを直しても問題の現象が発生しなくなる場合もありますが、それでバグが無くなったわけではありません。そのような場合は、また別のところで別のかたちで問題が発生することになりかねません。バグは必ずソースコードレベルで原因を特定し確実に修正すべきです。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;8. できるだけ他の処理に影響を与えないようにソースコードを修正する&lt;/strong&gt;&lt;br /&gt;他の処理に影響を与えるような修正を行なった場合、これまで問題なく動いていた部分に新たなバグを埋め込んでしまう可能性が高いものです。別の問題を引き起こさないように、影響範囲に注意してソースコードを修正します。しかし、単なるコーディング上の間違いであればプログラムの修正は比較的簡単で他の処理に影響を与えることは少ないのすが、設計に問題がある場合は他の部分の影響を与えないようにバグ修正を行なうのが難しい場合があります。そのような場合は、本質的な問題の解決にはならないとしても、影響範囲を限定するために暫定的な対処を行なった方が良いでしょう。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;9. ソースコードを修正した場合は必ずテストする&lt;/strong&gt;&lt;br /&gt;たとえ簡単な修正であっても間違った修正を行なう可能性は常にあります。また、修正が思わぬところに影響を与えることもあります。当たり前ですが、ソースコードを修正した場合は必ずテストを行ないましょう。テスト作業を手を抜くよりも、テストを行なった方がトータル見れば開発者自身にとっても負担が少ないはずです。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=1067#link&quot; target=&quot;_blank&quot;&gt;Link(3)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=1067#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=1067#comment&quot; target=&quot;_blank&quot;&gt;Comment(1)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&quot; title=&quot;プログラミング&quot;&gt;プログラミング&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%87%E3%83%90%E3%83%83%E3%82%B0&quot; title=&quot;デバッグ&quot;&gt;デバッグ&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%86%E3%82%B9%E3%83%88&quot; title=&quot;テスト&quot;&gt;テスト&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=1067</link>
    <pubDate>Mon, 10 Sep 2007 05:49:45 +0900</pubDate>
  </item>

 </channel>
</rss>
