Apex Limits クラスで実行ガバナ制限取得

#1.System.OrgLimits クラスについて
SOAP API 要求、Bulk API 要求、ストリーミング API の制限など、Saleforce 組織のすべての OrgLimit インスタンスのリストまたは対応付けを提供するメソッドが含まれます。
詳細は **[Apex 開発者ガイドの OrgLimits クラス](https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_methods_system_limits.htm)**をご参照ください。

#2.実装例（LimitMetaData）
```java
public class LimitMetaData {
    public LimitItem aggregateQueries		{get; private set;}
    public LimitItem asyncCalls				{get; private set;}
    public LimitItem callouts				{get; private set;}
    public LimitItem cpuTime				{get; private set;}
    public LimitItem dmlRows				{get; private set;}
    public LimitItem dmlStatements			{get; private set;}
    public LimitItem emailInvocations		{get; private set;}
    public LimitItem futureCalls			{get; private set;}
    public LimitItem heapSize				{get; private set;}
    public LimitItem mobilePushApexCalls	{get; private set;}
    public LimitItem queries				{get; private set;}
    public LimitItem queryLocatorRows		{get; private set;}
    public LimitItem queryRows				{get; private set;}
    public LimitItem queueableJobs			{get; private set;}
    public LimitItem soslQueries			{get; private set;}

    public LimitMetaData() {
        this.aggregateQueries    = new LimitItem('AggregateQueries', Limits.getLimitAggregateQueries(), Limits.getAggregateQueries());
        this.asyncCalls          = new LimitItem('AsyncCalls', Limits.getLimitAsyncCalls(), Limits.getAsyncCalls());
        this.callouts            = new LimitItem('Callouts', Limits.getLimitCallouts(), Limits.getCallouts());
        this.cpuTime             = new LimitItem('CPUTime', Limits.getLimitCPUTime(), Limits.getCPUTime());
        this.dmlRows             = new LimitItem('DmlRows', Limits.getLimitDmlRows(), Limits.getDmlRows());
        this.dmlStatements       = new LimitItem('DmlStatements', Limits.getLimitDmlStatements(), Limits.getDmlStatements());
        this.emailInvocations    = new LimitItem('EmailInvocations', Limits.getLimitEmailInvocations(), Limits.getEmailInvocations());
        this.futureCalls         = new LimitItem('FutureCalls', Limits.getLimitFutureCalls(), Limits.getFutureCalls());
        this.heapSize            = new LimitItem('HeapSize', Limits.getLimitHeapSize(), Limits.getHeapSize());
        this.mobilePushApexCalls = new LimitItem('MobilePushApexCalls', Limits.getLimitMobilePushApexCalls(), Limits.getMobilePushApexCalls());
        this.queries             = new LimitItem('Queries', Limits.getLimitQueries(), Limits.getQueries());
        this.queryLocatorRows    = new LimitItem('QueryLocatorRows', Limits.getLimitQueryLocatorRows(), Limits.getQueryLocatorRows());
        this.queryRows           = new LimitItem('QueryRows', Limits.getLimitQueryRows(), Limits.getQueryRows());
        this.queueableJobs       = new LimitItem('QueueableJobs', Limits.getLimitQueueableJobs(), Limits.getQueueableJobs());
        this.soslQueries         = new LimitItem('SoslQueries', Limits.getLimitSoslQueries(), Limits.getSoslQueries());
    }

    public class LimitItem {
        public String name 			{get; private set;}
        public Integer limitValue 	{get; private set;}
        public Integer usedValue 	{get; private set;}

        public LimitItem(String name, Integer limitValue, Integer usedValue){
            this.name 		= name;
            this.limitValue = limitValue;
            this.usedValue 	= usedValue;
        }
    }
}
```