投稿

旅行・ツアー・宿泊!一休.comからホテルの口コミをスクレイピング

イメージ
  一休.comとは? 一休.comホテル・旅館の宿泊予約のWebサービスです。日本国内約4,400の厳選されたホテル・旅館を「タイムセール」や「一休限定」など充実のプランでお得に予約できます。 ラグジュアリーホテル・高級旅館の予約、厳選されたレストランの予約を通じて「上質なサービス」を提供いたします。一休.comに掲載しているホテル、旅館、レストラン、スパは一休.com独自の基準をクリアした厳選された施設となっております。大切な人と過ごす特別な時間や、ご家族との愉しい時間、気の合う仲間同士でのちょっと贅沢な楽しみ、そして快適に過ごしたい出張の時など、さまざまなシーンで安心してご利用いただけます。 スクレイピングツールの概要 ScrapeStorm とは、強い機能を持つ、プログラミングが必要なく、使いやすい人工知能 Webスクレイピングツール です。違う基盤のユーザーに二つの スクレイピング モードを提供し、1-Clickで99%のWebスクレイピングを満たします。 ScrapeStorm により、大量のWebデータを素早く正確的に取得できます。手動で データ抽出 が直面するさまざまな問題を完全に解決し、 情報取得 のコストを削減し、作業効率を向上させます。 抽出されたデータをご覧ください。 1.タスクを新規作成する (1)URLをコピーする 今回はある人気ホテルの口コミ一覧ページから口コミを収得し、そのスクレイピング方法を紹介します。まず、URLをコピーしてください。 (2)スマートモードタスクを新規作成する ScrapeStormのホームページ画面にスマートモードタスクを新規作成します。また、持っているタスクをインポートすることもできます。 詳細には下記のチュートリアルをご参照ください。 スマートモードタスクの新規作成方法 2.タスクを構成する (1)自動識別 ScrapeStormは自動的にリスト要素とページボタンを識別できます。偶に誤差があれば、手動で選択してください。下記のチュートリアルも参照してください。 ページ分けの設定方法 (2)フィールドの追加と編集 「フィールドを追加」ボタンをクリックして、画面に必要な要素を選択、データが自動的に抽出されます。また、必要に応じてフィールドの名前の変更または削除、結合できます。 フィールドの...

なぜ Go は、いまだに Python ほど普及していないのか?

イメージ
  結論から言えば、 Python は「万能なツールボックス」、Go は「高性能バックエンドに特化した手術用メス」 このエコシステムの“広さ”の違いが、一般的な接触頻度と普及度を大きく分けています。 私は Python を12年以上使ってきた開発者ですが、今回はあえて Python を持ち上げる話ではなく、 なぜ Go が大衆的な人気を得にくいのか という視点から考えてみます。 TIOBE ランキングが示す、言語の「定着」の難しさ 1990年を境に見てみると、 TIOBEランキングのトップ10に入り、かつ長期的に定着した言語は Java だけ と言っても過言ではありません。 Java がなぜ成功したかについては意見が分かれますが、少なくとも現在の Java は 圧倒的な開発者人口 膨大なサードパーティライブラリ を抱えており、「Java を置き換える」という発想自体が現実的ではありません。 一方で、トップ10に一時的に入ったものの定着できなかった言語も数多く存在します。 Ruby などがその代表例です。 これらの言語に共通するのは、 当時は先進的な機能を持っていたが、それ自体が高い参入障壁にはならなかった という点です。 より普及している言語が「ライブラリ」で同等の機能を実現できるようになると、 言語固有の優位性は急速に薄れていきます。 Perl が示す「言語組み込み機能」の寿命 Perl は、正規表現を言語機能として強力に統合したことで一時代を築きました。 しかしその後、正規表現はライブラリとして多くの言語に取り込まれ、Perl の優位性は失われていきます。 現代において、 新人に Perl を勧める人はほとんどいない でしょう。 本当に重要なのは「何ができるか」 プログラミング言語の価値は、 どれだけ多くのことを“すぐに”実現できるか で決まります。 つまり、 サードパーティライブラリの量 = 言語の実用範囲 歴史の長い言語ほど、多数のライブラリを通じて新しい分野に適応し続けてきました。 特に C 言語系のライブラリは、OS レベルの API を含め、今なお圧倒的な存在感を持っています。 新しい言語を設計する際、 既存の C ライブラリをいかに素早く利用できるか は極めて重要です。 純粋性を重視し、C ライブラリとの互換性を拒否した言語は、 初期ユーザー...

なぜ基幹システムはJavaなのか|日本のIT文化から考える

