JavaScriptでセッションストレージ取得!getItem()メソッド解説

投稿日 2025年02月07日   更新日 2025年02月07日

JavaScriptでセッションストレージからデータを取得する際に発生する「Uncaught TypeError: Cannot read properties of null (reading 'getItem')」というエラーについて、原因と解決方法を詳しく解説します。

エラーの概要

このエラーは主に以下のような場合に発生します:
// エラーが発生するコード例
const data = sessionStorage.getItem('user');
エラーメッセージ:
Uncaught TypeError: Cannot read properties of null (reading 'getItem')

主な原因

1. ブラウザがセッションストレージをサポートしていない
2. プライベートブラウジングモードでの実行
3. セッションストレージへのアクセスが制限されている

解決方法

1. 存在確認を行う

最も確実な解決方法は、セッションストレージの存在確認を行ってからgetItem()を実行することです。
// 推奨される実装方法
if (typeof sessionStorage !== 'undefined') {
    const data = sessionStorage.getItem('user');
    console.log(data);
} else {
    console.log('セッションストレージが利用できません');
}

2. try-catch文を使用する

エラーをハンドリングする方法としては、try-catch文の使用も効果的です。
try {
    const data = sessionStorage.getItem('user');
    console.log(data);
} catch (error) {
    console.log('セッションストレージへのアクセスに失敗しました');
}

3. 安全なヘルパー関数の作成

より堅牢な実装として、ヘルパー関数を作成する方法があります。
function getSessionStorageItem(key) {
    try {
        return sessionStorage.getItem(key);
    } catch (error) {
        return null;
    }
}

// 使用例
const userData = getSessionStorageItem('user');

実践的な使用例

セッションストレージを安全に使用する完全な実装例を示します。
class StorageManager {
    static getItem(key) {
        if (typeof sessionStorage === 'undefined') {
            return null;
        }
        
        try {
            return sessionStorage.getItem(key);
        } catch (error) {
            console.error('ストレージアクセスエラー:', error);
            return null;
        }
    }
}

// 使用例
const userInfo = StorageManager.getItem('userInfo');
if (userInfo) {
    console.log('ユーザー情報:', userInfo);
} else {
    console.log('ユーザー情報が見つかりません');
}

エラー防止のベストプラクティス

1. 常にセッションストレージの存在確認を行う
2. エラーハンドリングを適切に実装する
3. フォールバック機能を用意する
4. 型チェックを行う

まとめ

セッションストレージのgetItem()メソッドを使用する際は、以下の点に注意が必要です:
  • 必ず存在確認を行う
  • エラーハンドリングを実装する
  • 適切なフォールバック処理を用意する
これらの対策を実装することで、安全かつ堅牢なセッションストレージの利用が可能になります。
セッションストレージは一時的なデータ保存に便利な機能ですが、適切なエラーハンドリングなしでは予期せぬエラーの原因となる可能性があります。本記事で紹介した方法を参考に、安全な実装を心がけましょう。
Resumy AI監修者
監修者: RESUMY.AI編集部

ヨーロッパのテックハブであるロンドンにて、シニアデベロッパーとしてチームを率いた後、オンライン教育プラットフォームUdemyでモダン技術に関する講義を配信する「Daiz Academy」を設立。現在はAIテクノロジー企業 Chott, Inc.を運営しています。

監修者: RESUMY.AI編集部
Resumy AI監修者

ヨーロッパのテックハブであるロンドンにて、シニアデベロッパーとしてチームを率いた後、オンライン教育プラットフォームUdemyでモダン技術に関する講義を配信する「Daiz Academy」を設立。現在はAIテクノロジー企業 Chott, Inc.を運営しています。

AI職務経歴書作成サービス RESUMY.AIAI職務経歴書作成サービス RESUMY.AI
60秒で完了