イメージ
  日本の業務システム開発において、Javaは長年にわたり中核的な役割を担ってきました。 Web技術やクラウドの進化が進む中でも、多くの企業や自治体システムでは、依然としてJavaが主流言語として使われています。その理由は単なる慣習ではなく、日本のIT環境や業務特性と深く関係しています。 まず大きな要因は、 長期運用を前提としたシステム文化 です。 日本の業務システムは、10年、20年と使い続けられることが珍しくありません。Javaは後方互換性が高く、JVMという安定した実行基盤を持つため、OSやハードウェアが変わっても動作し続けやすいという強みがあります。これは、頻繁な全面刷新を避けたい日本企業にとって非常に重要です。 次に、 人材の豊富さと引き継ぎのしやすさ が挙げられます。 SIerを中心とした日本の開発現場では、Javaエンジニアの層が厚く、設計書文化やレビュー体制とも相性が良い言語とされています。担当者が変わってもコードを理解しやすく、チーム開発や保守運用に向いている点は、組織重視の日本企業に適しています。 また、 業務システム向けの成熟したエコシステム も無視できません。 Spring Frameworkをはじめとする豊富なフレームワーク、認証・トランザクション管理・バッチ処理など、基幹系に必要な機能が長年磨かれてきました。金融、製造、流通、公共分野など、ミッションクリティカルな領域での実績が信頼につながっています。 さらに、日本では「安定して動き続けること」が新しさ以上に評価される傾向があります。 Javaは派手な進化は少ないものの、仕様変更が慎重で、予測可能性が高い点が評価されています。この“堅実さ”こそが、日本の業務システム文化に合致していると言えるでしょう。 もちろん、すべてのシステムにJavaが最適というわけではありません。 しかし、 長期運用・大規模開発・組織的な保守 を前提とする日本の業務システムにおいて、Javaが今も選ばれ続けているのは、極めて合理的な結果だと言えます。

AIブームに流されないための、大規模モデル技術の正しい学び方

イメージ
  一般的なプログラマーとして、AI分野における競争力を高めるためには、大規模言語モデルをはじめとする関連技術を学ぶことが非常に重要です。以下では、主要なAI大規模モデル関連技術の分野と、それらを通じてどのようにスキルやキャリアの可能性を広げていけるかを紹介します。 1. 深層学習の基礎 まずは、深層学習の基礎知識を身につける必要があります。深層学習は現代AI技術の中核を成す存在であり、人間の脳神経回路を模したニューラルネットワークによって複雑なデータパターンを処理します。 学習内容としては、全結合層、畳み込み層、再帰型層などの基本的なネットワーク構造、損失関数の考え方、勾配降下法およびその改良アルゴリズムなどが挙げられます。Pythonは、TensorFlowやPyTorchといった豊富なライブラリが揃っているため、日本国内でもAI学習の主要言語として広く利用されています。 2. 自然言語処理(NLP) 音声アシスタントや自動翻訳サービスの普及により、自然言語処理技術の重要性は年々高まっています。プログラマーとしては、まず形態素解析、品詞タグ付け、固有表現抽出などのテキスト前処理から学ぶとよいでしょう。 さらに、Transformerアーキテクチャを基盤とするBERTやGPTシリーズなどのモデルは、日本語処理においても大きな成果を上げています。チャットボットや感情分析ツールを実際に開発することで、理論と実践の両面からスキルを磨くことができます。 3. コンピュータビジョン(CV) コンピュータビジョンは、画像や動画を「理解」する技術分野であり、物体検出、画像分類、顔認識などが代表的な応用例です。OpenCVなどのライブラリを活用すれば、比較的スムーズに基礎を習得できます。 さらに発展的な内容として、GANによる画像生成やスタイル変換といった分野にも挑戦できます。個人開発やオープンソースプロジェクトへの参加、日本企業で需要の高い顔認証システムの試作などは、理解を深める良い実践機会になります。 4. 強化学習 強化学習は、エージェントが環境との相互作用を通じて報酬を最大化する行動を学習する手法です。AlphaGoの成功は、この分野の可能性を世界に示しました。 マルコフ決定過程(MDP)やQ学習といった基本概念を理解し、RLlibなどのフレームワークを用いてアル...

JavaとC言語の性能差を理論と実測で徹底比較

イメージ
  コンピュータプログラミングの分野において、 Java  と  C言語  はいずれも極めて重要なプログラミング言語である。 Javaは、その クロスプラットフォーム性 、 自動メモリ管理 、そして 豊富なクラスライブラリ によって多くの開発者に支持されている。一方、C言語は 高い実行効率 と 低レイヤへの直接的な制御能力 を武器に、システム開発や組み込み分野などで重要な地位を占めている。 本稿では、理論面と実践面の両方から、JavaとC言語の代表的な利用シーンにおける性能を比較・分析する。 一、理論的観点から見た性能差 1. コンパイルおよび実行方式 C言語 : コンパイル型言語であり、コンパイラによってソースコードが直接機械語へ変換される。そのため実行効率が高く、実行時に仮想マシンなどの追加環境を必要としない。 Java : 「コンパイル+インタプリタ」というハイブリッド方式を採用している。Javaのソースコードはまずバイトコードにコンパイルされ、実行時にJava仮想マシン(JVM)によって解釈・実行される。ただし、近年のJVMはJIT(Just-In-Time)コンパイル技術を備えており、頻繁に実行されるコードを実行時に機械語へ変換することで、性能を大きく向上させている。 2. メモリ管理 C言語 : 開発者が malloc や free を用いてメモリを手動で管理する必要がある。柔軟性は高いが、メモリリークやダングリングポインタなどの問題が発生しやすい。 Java : 自動ガベージコレクション(GC)機構を備えており、不要になったオブジェクトはJVMが自動的に回収する。開発の負担は軽減されるが、GC処理自体が一定の性能オーバーヘッドを生む可能性がある。 3. データ型とメモリ使用量 C言語 : データ型のサイズはプラットフォームに依存する。たとえば int 型は32ビット環境では通常4バイト、64ビット環境では8バイトになる場合もあり、メモリアドレスを直接操作できる。 Java : データ型のサイズは固定されており、int は常に4バイトである。また、Javaのオブジェクトはヒープ領域に格納され、オブジェクトヘッダ分の追加メモリを消費する。 二、典型的なシーンにおける性能比較実験 JavaとC言語の実際の性能差をより直感...